Gap
Phase 7.1 (REST live_fork: true on POST /v1/sandboxes) and Phase 7.3 (Controller.spawn_sandboxes(live_fork=True) in Python/TS/MCP SDKs) shipped the spawn-time live-fork opt-in. The CLI did not get a matching flag.
This means:
- The doc comment on
forkd snapshot --live (added in Phase 7.2) tells users "the source must have been created with `--live-fork`," but that flag doesn't exist.
- A CLI-only workflow can't currently spawn a live-fork-capable source — you have to drop into the SDK or
curl REST to set live_fork: true.
Scope
Add --live-fork (bool flag) to:
forkd fork (spawns N children from a registered snapshot)
forkd from-image (Docker → rootfs → boot → register, then optionally spawn one)
forkd run (one-shot spawn)
For each, plumb the flag through to POST /v1/sandboxes body's live_fork: true (the daemon already accepts it).
Acceptance
Why follow-up not blocking
mode: \"live\" itself works today via SDK or REST — this is purely CLI ergonomics. Filed honestly in the v0.4 CHANGELOG entry rather than papered over.
Gap
Phase 7.1 (REST
live_fork: trueonPOST /v1/sandboxes) and Phase 7.3 (Controller.spawn_sandboxes(live_fork=True)in Python/TS/MCP SDKs) shipped the spawn-time live-fork opt-in. The CLI did not get a matching flag.This means:
forkd snapshot --live(added in Phase 7.2) tells users "the source must have been created with `--live-fork`," but that flag doesn't exist.curlREST to setlive_fork: true.Scope
Add
--live-fork(bool flag) to:forkd fork(spawns N children from a registered snapshot)forkd from-image(Docker → rootfs → boot → register, then optionally spawn one)forkd run(one-shot spawn)For each, plumb the flag through to
POST /v1/sandboxesbody'slive_fork: true(the daemon already accepts it).Acceptance
forkd fork --tag X -n 1 --live-forkspawns a live-fork-capable child;forkd snapshot --from-sandbox <id> --livethen succeeds against itdocs/VENDORED-FIRECRACKER.md)forkd snapshot --livedoc comment can drop the "source must have been created with--live-fork" caveat into being literally true on the CLIWhy follow-up not blocking
mode: \"live\"itself works today via SDK or REST — this is purely CLI ergonomics. Filed honestly in the v0.4 CHANGELOG entry rather than papered over.