CLI
crucible is both the daemon and a thin client over its REST API. crucible daemon runs the server (see the README and SECURITY.md); every other command talks to a running daemon.
Connecting
The client finds the daemon via --addr (or the CRUCIBLE_ADDR env var), default 127.0.0.1:7878:
crucible --addr 127.0.0.1:7878 sandbox ls
CRUCIBLE_ADDR=10.0.0.5:7878 crucible sandbox lsIf the daemon has API keys configured, pass one with --token (or the CRUCIBLE_TOKEN env var). A remote daemon is served over TLS; use --tls-skip-verify only against a self-signed cert you trust:
CRUCIBLE_TOKEN=crucible_... crucible --addr https://vps.example:7878 sandbox lsOutput
Human-readable tables by default; -o json on any command emits machine-readable JSON for scripts and agents:
crucible sandbox ls # aligned table
crucible sandbox ls -o json # JSON arrayCommands that create a resource print its id on success, so they compose in shell:
SBX=$(crucible sandbox create --profile python-3.12)The commands
| Page | Commands |
|---|---|
| Run and build | run, build |
| Sandbox lifecycle | stop, rm, shell, cp |
| Sandboxes and profiles | sandbox create/ls/inspect/exec/rm, profile ls |
| Snapshots and fork | snapshot create/ls/inspect/rm, fork |
| Apps | app create/update/ls/get/rm/logs/exec/shell |
| Daemon, tokens, and agents | daemon, daemon token, policy, mcp serve, version |
Exit codes
0: success1: a crucible-level error (bad flags, daemon unreachable, API error)- the guest command's exit code for
execandrunwhen the command itself exits non-zero