This walkthrough takes you from zero to your first Claude pane open in the satellite.
- A macOS machine to use as the station (Mac Studio or any always-on Mac). macOS 14 or later recommended.
- A macOS laptop to run the satellite app.
- Homebrew installed on both machines.
- Tailscale installed and on the same tailnet on both machines (required for Station mode; not needed for Local mode on a single machine).
- Go toolchain on the station (for building the daemon).
- Node.js + pnpm on the laptop (for building the satellite).
On the station, as the reck-connect user:
cd /Users/reck-connect/claude-code/reck-connect/ops
./install-station.shThis single command builds reck-stationd, installs the binary to /usr/local/bin/, drops a launchd plist, generates a random DAEMON_TOKEN stored at /etc/reck-stationd/token (mode 0600), bootstraps the service, and prints the Station URL + Daemon Token you will paste into the satellite.
For the full manual — including the dedicated reck-connect user creation, FileVault caveats, and binary-only redeploy workflow — see ../ops/README.md.
Local mode is the simplest way to start. The satellite spawns reck-stationd as a child process bound to 127.0.0.1:7315. No bearer token is required.
-
Build the daemon binary and install it where the satellite can find it:
cd . go build -o ~/.local/bin/reck-stationd ./daemon/cmd/reck-stationd
Alternatively run
ops/install-local.shif it exists, or install to/opt/homebrew/bin/reck-stationd.The satellite searches these paths in order (source:
satellite/main/daemon-spawn.ts:candidatePaths):$RECK_STATIONDCMD(env override)~/.local/bin/reck-stationd/opt/homebrew/bin/reck-stationd/usr/local/bin/reck-stationd~/go/bin/reck-stationd
-
Build the satellite app:
cd satellite && pnpm install && pnpm dist
The output is
satellite/release/mac-arm64/Reck Connect Satellite.app.Note:
pnpm devis broken — always usepnpm distand launch the built.app. See development.md. -
Launch
Reck Connect Satellite.app. On first launch you'll see the welcome flow — leave Local enabled (it's the default), and add a Station if you have one. You can run with just Local on a single Mac.
When you have a dedicated station Mac running reck-stationd:
- Open the satellite.
- Open File → Preferences… and enable the Station block.
- Enter the station URL printed by
install-station.sh(format:http://<tailnet-hostname>:7315). - Paste the
Daemon Tokenfrom the same output.
The satellite runs in hybrid mode — both local and station daemons are available at the same time, and each project's panes run on whichever host owns it.
To update the token later: File → Update Station Token….
To rotate the token on the station: edit ~/.config/reck/token, then:
launchctl kickstart -k gui/$(id -u)/eu.verwey.reck-stationdProjects are registered in ~/.config/reck/projects.toml on the station. You can add one in two ways:
Via the UI: press Cmd+N (or File → Add Project…) in the satellite. The dialog copies the folder to the station's managed root (/Users/reck-connect/projects/) via rsync and registers it.
Via projects.toml directly on the station:
$EDITOR ~/.config/reck/projects.tomlEach entry needs at minimum an id, name, and cwd. Example:
[[project]]
id = "my-project"
name = "My Project"
cwd = "/Users/reck-connect/projects/my-project"After editing projects.toml only (no plist changes), restart the daemon:
launchctl kickstart -k gui/$(id -u)/eu.verwey.reck-stationdops/install-satellite.sh installs FUSE-T + sshfs and registers a LaunchAgent (eu.verwey.reck-mount) that keeps ~/reck/projects/ mounted from the station's /Users/reck-connect/projects/ via Tailscale. This lets you browse files in Finder and run local tools against station code.
See ../ops/README.md §4 for the full steps.
Click a project in the left rail. The satellite requests a pane from the daemon:
GET /projects/:id— if the project has no live panes, the daemon auto-creates one usingdefault_panefromprojects.toml(defaults toclaude).- The terminal renders via xterm.js over a WebSocket at
ws://<station>:7315/ws/<project_id>/<pane_id>.
To create additional panes: Cmd+T (new pane), Cmd+D (split right), Cmd+Shift+D (split down). To close: Cmd+W.
Pane kinds: claude (Claude Code), shell (login shell), codex (Codex CLI).
- concepts/panes.md — pane lifecycle, kinds, stoplight
- concepts/modes.md — Local vs Station mode in detail
- concepts/projects.md — projects.toml structure and managed root
- architecture.md — full system architecture