Skip to content
By Wayne Sun, Greg Allen
Picture of Wayne Sun
Wayne Sun
Picture of Greg Allen
Greg Allen

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, fix and review/retro; codex runs OpenAI models through the same secretless credential path but has no sub-agent roster yet, so review/retro are 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 ​

RuntimeStatusDescriptionWhen to use
claudeStable (default)Claude Code on Vertex AIEvery production deployment — mature, full sub-agent support for review/retro
piExperimental (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
codexExperimentalCodex — 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 ​

  1. 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 keep claude. Passing --runtime skips the prompt. The setup PR it opens records the choice in .fullsend/config.yaml. On GitLab, set runtime: in a repos.yaml config section (defaults.config, gitlab.config, or the repository entry's config) before running fullsend repos install (there is no interactive prompt or install flag). Nothing runs on this page — continue with Configuring GitHub or Configuring GitLab.
  2. Later — changing it. Edit runtime: in the repo's .fullsend/config.yaml (the setup PR shows the key), or, on GitHub, re-run fullsend 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 — say code on Claude Code while triage runs Grok on pi — set runtime: on that agent's agents: entry in the same file (fullsend agent set code --runtime claude); see Runtimes — per-agent settings. On GitLab (and for fleets managed through repos.yaml generally), every repos.yaml repository has its .fullsend/config.yaml managed (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. Set runtime in defaults.config, github.config / gitlab.config, or a repository entry's config in repos.yaml, then run fullsend repos install — install and convergence rewrite the managed configuration as a whole file. repos install has no --runtime flag, and the former defaults.runtime / per-entry runtime sibling keys are rejected. For a single agent, fullsend agent set code --runtime claude also works. See fullsend repos.
  3. Per run — trying without changing the repo. fullsend run --runtime pi --model google-vertex/gemini-2.5-flash, or the FULLSEND_RUNTIME / FULLSEND_MODEL / FULLSEND_EFFORT environment variables (flag beats environment beats the agent's agents: 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 every fullsend 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, and override_source fields record what was selected and why
  • stderr — runtime: selected "<name>" from <source> for script consumers

Next steps ​