One workflow prompt for persistent Codex tasks, with optional TypeSafe/Jev routing.
Assign capabilities to models, then copy the prompt into Codex Desktop with your task. Each model uses a persistent task with its own context. Assignments end the caller's turn; substantive replies resume it. Codex owns execution.
| Default model | Effort | Capabilities |
|---|---|---|
| GPT-5.6 Luna | max | Coordination, mechanical tasks |
| GPT-5.6 Sol | medium | Implementation, debugging, tests & validation |
| GPT-6 Astra | high | Planning, code review, browser, computer use, visual design & review |
Spatial and 3D modeling starts disabled. Move capabilities between cards or into Disabled, using drag-and-drop or the arrow menu. Only assigned capabilities contribute instructions. Model cards can be disabled. Re-enabling a card restores its default model, effort and capabilities, reclaiming those capabilities from any other card. The reset icon restores the whole board, including Jev on. Settings are session-local.
Choose another suggested model or enter a custom GPT ID. Codex validates
availability; no Switchloom update is needed for a new ID. Card IDs such as
luna identify slots, not fixed roles or model restrictions.
1.0 is an unpublished local preview. Unit/CLI/browser checks are distinct from a complete multi-task desktop run. Desktop verification and representative Jev-versus-vanilla measurements remain open in TASKS.md.
Both modes use the same handoff. Vanilla sets an explicit capability and does not call TypeSafe, so it needs no API key. Jev mode, enabled by default, needs the CLI, the skill and a local key:
cargo install --path . --locked
mkdir -p ~/.agents/skills/switchloom
cp skills/switchloom/SKILL.md ~/.agents/skills/switchloom/SKILL.mdExport TYPESAFE_API_KEY locally. Never paste keys into prompts; the website
does not accept them in public mode. Local benchmark credentials use the server-only Connections panel. If exported in .zshrc, use an interactive shell:
zsh -ic 'exec switchloom handoff' < INPUT_FILE. No OpenAI API key is required
by Switchloom; Codex uses its existing account.
The generated prompt authorizes creating missing tasks in the existing local project checkout. It reuses suitable tasks, never requests worktrees, and preserves exclusive file/tool ownership. If Luna is disabled, the planning owner starts coordination; otherwise the first assigned card does. This does not add another task or silently enable disabled specialist duties.
The website now includes a Jev Playground with a routing graph, probabilities, a 4,000-character prompt limit and an optional local Codex benchmark panel. The public version evaluates routing only; our TypeSafe key stays on the server.
Run pnpm site:local to enable local benchmarks with the existing Codex login.
Compare a single model, the configured team without Jev, and the same team with
Jev. Choose an output folder, watch real events, inspect artifacts and capture
screenshots. See setup and benchmark instructions.
The website's Benchmarks archive includes both Pokedex pilots, screenshots, costs and incomplete runs. Neither pilot demonstrated a Jev advantage at equivalent quality. They are observations on one task, not a model leaderboard.
Standalone route uses default catalog ownership:
switchloom route <<'JSON'
{"task":"Implement the agreed retry fix","routing":{"mode":"assigned","capability":"implementation"}}
JSONhandoff uses the workflow's configured ownership and returns Codex tool arguments:
switchloom handoff <<'JSON'
{
"request": {"task":"Review the retry fix","routing":{"mode":"jev"}},
"caller": {"thread_id":"CALLER_ID","host_id":"local"},
"threads": {
"sol": {"thread_id":"SOL_ID","host_id":"local","model":"gpt-5.6-sol","effort":"medium","capabilities":["implementation","debugging","validation"]},
"astra": {"thread_id":"ASTRA_ID","host_id":"local","model":"gpt-6-astra","effort":"high","capabilities":["planning","review"]}
}
}
JSONrouting:{"mode":"jev"} judges every new unassigned work objective.
routing:{"mode":"assigned","capability":"implementation"} binds a direct
assignment or saved continuation without a network call. With Jev disabled,
the coordinator uses assigned mode. Coordination controls the workflow and is
not a work candidate. A sole eligible capability requires explicit assignment.
The output is dispatch, continue_here, suggest or clarify. Only
dispatch is sent. A suggestion is not a send. Errors never silently
substitute a model. Models stay fixed through their tool loop. See
routing.
switchloom status --repository . and switchloom uninstall --repository .
inspect/remove earlier managed installations while preserving user edits.
See the retained persisted-data boundary in ownership.
catalog.toml owns model suggestions, reasoning choices, ordered model defaults
and capability instructions/default owners. Run pnpm catalog:regenerate after
changes. The Rust CLI and generated website catalog consume the same source.
generator.ts owns board state transitions and prompt composition; there is no
separate preview implementation or settings store.
See CONTRIBUTING.md, release policy and CHANGELOG.md. MIT. See LICENSE.