Apache-2.0 · Claude Code · Codex · OpenCode

One goal. An ordered plan of agent tasks. Every runner, model and effort visible before you spend a token.

The planner reads your repo, asks about whatever you left vague, and hands back tasks you can rewrite — prompts, models, modes, dependencies, all of it. Then it runs one real coding-agent session per task, and completes a task only when that task's marker shows up in the output.

Node 20+ · macOS, Linux, Windows · plan without an API key

Plan · 5 tasks

  1. Add a Redis token-bucket limiterclaude-code · Sonnet 4.5 · high
  2. Wire it into the preHandler chainclaude-code · Sonnet 4.5 · medium
  3. Return RFC 6585 429s with Retry-Afteropencode · DeepSeek V4 Flash · medium
  4. 4 Document the limits in the OpenAPI speccodex · GPT-5.2 Codex · low
  5. M Load-test the limiter under burst trafficyours to run

How it works

A plan is not an agent's train of thought.

It's a typed artifact you can rewrite. Everything else follows from that.

01 — Plan

It researches, then asks

The planner reads your repo read-only and interrogates a vague goal instead of guessing at it. Its final message is the plan: ordered tasks, each carrying a runner, model, thinking effort and mode.

02 — Execute

One real session per task

Every AI task spawns an actual coding-agent session in a fresh context, handed its predecessors' results. Independent tasks run in parallel. The dependency graph is always respected.

03 — Verify

Marker or nothing

A task completes when its unique completion marker appears in the runner's output. Exit code is kept as evidence. The model never gets a vote in its own verdict.

VS Code extension

Plan, edit and ship without leaving the editor.

The panel docks beside your code and streams the whole loop: live thinking, every research step with its outcome, and the plan itself — pinned where you are already typing instead of buried in scroll.

The Ordewell plan panel: an Execute Plan button above five task rows. Each row carries its number, an AI or MANUAL badge, the task title, a model pill — Claude Sonnet 4.5, Claude Haiku 4.5, DeepSeek V4 Flash on OpenCode, GPT-5 Codex on OpenAI — a mode pill, and its dependency counts.
Five tasks, four models, three runners — every assignment visible before Execute Plan is pressed.
A task row showing its number, an AI badge, the title, a Claude Haiku 4.5 model pill, an EDIT AUTOMATICALLY mode pill, and dependency counts.

Retarget a task, not just a field

Change a task's runner and its model, thinking effort and mode re-derive from that runner's own catalog. One piece of code does it for every surface, so an assignment the runner cannot spawn never gets saved.

An open model picker filtered to the OpenRouter provider, listing DeepSeek V4 Flash and Claude Sonnet 4.5 with a search field above them.

Only models that runner can spawn

The picker is scoped to the selected backend's real catalog, so you never type an id that turns into a failure at spawn time.

A model field reading Claude Sonnet 4.5 · anthropic beside a thinking-effort dropdown set to high.

Thinking effort is per task too

The levels offered are the ones that model actually has. A docs task doesn't need to think as hard as a migration, and you decide which is which.

A row of skill toggle pills: Grill-Me, TDD, PRD, Review, Verify and Subagents, with PRD switched off.

Skills are toggles, not files

Grill-me interrogates a vague goal before outlining. PRD drafts one and waits for your sign-off. TDD rewrites every task around red-green-refactor.

The Ordewell settings bar: a planner row with Claude Code selected among Codex, OpenCode, OpenRouter and a struck-through Gemini, a model and thinking-effort row, and a runners row.

Plan on an agent you already pay for

Claude Code, Codex or OpenCode can be the planner — read-only by construction, no extra API key. An agent that isn't on your PATH is greyed out rather than offered and then failed.

A paused HITL checkpoint card: the task is dropping legacy settings columns, the dry run reports 2 columns and 41,208 rows affected, with Approve and Continue or Reject buttons.

Stop before the irreversible step

A task can pause and hand the decision back to you with the evidence it gathered attached. Approve and it continues. Reject and it doesn't.

The whole loop, in one panel

Research steps settle one at a time. The planner asks its question and waits. The plan commits with per-task pills, execution starts, and a task lands on a green verdict that names the evidence which produced it.

The plan stays docked between the transcript and the input — where you are already looking when you type a change to it — instead of scrolling away as a chat message.

The Ordewell VS Code panel animating through a full loop: research steps settle, the planner asks whether limits apply per API key or per client IP, a five-task plan is committed, execution runs, and a task lands on a green pass verdict.

