{"slug": "show-hn-ordewell-turn-one-goal-into-an-ordered-plan-of-coding-agent-tasks", "title": "Show HN: Ordewell – turn one goal into an ordered plan of coding-agent tasks", "summary": "Ordewell launched as an open-source tool that converts a single coding goal into an ordered plan of coding-agent tasks, each assigned its own runner, model, thinking effort and mode, then executes and verifies them. The tool installs via `npm install -g ordewell` on Node.js 20 or higher for macOS, Linux and Windows, and can use Claude Code, Codex or OpenCode as its read-only planner on an existing subscription without a separate API key, or one of 25 recognized providers via their own `*_API_KEY` variables. Ordewell completes a task only when its unique completion marker appears in the runner's output, retaining the exit code as diagnostic evidence rather than letting the model decide.", "body_md": "**Turn one goal into an ordered plan of coding-agent tasks — each with its own runner, model and mode — then execute and verify it.**\n\n- **A plan you can rewrite before a token is spent.** The plan is a typed artifact, not an agent's internal state: every task carries a runner, model, thinking effort and mode, and you can change any of them, add and remove tasks, and rewire dependencies — without losing completed work or round-tripping the AI.\n- **The right model per task, chosen in the open.** The planner makes one portfolio decision across the whole plan — a security refactor and a README update do not deserve the same model — and shows you every assignment before anything runs ([why a separate planner?](https://github.com/ordewell/ordewell/blob/main/docs/why-a-separate-planner.md) ).\n- **Verdicts from evidence, not opinion.** A task completes only when its unique completion marker appears in the runner's output; exit code is retained as diagnostic evidence. The model is never the tie-breaker. Stuck tasks can be advanced with*Mark complete* , and a task marked done by mistake goes back with*Mark not done* .\n- **A planner that talks back.** Planning is one continuous chat: it researches your repo read-only, asks when your goal is vague, and its final message*is* the plan ([ADR-0002](https://github.com/ordewell/ordewell/blob/main/docs/adr/0002-planner-as-conversation-loop.md) ). Reads run in parallel; anything reaching outside the workspace asks once; commands that would write are refused outright ([ADR-0008](https://github.com/ordewell/ordewell/blob/main/docs/adr/0008-planner-exploration-envelope.md) ).\n- **No extra API key required.** Claude Code, Codex, or OpenCode can*be* the planner, strictly read-only, on the subscription you already hold for the runners ([ADR-0009](https://github.com/ordewell/ordewell/blob/main/docs/adr/0009-coding-agents-as-planners.md) ).\n- **Multi-runner by design.** Enable several and the planner assigns one per task. Claude Code, Codex and OpenCode ship built-in; anything else — Aider, your own CLI — is a plugin manifest, not a code change.\n\nNode.js ≥ 20 on macOS, Linux or Windows. The TUI also needs **tmux** — see\nPlatform support below.\n\n```\nnpm install -g ordewell\nordewell                                       # the TUI — chat on the left, plan on the right\n```\n\nThat's it. First run asks for a planner and a runner, set from inside\n(`/planner`, `/runners`, `/key`) — no restart, no API key required up front.\n\n`npx ordewell` works the same without a global install; the package also\nships scoped as `@ordewell/cli`.\n\nFor VS Code instead, install the extension — it carries its own core, so there is nothing to install from npm:\n\n```\ncode --install-extension ordewell.ordewell\n```\n\nOr search **Ordewell** in the Extensions view.\n\nBuilding from source:\n`git clone https://github.com/ordewell/ordewell.git && cd ordewell && npm install && npm run build && npm link -w packages/cli`\n— see [CONTRIBUTING.md](https://github.com/ordewell/ordewell/blob/main/CONTRIBUTING.md).\n\nEvery slash command is also a subcommand — set the planner and runner by env var to skip the TUI entirely.\n\n**Already run Claude Code, Codex, or OpenCode?** No separate API key — it\nruns on the subscription you already hold:\n\n```\nexport AI_PROVIDER=\"claude-code\"        # or codex, opencode\nordewell plan --goal \"Add rate limiting to the public API\" && ordewell run\n```\n\nMutation always stays with the runners; the planner agent only explores and\nreasons. Same toggles apply from a UI: `/planner`, `/model`,\n`/planner-effort`, or the planner bar in VS Code.\n\n**Prefer an API key?** Twenty-five providers are recognised via their own\n`*_API_KEY` — OpenRouter, Anthropic, OpenAI, Gemini, xAI, Groq, DeepSeek,\nMistral, Together, Fireworks, Perplexity, Cerebras, DeepInfra, Cohere,\nNovita, Kimi, Zhipu, Qwen, Doubao, Hunyuan, Baichuan, MiniMax, Yi, StepFun\nand SiliconFlow. Run `ordewell key` for variable names, or point\n`OPENAI_COMPATIBLE_BASE_URL` at anything else, including a local model\nserver.\n\n```\nexport OPENROUTER_API_KEY=\"sk-or-...\"\nordewell plan --goal \"Add rate limiting to the public API\" && ordewell run\n```\n\nA streaming timeline: live thinking, each research step with its outcome, and task cards you expand for the runner's own output. Retarget a task's runner and its model and mode re-derive in place. The whole loop is below, under **The VS Code loop, end to end**.\n\nEverything the extension does, over SSH. `tab` swaps chat and plan pane; single keys drive the plan (`f` start, `E` run all, `m` toggle done, `R` runner, `o` model). `/help` lists the rest.\n\n``` bash\n$ ordewell plan --goal \"Add rate limiting to the public API\"\n\nGenerating plan for: \"Add rate limiting to the public API\"...\n✓ list_dir src → D middleware F router.ts F auth.ts\n✓ grep X-RateLimit → no matches in 6 files\n\nQuestion: should limits apply per API key, or per client IP?\nMy recommendation: per key — auth() already threads the key through req.ctx.\n> per key, with an IP fallback for anonymous routes\n\nPlan: 4 tasks (3 AI, 1 Manual) — claude-code, opencode\nSession: session-1751600000000\n\n   1. [ AI] Add a token-bucket limiter in src/middleware/rateLimit.ts (Claude Sonnet 4.5 · Claude Code)\n   2. [ AI] Wire the limiter into route registration (Claude Haiku 4.5 · Claude Code)\n   3. [ AI] Return RFC 6585 429s with Retry-After (DeepSeek V4 Flash · Opencode)\n   4. [MAN] Document the limit headers in the OpenAPI spec\n\n  [MAN] = manual step — run `ordewell tui` to work through it\n\n  Run 'ordewell run' to execute, 'ordewell status' to inspect, or 'ordewell tui' for the full UI.\n\n$ ordewell run\nExecuting plan...\n  ✓ #a1b2 completed — PASS: Verified: completion marker detected in agent output. Task c\n  ⟳ #c3d4 in_progress\n[2/Wire the limiter into route registration] Started: claude-code / claude-haiku-4-5\n\nDone. 4 completed, 0 failed, 0 blocked.\n```\n\nEvery slash command is also an `ordewell` subcommand, so nothing is UI-only and headless automation reaches everything a human can.\n\n1. **Describe a goal** in plain prose.\n2. **The planner researches** your workspace read-only and interleaves questions with research in one persistent conversation ([ADR-0008](https://github.com/ordewell/ordewell/blob/main/docs/adr/0008-planner-exploration-envelope.md) ).\n3. **A plan appears** — ordered tasks, each with a runner, model, thinking effort and mode. Edit anything inline, or reprompt to reshape the whole plan without losing completed work.\n4. **Execution** spawns a real coding-agent session per AI task, respecting the dependency graph and handing each task its predecessors' results. Manual tasks become checklists.\n5. **The VerdictEngine** completes a task only once its marker appears; an exit without one fails visibly. Sessions auto-save to`.ordewell/sessions/` .\n\n## **Usage examples** — planning, editing, multi-runner, plugins\n\n**Plan, edit, execute**\n\n```\n# The planner researches the repo and converses if the goal is underspecified\nordewell plan --goal \"Migrate the config loader from JSON to TOML\"\n\n# Reassign before running — runner first, since it re-derives model, effort and mode\nordewell task-runner 2 opencode\nordewell task-deps 3 1,2\n\n# Execute; independent tasks run in parallel (default: 3 concurrent sessions)\nordewell run\n\n# Inspect any session later\nordewell status --session-id session-1751600000000\n```\n\nThe surfaces differ only in how you name a target: the TUI opens a picker, the CLI takes an argument — and omitting the argument prints the same options the picker would have shown.\n\n```\nordewell task-model 3            # lists the models that task's runner can spawn\nordewell task-model 3 sonnet     # picks one\n```\n\n**Configure without an editor**\n\n```\nordewell planner claude-code     # plan on a coding agent's subscription — no API key\nordewell model set sonnet        # scoped to that agent's own catalog\nordewell planner-effort high     # a variant of the selected model\nordewell key set openrouter sk-… # stored in .env, never echoed back\nordewell runners codex off\n```\n\nEach pushes to the running server *before* writing `.env`, so the change lands on the next plan with no restart — and a refused connection cannot leave the file holding a setting the daemon never saw.\n\n**Deep-interview planning with a PRD**\n\n```\nordewell grilling on   # planner interrogates your goal before outlining (min. 3 probing questions)\nordewell prd on        # planner previews, then writes a full PRD to .scratch/<slug>/PRD.md\nordewell tdd on        # tasks are augmented with red-green-refactor instructions\n\nordewell plan --goal \"Real-time collaborative editing\"\n# → the planner grills you in chat, drafts the PRD, waits for your OK,\n#   then commits the plan as its final message\n```\n\n**Multi-runner plans and custom runners**\n\n```\n# Pass --runner repeatedly to build a runner set; the planner assigns one per task\nordewell plan --goal \"Refactor auth module\" --runner claude-code --runner opencode\n\n# Bring your own CLI agent via a plugin manifest\nordewell plugins create my-runner        # scaffolds manifest.json\nordewell plugins install github:user/repo\nordewell plugins list\n```\n\nRemote plugin installs accept `https://` repositories on GitHub, GitLab,\nBitbucket and Codeberg; anything else must be cloned yourself and installed from\nits local directory.\n\n**The other two front ends**\n\n```\nordewell               # full-screen terminal UI — same as `ordewell tui`\nordewell web --daemon  # the local API server, in the background\n```\n\n`ordewell web` starts the HTTP + WebSocket API on `127.0.0.1:3742` that the CLI and TUI are clients of — every other command starts it for you on demand. It serves JSON, not a web page; there is no browser dashboard yet.\n\nFor VS Code, install the extension and open the Ordewell panel — see Quick Start.\n\n| Area | Commands | \n|---|---|\n| Planning | type a goal, `/approve` ,`/run` ,`/stop` | \n| Tasks | `/add-task` ,`/remove-task` ,`/complete` ,`/uncomplete` ,`/skip` ,`/retry` ,`/cancel` ,`/force-start` | \n| Skills | `/grilling` ,`/tdd` ,`/prd` ,`/verify` | \n| Models | `/model` ,`/key` ,`/allowlist` ,`/runners` ,`/auto` ,`/refresh` | \n| Sessions | `/sessions` ,`/new` ,`/save` ,`/load` ,`/delete` — a loaded session is adopted by the server, so its plan stays executable | \n| System | `/help` ,`/mouse` ,`/quit` | \n\nAPI keys typed into `/key` are masked on screen and written to your `.env`.\n\nThe mouse wheel scrolls whichever pane the pointer is over — transcript or plan\n— regardless of which one has keyboard focus, and `pgup`/` pgdn` scroll the\nfocused one. Capturing the mouse for the wheel is what disables the terminal's\nown drag-to-select, so `/mouse off` hands it back when you need to copy text out\n(remembered via `ORDEWELL_TUI_MOUSE` in your `.env`, and `ORDEWELL_TUI_MOUSE=false`\nin the environment turns it off everywhere).\n\nA task's own terminal is a tmux window, where tmux does hold the mouse so the\nwheel scrolls its scrollback. Selecting there still copies to your system\nclipboard: drag to select and release to copy, or double/triple-click for a word\nor a line. Install `wl-copy`, `xclip` or `xsel` on Linux if you have none of them\n— without one, copying falls back to an OSC 52 escape that some terminals ignore.\n\n## **Platform support** — including the Windows notes\n\n| Surface | Linux | macOS | Windows | \n|---|---|---|---|\n| VS Code extension | ✅ | ✅ | ✅ | \n| API server | ✅ | ✅ | ✅ | \n| CLI | ✅ | ✅ | ✅ | \n| TUI | ✅ needs tmux | ✅ needs tmux | needs tmux — run it under WSL | \n\n**The TUI requires tmux on every platform**, not only Windows — it is what backs\neach task's live terminal. Install it from your package manager (`apt install tmux`, `brew install tmux`) before running `ordewell`. Everything else runs\nnatively on Windows: the planner (including harness planners), task execution,\nmodel discovery, and the read-only exploration envelope all work there.\n\nTwo notes for Windows. Install the agent CLIs with their **native installers** where one exists — an npm-installed `claude`/` codex`/` opencode` is a `.cmd` shim, which has to start through cmd.exe and inherits its 8191-character command-line limit; that is fine for task prompts but not for the harness planner's larger system prompt, and Ordewell will tell you so by name rather than silently truncating it. And keep **Git for Windows** installed: its POSIX shell is what the planner runs research commands in, so `ls`, `cat`, `grep` and friends behave the same as they do everywhere else. See [ADR-0010](https://github.com/ordewell/ordewell/blob/main/docs/adr/0010-windows-support.md).\n\nAny install route is found, on PATH or not: the PowerShell one-liner installers (`irm https://claude.ai/install.ps1 | iex`, OpenCode's equivalent), npm, pnpm, Yarn, bun, Scoop, Chocolatey, WinGet, and Volta. If a runner is greyed out in the picker right after you installed it, restart the VS Code window — a GUI-launched extension host holds the PATH it started with.\n\n## **Configuration** — the four settings that matter\n\n| Option | Default | What it does | \n|---|---|---|\n| One provider key ( `OPENROUTER_API_KEY` ,`ANTHROPIC_API_KEY` ,`GEMINI_API_KEY` , …) | — | The one required setting. Twenty-five providers are recognised, each from its own variable — `ordewell key` lists them — plus any OpenAI-compatible endpoint via`OPENAI_COMPATIBLE_BASE_URL` . The provider is auto-detected from whichever key is set (force with`AI_PROVIDER` ). Not needed when`AI_PROVIDER` is`claude-code` ,`codex` , or`opencode` — those plan with the CLI's own subscription. | \n| `ORCHESTRATOR_MODEL` | `deepseek/deepseek-v4-flash` | The planner model — a budget model by default; it plans and researches but never writes code. Change via `ordewell model set <id>` or`/model` , which scope the choice to the planner backend's own catalog. With a coding-agent planner, it must be one of that agent's own model ids. | \n| `ORDEWELL_PLANNER_EFFORT` | — | Thinking effort for a coding-agent planner, from the selected model's own variants ( `low` ,`high` ,`adaptive` , …). Ignored by vendor planners, whose effort is baked into the model id. Change via`ordewell planner-effort <level>` or`/planner-effort` . | \n| `ORDEWELL_MAX_PARALLEL` | `3` | Max concurrent AI task sessions (1–5). Independent tasks run in parallel; the dependency graph is always respected. | \n\nRun `ordewell --help` for the full list of environment variables, or `ordewell setup` for the interactive wizard. VS Code users: everything is mirrored under `ordewell.*` settings.\n\n## **Architecture**\n\n```\npackages/\n├── core/    Pure TypeScript, zero UI deps — Session, PlanStore, Planner,\n│            TaskOrchestrator, VerdictEngine, ModelResolver, ModeResolver,\n│            RunnerRegistry + manifest template engine\n├── cli/     ordewell: tui, plan, run, status, stop, web, models, setup,\n│            plugins, grilling, prd, tdd — plus tui/, a pure state +\n│            renderer core behind a thin raw-mode terminal driver\n├── vscode/  Extension + webview: streaming planner timeline, task cards,\n│            TTY capture via script(1)\n└── web/     Hono HTTP + WebSocket server — the local daemon the CLI and\n             TUI drive over 127.0.0.1 (session pool, headless execution)\n```\n\nThe TUI's core is pure — a reducer returning `{ state, effects }` and a renderer returning one string per terminal row ([ADR-0006](https://github.com/ordewell/ordewell/blob/main/docs/adr/0006-tui-pure-core-thin-driver.md)).\n\nTasks default to each runner's autonomous mode (toggle with `/auto`), and the plan is the source of truth for what runs — modes are never silently rewritten at spawn ([ADR-0001](https://github.com/ordewell/ordewell/blob/main/docs/adr/0001-autonomous-mode-resolution.md)).\n\nEvery surface consumes one event union (`SessionMessage`) over one broadcast seam — the domain vocabulary lives in [CONTEXT.md](https://github.com/ordewell/ordewell/blob/main/CONTEXT.md) and design decisions in [docs/adr/](https://github.com/ordewell/ordewell/blob/main/docs/adr).\n\n## **Acknowledgements**\n\nThe deep-interview planning workflows — `grilling`, PRD drafting, and TDD task augmentation — are adapted from [Matt Pocock's skills](https://github.com/mattpocock/skills) (MIT), rebuilt as prompt blocks inside Ordewell's planner and runner prompts. If you want those workflows in a plain coding-agent session rather than an orchestrated plan, his repo is the place to start.\n\nBug reports, feature requests and pull requests are welcome — start with [CONTRIBUTING.md](https://github.com/ordewell/ordewell/blob/main/CONTRIBUTING.md) for the build order and the layout of the tree. Security issues go to [SECURITY.md](https://github.com/ordewell/ordewell/blob/main/SECURITY.md), not the public tracker.\n\nNew to the codebase? [CONTEXT.md](https://github.com/ordewell/ordewell/blob/main/CONTEXT.md) is the domain glossary and [docs/adr/](https://github.com/ordewell/ordewell/blob/main/docs/adr) records why things are the way they are.\n\nLicensed under the [Apache License 2.0](https://github.com/ordewell/ordewell/blob/main/LICENSE). The Ordewell name and logos are not covered by that licence — see [NOTICE](https://github.com/ordewell/ordewell/blob/main/NOTICE).", "url": "https://wpnews.pro/news/show-hn-ordewell-turn-one-goal-into-an-ordered-plan-of-coding-agent-tasks", "canonical_source": "https://github.com/ordewell/ordewell", "published_at": "2026-09-15 13:31:37+00:00", "updated_at": "2026-09-15 13:44:41.692078+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "ai-products"], "entities": ["Ordewell", "Claude Code", "Codex", "OpenCode", "Node.js", "npm", "VS Code", "OpenRouter"], "alternates": {"html": "https://wpnews.pro/news/show-hn-ordewell-turn-one-goal-into-an-ordered-plan-of-coding-agent-tasks", "markdown": "https://wpnews.pro/news/show-hn-ordewell-turn-one-goal-into-an-ordered-plan-of-coding-agent-tasks.md", "text": "https://wpnews.pro/news/show-hn-ordewell-turn-one-goal-into-an-ordered-plan-of-coding-agent-tasks.txt", "jsonld": "https://wpnews.pro/news/show-hn-ordewell-turn-one-goal-into-an-ordered-plan-of-coding-agent-tasks.jsonld"}}