Harness Setup
One row per harness devkit routes to: what it's for, how to install, sign in, enable and check it, and what it can't do. Payload adapters (shared skills/hooks projected into Codex, OpenCode, Pi) are documented in Runtime Adapters; this page is about reaching the harness at all. content/model-runtimes.json is the pinned registry behind every row.
codex
| Role | payload adapter (~/.codex) and delegate/review runtime, incl. native codex review |
| Install | devkit sync (brew cask on macOS, npm @openai/codex on Linux; unpinned, installed when missing) |
| Sign-in | codex login — ChatGPT OAuth or an OpenAI API key |
| Enable | devkit config codex auto|on|off (default auto: on while installed) |
| Hook trust | devkit config codex-hook-trust devkit|all|off — devkit sync pre-trusts hooks in ~/.codex/config.toml so Codex never asks; devkit (default) covers devkit's own hooks, all also foreign global hooks and every trusted project's .codex/hooks.json |
| Check | devkit runtime-route --inventory; devkit doctor |
| Limits | review_role: true, the only native-review runtime; GPT-6 Sol/Luna |
claude
| Role | the primary runtime; reverse-direction delegate target via claude -p |
| Install | install Claude Code from Anthropic directly; devkit does not manage it |
| Sign-in | Claude Pro/Max OAuth or an Anthropic Console API key |
| Enable | devkit config runtime claude auto|on|off; always available as primary |
| Check | devkit runtime-route <tier> reports RUNTIME=claude when resolved |
| Limits | outside panel and routes.review; same-model review fallback escalates via escalation.claude (fable), never opus |
dsh
| Role | explore/implement/review/architecture delegate, one-shot headless profile |
| Install | devkit sync --optional (pinned) |
| Sign-in | DEEPSEEK_API_KEY (env or $DSH_HOME); readiness stays explicitly unknown |
| Enable | devkit config runtime dsh auto|on|off (default auto) |
| Check | devkit runtime-route --inventory |
| Limits | implement gets a 3600 s bound; cannot commit from a linked worktree |
pi
| Role | explore/implement/review/architecture delegate; first implement choice for every spec below high risk since 2026-09-24 |
| Install | devkit sync (pinned @earendil-works/pi-coding-agent, plus bubblewrap on Linux and the Claude OAuth adapter; macOS sandboxes implement with the built-in Seatbelt instead) |
| Sign-in | Claude Pro/Max OAuth via pi-claude-oauth-adapter (accepted account risk — https://code.claude.com/docs/en/legal-and-compliance), or an Anthropic Console API key; other providers report their own readiness |
| Enable | devkit config pi auto|on|off (default off) |
| Check | pi auth check; devkit doctor --target pi; devkit runtime-route --inventory <tier> --models --json |
| Limits | no review_role; extension discovery stays off outside explicit personal paths |
| DeepSeek | Fallback when the primary Pi model is not signed in or hits its usage limit: DeepSeek V4.1 Flash for explore/review/implement, then Codex gpt-6.1-sol for implement. Enable it with pi, /login, DeepSeek and an API key from platform.deepseek.com. DEVKIT_DELEGATE_PROVIDER/_MODEL/_EFFORT pins one tuple and turns the fallback off. Trial 2026-09-26: every seeded defect found, faster than dsh |
| Interactive use | shared skills ask through AskUserQuestion, which Pi lacks; pi install npm:@juicesharp/rpiv-ask-user-question adds the matching ask_user_question tool (personal config, never loaded by delegates) |