Coding agents
Run Claude Code or another agent inside a box with full permissions, or let the agent on your laptop drive boxes.
A coding agent works best when it can run anything: install packages, start servers, delete files. A box lets it do that without risk to your laptop. It is a real VM with its own kernel, and nothing on the host is visible from inside.
An agent inside a box
Claude Code comes with the base image, next to Node.js, Python, Docker and a headless Chrome with agent-browser, so the agent can build, run and click through what it makes. Keep your API key as a secret so every box has it, then make a box:
kvbox env set ANTHROPIC_API_KEY --secret # asks for the value, never shown again
kvbox new agent --size m
kvbox connect agentAnother agent (Codex, OpenCode, …) installs the usual way: the kvbox user has passwordless sudo. Inside, clone your repo and start the agent with full permissions (claude --dangerously-skip-permissions): the box is the boundary. Start it inside tmux (sudo apt install tmux) and it keeps working when you close your laptop; kvbox connect agent and tmux attach later pick the session up again.
When the agent builds something with a web UI, give the box an address to look at it: kvbox claim agent my-agent --port 3000 (Publish ports).
One box per task
Once a box has the agent, your repo and its dependencies, snapshot it. Each new task then starts from that state in under a second, in its own box:
kvbox snapshots new agent agent-ready
kvbox new --from agent-ready fix-login
kvbox new --from agent-ready add-billingThe boxes cannot reach each other unless you link them, so two agents never step on each other's files or ports. Remove a box when its work is merged: kvbox rm fix-login -y.
The agent on your laptop drives boxes
The other way around: your agent stays on your machine and uses boxes as its places to run things. Give it the kvbox skill:
npx skills add https://kvbox.sh/kvbox/SKILL.mdIt then makes boxes, runs commands with kvbox exec (whose exit code is the command's) and reads results with --json. See Agents.