Commands and flags
The app
clauder # listens on the loopback only, port 4221
clauder --host 0.0.0.0 # open access over the network
clauder --port 4300 # another port
clauder --print-config # where the settings and sessions are, and what the access key is
clauder --install-agent # bring the server up in the background at login--print-config is the first thing to run when something doesn't add up: it prints both the path to config.json and the session directories the server actually reads.
Docker
docker compose up -d # bring it up
docker compose up -d --build api # after editing api/Dockerfile
docker logs clauder-api --since 5m # api logs
curl http://localhost:4221/api/health # healthThe rebuild gotcha
docker compose build api builds the image, but the running container stays on the old layer until docker compose up -d api. Better to check by fact:
docker exec clauder-api sh -c 'command -v java gh curl'api and web run with hot-reload: changes in api/src and web/app are picked up without a rebuild. The api, however, comes back not immediately but 15 seconds after a successful build — otherwise every saved edit would kill live agent sessions.
Building
./scripts/build-local.sh --check # what this machine is missing
./scripts/build-local.sh # build everything for your own system
./scripts/build-desktop.sh # the server only, for the current platform
./scripts/build-desktop.sh all # windows + macos (arm64/x64) + linux
cd desktop && cargo tauri build # the windowed shell (your own OS only)
cd android && ./build.sh # a signed release APKFlags for build-local.sh: --server (server only), --shell (window only), --skip-web (don't rebuild the web UI).
Checks and releases
cd api && npx tsc --noEmit # typecheck the api
cd web && npx nuxt typecheck # typecheck the web UI
./scripts/release.sh [vX.Y.Z] # tag, APK, desktop, gh release
./scripts/detect-claude-homes.sh # find the ~/.claude profiles on the machine
./scripts/hostrun '<command>' # a shell on the host through the ssh bridgeComposer slash commands
These work in a chat, not in a shell:
| Command | What it does |
|---|---|
/model, /effort, /permissions, /ultracode, /workflows | change the live session's settings |
/context, /cost | show its state |
/btw | a side question in the same conversation |
/continue | "Continue" and send right away |
/agents, /chats, /files, /search | navigate the interface |
/login, /logout | sign in to Claude with an OAuth-link window, and sign out |
A line starting with ! doesn't go to the model at all: it is run by the shell in this chat's directory (!git status, !npm test), and the output lands in the feed.
An unknown name doesn't count as a command and goes out as a message — that is how the CLI's own commands (/compact, /init, your project ones) pass through.
Bot commands
/chats, /new, /where, /agents, /status, /stop, /app — see The Telegram bot.