Run Claude Code in a sandbox of the ubuntu template, with an Anthropic API key, a Claude subscription, or the open models of Munito AI.
Claude Code (claude) is installed in the ubuntu template. Choose how it signs in, then run a task with claude -p.
Sign in
With an Anthropic API key
Put the key in the env of the sandbox:
{
"ANTHROPIC_API_KEY": "sk-ant-..."
}Claude Code bills the usage to that key. See authentication in the Claude Code docs.
With a Claude subscription
Sign in inside the sandbox, so that the sign-in never passes through the API:
- Connect over SSH and run
claude. - Type
/loginand choose your Claude account. Claude Code prints a link. - Open the link on any device, sign in with your Pro or Max plan, and paste the code back into the terminal.
Claude Code keeps the sign-in in the sandbox, and each later claude -p in the same sandbox uses it. A persistent sandbox keeps it across pauses. Claude Code then uses the usage limits of your plan.
Anthropic sets the limits of a plan for the usual work of one person, and it does not allow a third party to collect or store the tokens of a Claude account (legal and compliance). So do not put such a token in an API request, and use an API key to run many agents at the same time.
With the open models of Munito AI
{
"ANTHROPIC_BASE_URL": "https://api.munito.ai/inference",
"ANTHROPIC_AUTH_TOKEN": "munitoai_...",
"ANTHROPIC_MODEL": "zai-org/glm-5.3-flash[1m]",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "zai-org/glm-5.3-flash[1m]",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "zai-org/glm-5.3-flash[1m]",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "qwen/qwen3.8-27b"
}One Munito AI key with the Inference permission serves the sandboxes API and the models. Claude Code with open models explains each variable, the models and the regional hosts.
Run a task
curl -sS --fail-with-body "https://api.munito.ai/sandboxes/v1/sandboxes/$SANDBOX/exec" \
-H "Authorization: Bearer $MUNITO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"command": "cd /workspace && claude -p \"Write a Python script that prints the first 10 primes, and run it\" --allowedTools Bash Edit Write Read --output-format json", "timeout": 1800}'claude -pruns one task and exits.--output-format jsonreturns the result and thesession_id.--allowedTools Bash Edit Write Readlets Claude Code run commands and change files without asking. As root, Claude Code refuses--dangerously-skip-permissions, and--allowedToolsdoes the same work.- To follow the work while it runs, use
--output-format stream-json --verbosewith"stream": truein the command: each event of Claude Code comes as it happens. claude -p "..." --resume <session_id>continues a session in a later command.- A command runs for at most 30 minutes. For a longer task, run
nohup claude -p "..." --allowedTools Bash Edit Write Read > /workspace/claude.log 2>&1 &and read the log with later commands.
Use the terminal UI over SSH
Add your public key with SSH, connect with the command that GET /sandboxes/{sandbox_id}/ssh answers, and run claude. A shell starts in /workspace, with the variables of the sandbox. For a session that outlives your connection, install tmux (apt-get install -y tmux) and start Claude Code inside it.
Harnesses Preview
Run Claude Code, Codex and OpenCode in a sandbox of the ubuntu template, with the API key of their vendor, a subscription, or the open models of Munito AI.
Codex Preview
Run the Codex CLI in a sandbox of the ubuntu template, with an OpenAI API key, a ChatGPT plan, or the open models of Munito AI.