Quickstart — your first bridge in a few minutes¶
This walks you from nothing to a running claude bridge you can pick up from
claude.ai/code, on a single machine with no authentication (loopback only). For
LAN / remote access, add auth afterwards — see Networking.
Prerequisites¶
- Python 3.11+.
- The
claudeCLI on yourPATH, authenticated — either logged in viaclaude's interactive login or withANTHROPIC_API_KEYset in the environment (either satisfies the check). Clauster spawnsclaude— it doesn't vendor it — and a spawned bridge inherits that authentication. - A directory that holds your projects — each child directory becomes a card.
Install Claude Code and log in (a spawned bridge inherits this login):
curl -fsSL https://claude.ai/install.sh | bash # native installer (macOS/Linux/WSL), auto-updates
# auditable alternative: brew install --cask claude-code # (Windows/other: see the docs link above)
claude login # or: export ANTHROPIC_API_KEY=sk-ant-...
claude --version # confirm it's on PATH
clauster doctor (the Check your environment step) confirms claude is found and authenticated.
Install¶
Write a minimal config¶
The fastest path is the guided one: run clauster run with no config and
Clauster serves a one-page, loopback-only first-run setup at
http://127.0.0.1:7621 (override the port with CLAUSTER_SETUP_PORT). Enter
your projects folder, bind address, and a dashboard password; it writes a
clauster.yml with authentication enabled and starts up on it. Because it sets
a password, it's also the quickest way to a non-loopback (LAN) deployment —
but the wizard does not configure TLS, so before picking a LAN bind, plan to
serve over HTTPS (built-in TLS or a
reverse proxy); otherwise the dashboard password crosses your network in
plaintext.
Prefer to write the file by hand? The only required key is projects_root,
and on loopback no auth is needed:
Check your environment¶
doctor confirms claude is found and new enough, that you're logged in, and
that projects_root and the state dir are usable. Fix any ✗ (FAIL) before
continuing — the most common one is "claude not found" (it's not on PATH).
Also resolve any ! warnings such as "not logged in": these don't block the
server (doctor still exits 0), but a spawned bridge inherits your claude
login, so run a claude session first. (You can also fix a logged-out runtime
account later from the browser with the opt-in
login shepherd
panel — handy when the account expires after setup.)
Run it¶
Open http://127.0.0.1:7621. You'll see one card per child directory of
projects_root — including my-first-project.
Empty dashboard or a page that won't load?
- "No projects yet" means
projects_rootresolved to a directory with no child folders — create or clone one from the dashboard, or drop a directory underprojects_rootand refresh. Re-runclauster doctorto confirmprojects_rootpoints where you think. - The page won't load from another machine because, by default, Clauster
binds loopback (
127.0.0.1) and is reachable only from the host itself. A non-loopback bind (a LAN IP,0.0.0.0) is refused unless auth is enforced — that is deliberate. To go beyond loopback, add auth and follow Networking.
Start your first bridge¶
On the project card, click Run Claude here, choose In claude.ai /
Desktop (the bridge this quickstart walks through), pick a permission mode,
then click Run · <permission> (the button names the mode you picked).
- If the directory isn't trusted yet, Clauster shows a just-in-time trust confirm. Accepting writes the Claude workspace-trust flag for that directory before the bridge spawns; a trusted directory shows a green shield and starts with no prompt. (Trust is Claude's own safety gate — see Security.)
- The card moves to starting, then running once the bridge registers.
- The same popover offers an experimental Here in the browser option (only
when the hosted channel is enabled —
claustrum.enabled, default off). Those sessions are local live-view only and, unlike a bridge, are never attachable fromclaude.ai/code— see Architecture and Configuration.
First-ever spawn
Before the first spawn, Clauster marks remote control acknowledged in your
~/.claude.json so the detached bridge isn't stuck on Claude's one-time
"Enable Remote Control? (y/n)" prompt. This is claude.auto_enable_remote_control
(on by default).
Pick it up from anywhere¶
On the running card, use Open in Claude (or scan the QR code) to
attach the bridge from claude.ai/code or the Claude mobile app — no SSH session
required. Drive the session there; the live debug-log tail and resource metrics
stay visible on the card.
Stop / resume¶
- Stop ends the bridge.
- Resume brings a stopped bridge back. In the default Server Mode a
resume starts a fresh context; opt into the Interactive Session mode with
claude.launch_mode: pty, or recap the prior conversation withclaude.resume_recap. See the two bridge modes. Resume stays available across a clauster restart. One Server Mode bridge runs per project at a time, so a stopped card whose project already has a live one says so on the card, and its Resume does nothing — stop the live bridge first, or Forget the stopped card. A bridge started outside Clauster is only found on the click, so there the card stays silent and the resume is declined with a message instead. A live Interactive Session never blocks a resume; those aren't capped. - Restart is on a running card. It stops the bridge and starts it again with the
same project, mode and launch settings. Use it after a Claude Code update: a running
bridge keeps the old
claudebinary until it restarts, and the new process runs the version installed now. The card shows that version. What a restart loses depends on the mode: - A Server Mode bridge ends every live remote session on it, then reconnects in the same folder.
- An Interactive Session comes back in the same conversation (
--continue). - A Direct Session resumes the same conversation as a new process, so it gets a new card.
Clauster checks the claude binary and the permission ceiling before the stop. If
either check fails, the session keeps running and the card shows the error. Clauster
also checks that the project still exists and is trusted. If the start fails after the
stop, the card shows Stopped or Error with the error text. For example, the new
release can crash at start or ask for a new login. A second click while a restart runs
does nothing.
- Fork a past conversation — launching an Interactive Session, the
Conversation picker (under More options) lists the project's previous
conversations by their first prompt. Picking one forks it into the new
session (--resume --fork-session under the hood): the new session continues
from that conversation, and the original stays untouched. Transcripts written
by a dispatched subagent are left out of this picker — they are one internal
turn of a conversation rather than a conversation, so forking one would resume a
fragment without the parent's context. They remain visible in the read-only
Transcripts viewer, and a transcript clauster cannot positively identify as a
subagent's is always offered rather than hidden.
- To start fresh, Forget the stopped session (drops it from Recent) and
launch again with Run Claude here.
Next steps¶
- Expose it on your LAN / remotely — a non-loopback bind requires enforced
auth. Generate a hash with
clauster hash-passwordand follow Networking. - Run it as a service —
clauster install-service {systemd|launchd|windows}. - Run it in Docker — see Installation → Docker.
- Tune behaviour — the full Configuration reference.