Show HN: Sol-Luna – adaptive Codex orchestration that can choose zero workers Sol-Luna, an MCP server for OpenAI Codex, lets a supervising GPT-5.6 Sol agent delegate bounded implementation tasks to isolated GPT-5.6 Luna worker threads, with scope enforcement and verification. In six measured free-choice runs, Sol declined to delegate every time, and forced delegation was slower on each fixture, supporting the model that strong supervisor first and additional agents only when they provide enough value. The tool is installed via npm and requires Codex authentication. An MCP server that lets a supervising OpenAI Codex agent delegate bounded implementation tasks to isolated worker threads — one at a time, or several in parallel in their own git worktrees — with a declared file scope per task, scope-violation detection, and results the orchestrator verifies instead of taking on trust. The supervisor gpt-5.6-sol , with high effort recommended decides what should happen, whether delegating is even worth it, and reviews what comes back. Workers gpt-5.6-luna , at an effort chosen per task do the contained implementation work in their own Codex threads. delegate tasks { mode: "parallel", tasks: { objective: "Implement the retry helper...", effort: "medium", allowedFiles: "src/retry.mjs" , verificationCommands: "node --test test/retry.test.mjs" }, { objective: "Implement money formatting...", effort: "high", allowedFiles: "src/money.mjs" , verificationCommands: "node --test test/money.test.mjs" }, { objective: "Diagnose the ordering bug...", effort: "xhigh", allowedFiles: "src/pool.mjs" , verificationCommands: "node --test test/pool.test.mjs" }, , } → 3/3 passed · 3 isolated worktrees · no integration conflicts · changes merged Two ideas do most of the work here: a worker's PASS is a claim, not a conclusion , and not every task should be delegated . Sol first decides whether delegation is worthwhile at all. More agents are not automatically better, and the optimal worker count can be zero. Good orchestration is not about maximizing agent count; it includes knowing when one strong Sol should do the work itself. Across the six measured free-choice runs in the scale suite, Sol declined to delegate every time, and forced delegation was slower on each corresponding fixture. That supports a deliberately scoped mental model for the workloads measured here: strong supervisor first; additional agents only when they provide enough value to justify coordination cost. More agents are a tool, not an objective. It does not prove that single-agent systems are universally better than multi-agent systems. There is a second adaptive layer when Sol does choose to delegate: each Luna worker gets medium , high , xhigh , or max reasoning effort based on that task's difficulty. Worker count and worker effort are separate decisions. Prerequisite: OpenAI Codex https://developers.openai.com/codex installed and authenticated codex login . npm install -g sol-luna-orchestrator sol-luna-orchestrator init Then open Codex, select GPT-5.6 Sol at High effort , and work normally. You're the supervisor. src/auth/, src/payments/ and src/search/ each need their failing tests fixed, and they don't touch each other. Use delegate tasks in parallel mode with one worker per module and a disjoint scope each. Pick each worker's effort yourself, then review the diffs and run the full suite. init registers the MCP server with Codex and applies the two settings Codex needs for delegation to work at all. It changes only the keys it owns — your comments, formatting and other MCP servers are left exactly as they were. Run it twice and it says Already configured . sol-luna-orchestrator doctor diagnose, with the fix for anything broken sol-luna-orchestrator status short summary sol-luna-orchestrator uninstall remove this project's entry, nothing else Why two commands and not one npx line A single npx sol-luna-orchestrator init would be shorter and would work today. It would also write a Codex config pointing into npm's npx cache, which npm deletes whenever it feels like it — leaving a configuration that silently stops working weeks later with no obvious cause. init refuses that by default. If you want it on one line, chain the two commands your shell's way: npm i -g sol-luna-orchestrator && sol-luna-orchestrator init in bash, zsh or PowerShell 7; use ; instead of && in Windows PowerShell 5. Honest answer, from this project's own measurements: Use Sol directly when the task is small, touches one or few files, has no useful decomposition, or when explaining it would take longer than doing it. On small tasks delegation measured ~2.3x slower and ~3.5x the tokens, with no quality difference. Orchestration is worth considering when a task has two or more genuinely independent workstreams, when you want a declared file scope per unit of work with violations reported rather than discovered later, when you want verification re-run independently of the agent claiming it passed, or when one long session would lose coherence. What the benchmarks have and have not shown. Parallel delegation beat sequential delegation in every task and every repetition median 155s vs 248s . Orchestrated execution has not beaten Sol High working alone on any fixture in any suite. A dedicated crossover investigation at four and six independent workstreams did not find a break-even point either — and going from four streams to six moved orchestration further behind +46% → +108% , because solo cost grows sublinearly in stream count while parallel cost is set by the slowest single worker. No token saving and no cost saving has been demonstrated; orchestration showed no token crossover. Forced-parallel used about 5.1× the known tokens on Tier B and 4.8× on Tier C versus solo-high; adaptive and coupled ratios differed. Details in bench/RESULTS.md /mahadansar/sol-luna-orchestrator/blob/main/bench/RESULTS.md . Not because delegation is always cheaper. On small tasks it measurably is not — this project's own benchmark says so, and that result is documented rather than buried benchmarks . Delegation earns its keep when work stops fitting in one head: when a session is long enough to lose coherence, when changes need a declared scope with post-execution scope-violation detection, when "it passed" needs to mean more than the model saying so, or when several independent pieces of work can genuinely run at the same time. The split is the one most teams already use with people: The supervisor holds requirements, architecture, decomposition, cross-cutting decisions, and review. It has the context; it makes the calls. Workers do bounded implementation, test writing, mechanical refactors, and focused investigation. They need a clear brief, not the whole picture. The second idea is that reasoning effort should be allocated, not fixed . Running every worker at maximum effort wastes time and tokens on work that was mechanical to begin with. The supervisor picks effort per task from that task's difficulty — and a batch of three workers routinely runs at three different efforts. - Developers using OpenAI Codex who want more structure than one long session. - Engineers in medium or large repositories where "change these three files" is a genuinely separable unit of work. - People experimenting with multi-agent coding who want the delegation boundary to be explicit, declared, and checkable rather than emergent. - Anyone who wants reasoning effort allocated per task rather than fixed for a whole session — mechanical work at medium while the hard task gets xhigh . Not, on current evidence, anyone looking to spend fewer tokens: orchestration used more of them in every configuration measured so far. There are three execution modes, and choosing between them is the supervisor's job. The tool descriptions push it to justify the choice rather than reach for delegation reflexively. | Mode | When | Isolation | Can save wall-clock? | |---|---|---|---| Sol only | Small, mechanical, one-file, or already-known edits | — | n/a — usually the fastest option | Sol + sequential Luna | Substantial work; later tasks depend on earlier ones | Shared workspace, one worker at a time | No | Sol + parallel Luna | Two or more genuinely independent pieces of work | One git worktree per worker | Yes | Sequential mode deliberately shares the workspace: a later task is supposed to see the earlier one's changes. Parallel mode deliberately does not. php flowchart TD User You -- Sol subgraph Session "Codex session" Sol "