Choose an agent runtime
Claude Code is the stable default. The fleet agents have run on Claude Code in production for a long time; it is what a new installation gets unless you ask for something else. pi and codex are experimental — pi works end to end for
triage,prioritize,code,fixandreview/retro; codex runs OpenAI models through the same secretless credential path but has no sub-agent roster yet, soreview/retroare best left on Claude Code there. Neither runtime has completed a fleet pilot. Unless you are taking part in one, keep the default.
This page explains what the choice means and where it is made. You do not select anything on this page — the selection happens in the next step. On GitHub, Configuring GitHub asks when you run fullsend github setup (press Enter for claude) or you pass --runtime. On GitLab, set runtime: in defaults.config, gitlab.config, or the repository entry's config in repos.yaml before running fullsend repos install (there is no install flag) — see Configuring GitLab.
Fullsend supports multiple agent runtimes. A runtime is the program that runs inside the sandbox and drives the model — it owns the tool-use loop, hook wiring, and transcript format. The runner (fullsend) owns everything outside: sandbox lifecycle, credentials, metrics, and the verdict.
Available runtimes
| Runtime | Status | Description | When to use |
|---|---|---|---|
claude | Stable (default) | Claude Code on Vertex AI | Every production deployment — mature, full sub-agent support for review/retro |
pi | Experimental (enablement phase) | Pi — Claude on Vertex by default; any provider pi supports by model name (e.g. Gemini on Vertex with the same credentials) | Opt-in pilots only; see Runtimes for known constraints |
codex | Experimental | Codex — OpenAI models through the same secretless credential path, or any Responses-capable model through an inference gateway (gateway/<model>) | Opt-in pilots only, when you want GPT specifically. No sub-agent roster, so keeping review/retro on Claude Code is recommended; needs an OpenAI or gateway/ model named (FULLSEND_CODEX_MODEL) because the fleet harnesses ask for opus; see Codex |
When and how the runtime is selected
- Next step — configure the forge. On GitHub,
fullsend github setup <owner/repo>asks which runtime to use when run from a terminal; press Enter to keepclaude. Passing--runtimeskips the prompt. The setup PR it opens records the choice in.fullsend/config.yaml. On GitLab, setruntime:in arepos.yamlconfig section (defaults.config,gitlab.config, or the repository entry'sconfig) before runningfullsend repos install(there is no interactive prompt or install flag). Nothing runs on this page — continue with Configuring GitHub or Configuring GitLab. - Later — changing it. Edit
runtime:in the repo's.fullsend/config.yaml(the setup PR shows the key), or, on GitHub, re-runfullsend github setup <owner/repo> --runtime <claude|pi|codex>(GitHub-only; it does not update a GitLab install). To put one agent on a different runtime or model than the rest — saycodeon Claude Code whiletriageruns Grok on pi — setruntime:on that agent'sagents:entry in the same file (fullsend agent set code --runtime claude); see Runtimes — per-agent settings. On GitLab (and for fleets managed throughrepos.yamlgenerally), everyrepos.yamlrepository has its.fullsend/config.yamlmanaged (see Repository Management), so do not edit that file directly: a direct edit either hits the adoption gate or is reverted on the next convergence. Setruntimeindefaults.config,github.config/gitlab.config, or a repository entry'sconfiginrepos.yaml, then runfullsend repos install— install and convergence rewrite the managed configuration as a whole file.repos installhas no--runtimeflag, and the formerdefaults.runtime/ per-entryruntimesibling keys are rejected. For a single agent,fullsend agent set code --runtime claudealso works. See fullsend repos. - Per run — trying without changing the repo.
fullsend run --runtime pi --model google-vertex/gemini-2.5-flash, or theFULLSEND_RUNTIME/FULLSEND_MODEL/FULLSEND_EFFORTenvironment variables (flag beats environment beats the agent'sagents:entry beats repo-wide config). In CI the same names work as repository variables. Reference: fullsend run and Runtimes — selecting and overriding.
Where to see what ran
After a run completes, the selected runtime and model appear in several places:
- Run plan block —
Runtime: <name> (from <source>)printed at the start of everyfullsend run - Status comment — the terminal status comment on the issue/PR includes a footer with runtime, model, effort, and cost (see Cost data contract for how cost is sourced and aggregated)
- metrics.json —
runtime,requested_runtime,runtime_source,requested_model, andoverride_sourcefields record what was selected and why - stderr —
runtime: selected "<name>" from <source>for script consumers
Next steps
- Configuring GitHub or Configuring GitLab to set up your repo
- Runtimes for the full runtime reference, including model override precedence and the capability table
