Skip to content

Commit 478da5e

Browse files
cailmdaleyclaude
andcommitted
docs: deploying is always safe (local + remote), never a blocker
Restarting the daemon doesn't kill running jobs — tmux owns the worker, Shuttle only owns the watcher, and the daemon re-adopts the live sessions on boot. State this explicitly so it stops being framed as risky or gated behind "there are workers running"; the only cost is a brief API blip during restart. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019c8kgnzqFJY8hAApLCcqSj
1 parent 1ed8246 commit 478da5e

1 file changed

Lines changed: 11 additions & 0 deletions

File tree

AGENTS.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,17 @@ down" when it isn't:
164164
`~/.ssh/ssh_wrapper.sh` entirely — it's VS Code's remote helper, unrelated to
165165
Shuttle.
166166

167+
**Deploying is ALWAYS safe — local or remote — and is never a blocker.**
168+
Rebuilding and restarting the daemon (`make all`, cycling `:4000`, reloading the
169+
LaunchAgent, the respawn loop) does **not** kill running jobs: **tmux owns the
170+
worker process, Shuttle only owns the watcher** (the load-bearing invariant
171+
below). A restart cycles the watcher and rebinds the API; the `shuttle-<id>`
172+
tmux sessions keep running untouched and the daemon re-adopts them on boot. So
173+
deploy freely whenever there's a fix to ship — never hold back, gate it behind
174+
"there are workers running," or frame a deploy as risky. The only cost is the
175+
brief API/board blip during the ~1s (local) to ~2min (candide cold-walk)
176+
restart; in-flight work is unaffected.
177+
167178
**Deploying to remote hosts (candide, cineca):** push to GitHub first, then build on the host — don't copy the macOS escript, as BEAM bytecode format varies across OTP versions and the binary will crash on startup on a different host.
168179

169180
```bash

0 commit comments

Comments
 (0)