Runbook Runtimes
A runtime is the coding agent CLI that executes your runbook inside a Daytona sandbox. Pick one in the runbook's YAML frontmatter:
---
agent: claude-code # or: codex, gemini-cli, hermes
model: claude-sonnet-4-6
snapshot: python312-uv
---
Or pass it to the Chat Completions API under the jetty.agent field.
Pick a runtime
Use the agent that matches your model:
| Want to use… | Use this runtime | Page |
|---|---|---|
| Anthropic Claude (native, Bedrock, OpenRouter) | claude-code | Claude Code |
| OpenAI GPT (native or via OpenRouter) | codex | Codex |
| Google Gemini (AI Studio or Vertex) | gemini-cli | Gemini CLI |
| Anything else (DeepSeek, Zhipu, Mistral, Llama on Bedrock, multi-provider parity) | hermes | Hermes |
Provider support matrix
| Provider | claude-code | codex | gemini-cli | hermes |
|---|---|---|---|---|
| Anthropic | ✅ | ❌ | ❌ | ✅ |
| OpenAI | ❌ | ✅ | ❌ | ✅ |
| ❌ | ❌ | ✅ | ✅ | |
| AWS Bedrock | ✅ Anthropic-only | ❌ | ❌ | ✅ all catalog models |
| OpenRouter | ✅ | ✅ | ❌ | ✅ |
Collection environment
Each runtime reads provider keys from the collection's environment variables. Set them once per collection — every runbook run inherits them.
| Provider | Required env var | Optional |
|---|---|---|
| Anthropic | ANTHROPIC_API_KEY | — |
| OpenAI | OPENAI_API_KEY | OPENAI_BASE_URL |
GEMINI_API_KEY (or GOOGLE_API_KEY) | GOOGLE_GENAI_USE_VERTEXAI, GOOGLE_CLOUD_PROJECT, GOOGLE_CLOUD_LOCATION | |
| AWS Bedrock | AWS_BEARER_TOKEN_BEDROCK | AWS_REGION (default us-east-1) |
| OpenRouter | OPENROUTER_API_KEY | OPENROUTER_BASE_URL (corp gateway), OPENROUTER_HTTP_REFERER / OPENROUTER_X_TITLE (rankings attribution), OPENROUTER_PROVIDER_ORDER, OPENROUTER_ALLOW_FALLBACKS |
For full Bedrock setup (model-id formats, region prefixes), see the Bedrock step page.
How runtimes execute your runbook
- Sandbox creation. Jetty spins up a Daytona sandbox from the snapshot you specified (
python312-uvfor general use,prism-playwrightfor browser work). The agent CLI is pre-baked. - Env injection. The runner picks a provider based on which keys the collection has, then sets the env vars the CLI expects (e.g.
CLAUDE_CODE_USE_BEDROCK=1for claude-code on Bedrock). - Instruction passing. The runbook's full markdown body is passed to the CLI — usually as a
-q/--promptargument, except forgoosewhich uses-i FILEto avoid clap rejecting the---YAML frontmatter. - Streaming. Stdout/stderr are tailed in real time and parsed for tool calls, messages, and token usage. The output file lives at
/logs/agent/<runtime>.txtinside the sandbox and is uploaded to trajectory storage on completion. - Result collection. Anything the agent writes to
/app/results/is persisted asresults_fileson the trajectory. Ifresults_filesis empty, the trajectory is markedsuccess: falseregardless of the agent's exit code.
Output files (universal)
Every runbook step produces, on the trajectory:
step.outputs.success—trueonly if the agent exited 0 and wrote at least one file to/app/results/step.outputs.results_files— list of/app/results/*files persisted to storagestep.outputs.files— full artifact list (results + agent session/log files)step.outputs.usage— accumulated token usage and cost (parser depends on the runtime)step.outputs.agent,step.outputs.model— what actually ran
A run with success: false and an explicit error message points you at the agent log file for the upstream cause.