Terminal UI

Everything the extension does — over SSH.

Conversation on the left, live plan on the right. Single keys drive the whole thing: no menus, no mouse, nothing that needs a window server.

Ordewell's terminal UI split between the planner conversation on the left — including a refused npm install and a clarifying question about reusing the Redis client — and a plan pane on the right showing seven tasks with per-task runner, model, effort and mode.
Three tasks done, one selected, seven total — with the runner, model, effort and mode under every line.
  • tab swap chat and plan
  • f start selected task
  • E run the whole plan
  • R change runner
  • o change model
  • e thinking effort
  • M execution mode
  • D rewire dependencies
  • a add a task
  • d remove a task
  • m toggle done
  • t attach to the terminal

/help lists the rest. Each task's live terminal is tmux-backed, so the TUI wants tmux installed on every platform — and on Windows, WSL.

Why it holds up

Six decisions that make the difference.

Editable

Rewrite the plan before you pay

Change any prompt, model, effort or mode. Add tasks, delete them, rewire dependencies. No round-trip to the AI, and completed work survives every edit.

Routing

The right model per task

A security refactor and a README update don't deserve the same model. The planner makes one portfolio call across the whole plan — and shows you all of it before anything runs.

Evidence

No opinion in the verdict

Exit code and completion marker. That is the entire input. A run that ends without its marker fails loudly instead of passing quietly.

Read-only

The planner can't touch your repo

Reads run in parallel and silently. Anything reaching outside the workspace asks once. Commands that write are refused outright — mutation belongs to the runners.

Runners

Bring your own agent

Claude Code, Codex and OpenCode ship built-in. Anything else — Aider, your own CLI — is a JSON manifest with {{variable}} templating, not a pull request.

Headless

Nothing is UI-only

Every slash command has an identical CLI subcommand, held there by a parity test. Whatever a human can reach from the panel, a script can reach from a pipeline.

  • Claude Code
  • Codex
  • OpenCode
  • Aider — plugin
  • your CLI — plugin

CLI

And a command line, for when there's a pipeline instead of a person.

ordewell
$ ordewell plan --goal "Add rate limiting to the public API"

Generating plan for: "Add rate limiting to the public API"...
 list_dir src → D middleware  F router.ts  F auth.ts
 grep X-RateLimit → no matches in 6 files

Question: should limits apply per API key, or per client IP?
My recommendation: per key — auth() already threads the key through req.ctx.
> per key, with an IP fallback for anonymous routes

Plan: 4 tasks (3 AI, 1 Manual) — claude-code, opencode

   1. [ AI] Add a token-bucket limiter in src/middleware/rateLimit.ts (Claude Sonnet 4.5 · Claude Code)
   2. [ AI] Wire the limiter into route registration (Claude Haiku 4.5 · Claude Code)
   3. [ AI] Return RFC 6585 429s with Retry-After (DeepSeek V4 Flash · Opencode)
   4. [MAN] Document the limit headers in the OpenAPI spec

$ ordewell run
 #a1b2 completed — PASS: completion marker detected in agent output
 #c3d4 in_progress — claude-code / claude-haiku-4-5

Done. 4 completed, 0 failed, 0 blocked.

Get started

Install one surface. Configure nothing.

No key to export and no config file to write. Ordewell finds the coding agents already on your machine, and the planner, the runners and any API key are set from inside the app — not from your shell profile.

Terminal

The TUI

bash
npm install -g ordewell
ordewell   # chat left, plan right

ordewell with no arguments is the TUI. Its opening screen shows the planner and the runners it found, and both change in place — /planner, /runners, /key — with no restart. npx ordewell does the same without installing.

VS Code

The extension

bash
code --install-extension ordewell.ordewell

Or search Ordewell in the Extensions view. It carries its own core, so there is nothing to install from npm: open a folder, open the panel, and set the planner and runners in the settings bar.

Get it on the Marketplace →

What you actually need

  • One coding agent — Claude Code, Codex or OpenCode. These execute the tasks, and any install route is found whether or not it is on your PATH.
  • No API key. An agent you already pay for can be the planner too, read-only by construction. Add a provider key from /key later if you want one instead.
  • Node.js 20+ for the CLI and TUI. The extension needs only VS Code.
  • tmux for the TUI on every platform — it is what backs each task's live terminal. On Windows, run the TUI under WSL.

Read the plan before you pay for it.

Open source, Apache-2.0, and the plan is yours to rewrite.