Skip to main content

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 runtimePage
Anthropic Claude (native, Bedrock, OpenRouter)claude-codeClaude Code
OpenAI GPT (native or via OpenRouter)codexCodex
Google Gemini (AI Studio or Vertex)gemini-cliGemini CLI
Anything else (DeepSeek, Zhipu, Mistral, Llama on Bedrock, multi-provider parity)hermesHermes

Provider support matrix

Providerclaude-codecodexgemini-clihermes
Anthropic
OpenAI
Google
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.

ProviderRequired env varOptional
AnthropicANTHROPIC_API_KEY
OpenAIOPENAI_API_KEYOPENAI_BASE_URL
GoogleGEMINI_API_KEY (or GOOGLE_API_KEY)GOOGLE_GENAI_USE_VERTEXAI, GOOGLE_CLOUD_PROJECT, GOOGLE_CLOUD_LOCATION
AWS BedrockAWS_BEARER_TOKEN_BEDROCKAWS_REGION (default us-east-1)
OpenRouterOPENROUTER_API_KEYOPENROUTER_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

  1. Sandbox creation. Jetty spins up a Daytona sandbox from the snapshot you specified (python312-uv for general use, prism-playwright for browser work). The agent CLI is pre-baked.
  2. 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=1 for claude-code on Bedrock).
  3. Instruction passing. The runbook's full markdown body is passed to the CLI — usually as a -q / --prompt argument, except for goose which uses -i FILE to avoid clap rejecting the --- YAML frontmatter.
  4. 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>.txt inside the sandbox and is uploaded to trajectory storage on completion.
  5. Result collection. Anything the agent writes to /app/results/ is persisted as results_files on the trajectory. If results_files is empty, the trajectory is marked success: false regardless of the agent's exit code.

Output files (universal)

Every runbook step produces, on the trajectory:

  • step.outputs.successtrue only 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 storage
  • step.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.