buildline

Models per station

Different work suits different models. You might want Fable to write specs and plans, Opus to build, and a second vendor to review the diff. Buildline lets you choose a model for each station. It doesn't ship a model list of its own, so new models work the day your tools support them.

Choose your models

npx buildline models

The picker shows what's available right now:

You choose either by phase (planning, building, checking, everything else) or for every station. The same picker runs during npx buildline init, and from the interactive menu.

Without prompts:

npx buildline models set planning fable              # spec, design, plan
npx buildline models set building claude-opus-5-5    # build
npx buildline models set checking codex              # verify, review
npx buildline models set review gemini:gemini-2.5-pro
npx buildline models set build inherit               # back to the session model
npx buildline init -y --models planning=fable,building=opus

Check what your choices resolve to

npx buildline models check
  ✔ fable                    → claude-fable-5-1
  ✔ claude-opus-5-5          → claude-opus-5-5
  ✘ claude-opus-9            There's an issue with the selected model …

For each Claude model this sends one tiny request and reports the model that actually answered. That catches typos, models your account can't use, and aliases that have moved on. For Codex and Gemini it checks the CLI is installed.

The config

It's one map in .buildline/buildline.json:

"models": {
  "spec": "fable",
  "design": "fable",
  "plan": "fable",
  "build": "claude-opus-5-5",
  "review": "codex:gpt-5-codex",
  "default": "sonnet"
}

Stations: onboard, new, spec, design, plan, build, verify, review, ship. default covers any station you don't list; leave it out to use the session model.

Value Runs on
an alias such as fable, opus, sonnet Claude Code, the newest model in that family
a full id such as claude-opus-5-5 Claude Code, that exact model
inherit, or leave it out whatever model the session is using
codex or codex:<model> Codex CLI
gemini or gemini:<model> Gemini CLI

Aliases keep up automatically. Full ids pin a model, so nothing changes under you until you update it. If you edit the file by hand, run npx buildline update to apply it.

How it's applied

Opening a station directly

buildline step <station> [id] opens a station in whatever it's set to:

npx buildline step plan 004                  # claude --model fable "/buildline-plan 004"
npx buildline step review 004 --headless     # codex exec … (no chat, edits allowed in the repo)
npx buildline step spec 004 --model opus     # one-off override
npx buildline step build 004 --print         # show the command without running it

Headless runs may edit files in the project but nothing beyond it: Claude uses --permission-mode acceptEdits, Codex --sandbox workspace-write, and Gemini --approval-mode auto_edit.

npx buildline doctor warns if a CLI you chose isn't installed.

Edit this page on GitHub