One host. Many boxes. Each its own world.
Five layers make one box.
- 05PID 2 and below
Agent processes
The runner and every session, in private namespaces.
- 04/run/workbox
Run directory
Where runner.sock lives. The host token never does.
- 03/opt/workbox · read-only
Runtime
Node and wb, checksummed, mounted read-only.
- 02sandboxes/<id>/upper
Private overlay
The one writable layer, invisible to the host mount table.
- 01rootfs/<name> · read-only
Shared rootfs
Built once, shared read-only by every box.
Hard limits from the first instruction.
- 2GiB
- Memory
- 0swap
- Swap
- 2cores
- CPU
- 4,096pids
- Processes
Every state, on the record.
from PROVISIONING, BOOTSTRAPPING, READY, DRAINING or DELETING
REQUESTED — Stored, with a time and a reason.
Live health
- HEALTHY
Channel up, network in place.
- SUSPECT
Alive, not whole.
- UNKNOWN
Not yet observed.
- ABSENT
The cgroup is empty.
Every boot is verified.
Host
Says hello with the host token.
01runner.hello · role host + token
Runner
Checks its digest. One control peer.
Host
Consumes the nonce. A replay quarantines.
02boot nonce
Runner
Hands over the single-use nonce.
Host
Starts the proxy, slirp4netns and nftables.
03BOOTSTRAPPINGHost
Sends runner.go.
04runner.go
Runner
Runs its self-checks.
Host
Compares them with the launch.
05self-checks
Runner
Reports uid map, capabilities, seccomp.
Host
Match: READY. Mismatch: QUARANTINED.
06READY or QUARANTINEDHost
Polls cgroup health from then on.
07health poll
Nothing runs until the box proves who it is.
Output that outlives the connection.
Disconnect, reconnect, and pick up exactly where you left off.
8 MiB
ring spool
seq 13–40
Restart the daemon. The boxes stay up.
- attached
- Still running. Reconnected.
- suspect
- Alive, not whole.
- absent
- Gone. Never relaunched.
- quarantined
- Boot not proven.
# admin scope
$ curl -sS -X POST http://127.0.0.1:8790/v1/reconcile \
-H "Authorization: Bearer $WORKBOX_TOKEN"Everything in one place.
/var/lib/workbox
/sys/fs/cgroup/workbox/<id> · one cgroup per sandbox
sandboxes/<id>/
One sandbox
upper, work, merged, run, launch.log and host-token.
Eight packages. Zero build steps.
protocol
in every boxNDJSON framing and schemas.
core
The engine.
runner
in every boxThe in-box supervisor.
wb
in every boxThe agent’s command.
server
REST and WebSocket.
sdk
The JavaScript client.
mcp
The stdio MCP server.
cli
The operator CLI.
See what the agent sees.
One command to learn.