Installation
There are two ways, and they don't replace each other.
| the app | docker compose | |
|---|---|---|
| what it is | a single binary (server + web UI), with a window if you want one | a development setup with hot-reload |
| what the machine needs | nothing beyond an installed Claude Code | Docker with Compose |
| settings | config.json in the app directory, edited in the window | .env next to docker-compose.yml |
| who it is for | "install it and use it" | "I edit Clauder's own code" |
A requirement for both
Claude Code must already be set up on this machine. Clauder authenticates with its OAuth token from ~/.claude and runs that same CLI. Without a logged-in Claude Code the session list will show up, but a chat won't start.
The app
Prebuilt binaries live on the releases page:
| file | what it is |
|---|---|
clauder-desktop-<version>-windows-x64.exe | Windows: the app with a window — tray, notifications, autostart. The server is inside. Nothing to install: it is a single file you run as is |
clauder-desktop-<version>-macos-arm64.dmg | the same for a Mac on Apple Silicon. Not every release has it — the image is built on a separate machine, so take it from the latest release that does |
clauder-<version>.apk | Android — a client that talks to the server over the network |
clauder-runtime-<version>.apk | Android — a companion to the client: the server and Claude Code on the phone itself. Experimental, Android 17 and newer only |
clauder-<version>.vsix | a VS Code extension: the chat as an editor panel, connecting to a Clauder that is already running |
clauder-cli-<version>-windows-x64.exe, clauder-cli-<version>-macos-arm64.tar.gz | the console clauder: chat from a terminal (clauder "text", clauder chat). Tiny; it finds the running Clauder itself and starts it in the tray if it isn't running. On Windows put it next to the app as clauder.exe |
There are no prebuilt Linux builds, no builds for Intel Macs and no windowless server in the releases — those are built from source in one command.
On a Mac the image opens as usual: drag Clauder into Applications. The app is not notarized, so on first launch macOS may say it is damaged or comes from an unidentified developer. Clear the quarantine and open it again:
xattr -dr com.apple.quarantine /Applications/Clauder.appThe console clauder on a Mac comes as an archive; clear its quarantine before the first run:
tar -xzf ~/Downloads/clauder-cli-*-macos-arm64.tar.gz -C /usr/local/bin
xattr -d com.apple.quarantine /usr/local/bin/clauderRun while still quarantined, it silently hangs: macOS waits for an answer in a verification dialog, and until that is closed neither this file nor a new one at the same path will start.
The app shows its access key and address itself — in the settings, on the Connection tab.
The windowless server: running it, and the flags
This is for a server built from source — the windowed app has no such flags, the same things are set in its settings.
clauder # by default listens on the loopback only, port 4221
clauder --host 0.0.0.0 # opening it to the phone is a deliberate act
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 loginA chat right in the terminal
The same file is also a console client: it does not bring up a second server but talks to the one already running, so the chat shows up in the browser and on the phone as well.
clauder chat # a chat in the terminal: you type a line, the agent answers
clauder send "fix the tests" # one message, with its answer
clauder -p "what's in the logs?" # the same for scripts
clauder sessions # the latest chats
clauder env # where the server is, whether the key is there, what the environment isCommands of your own are kept in files and show up in every client at once — how that works is in clauder help.
Next — First run.
docker compose
git clone https://github.com/varyen/clauder.git && cd clauder
cp .env.example .envFill in at least two lines in .env:
| Variable | What it is |
|---|---|
API_KEY | the access key — the only way in. Generate one with openssl rand -hex 32 |
CLAUDE_HOME | the path to your ~/.claude on the host (/root/.claude by default) |
Then:
docker compose up -d- The web interface — http://localhost:4240
- The API health check — http://localhost:4221/api/health
The first build takes a couple of minutes: the containers install dependencies on start. If something didn't come up — docker logs clauder-api --since 5m.
An important detail about mounting
WORKSPACE_ROOT (/var/www by default) is passed into the container at the same path as on the host. Otherwise Claude Code generates a different directory slug and the chat's sessions drift apart from the host ones — the list will show two halves of one project.
The ~/.claude directory is mounted into api for writing, and that is not sloppiness: the Agent SDK writes sessions there and refreshes the OAuth token.
Building it yourself
From a clean clone, in one command:
git clone https://github.com/varyen/clauder.git
cd clauder
./scripts/build-local.sh --check # what this machine is missing
./scripts/build-local.sh # build everything for your own systemWhat is ready to install ends up in the releases folder at the project root; everything intermediate stays in api/desktop/out next to it.
The shell has no cross-compilation — Windows needs MSVC with WebView2, macOS its own SDK and hdiutil — so each system builds its own:
| system | what you get |
|---|---|
| Linux | the server, a .deb of the server, a .deb of the windowed app |
| macOS | the server for arm64 and x64, their .dmgs, a .dmg of the app for both architectures |
| Windows | clauder-server-…exe, clauder-desktop-…exe |
What to install beforehand: Node 20+, bun and — for the windowed app — Rust with cargo install tauri-cli --version '^2'. On Linux you also need the webview headers (libwebkit2gtk-4.1-dev, libayatana-appindicator3-dev, librsvg2-dev, patchelf), on macOS xcode-select --install. The script tells you about all of this itself, with the command to install it.
The first build takes five to ten minutes (Rust and Nuxt), later ones are noticeably faster. Useful flags: --server (server only), --shell (window only), --skip-web (don't rebuild the web UI).