
The High Council
io.github.muad-yasinPublished by GitHub account muad-yasinv0.8.4Updated Nov 14, 2026
Several models from different labs plan in a blind proposal, debate and review loop. Your own keys.
Overview
Runs a multi-model "council" that debates your project idea through blind proposals, judges and revisions, then writes a plan and build handoff.
- What you can do
- Debate an idea across several labs' models: blind proposals, recorded objections, merges and withdrawals
- Review and revise the draft against yes/no acceptance criteria, with three layers of judges in the planning chains
- Write run output to a folder: the plan, the full debate board, a structured report with token and cost accounting, and a build handoff for a coding agent
- Price a run or a recursive tree of sub-plans before spending, then resume a run that stopped at its limit
- Accept a plan the panel did not agree on, add a judge ruling mid-run, and attach project excerpts during a run
- When to use it
- Use it when you want a project, feature or update plan stress-tested by several different models rather than one, and you want the disagreements kept on the record. It suits people who will hand the resulting plan to a coding agent and are willing to pay per run.
- Requirements
- Local process run with npx, so Node.js 24 or newer is needed. Bring your own provider API keys; the quick-start chain needs OPENROUTER_API_KEY and an agent session such as Claude Code, with ANTHROPIC_API_KEY optional. Other chains need the matching keys among ANTHROPIC_API_KEY, COHERE_API_KEY, DEEPSEEK_API_KEY, GOOGLE_API_KEY, GROQ_API_KEY, MISTRAL_API_KEY, OPENAI_API_KEY, TOGETHER_API_KEY and ZAI_API_KEY. COUNCIL_WORKDIR sets the output folder.
Installation
In SourceWeft
- Open The High Council in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
THE HIGH COUNCIL
"A beginning is the time for taking the most delicate care that the balances are correct"
Frank Herbert, Dune
You bring an idea for a new project, a feature or any kind of update.
THC debates your idea and the Software Engineering behind it.
Through multiple debate rounds and 3 layers of judges, they catch a lot of things that even your strongest initial draft-writing LLM will not have thought about.
The goal is to get everyone to work together, in harmony and with manners.
[License: MIT] [npm] [MCP Registry]
Website · Pricing · AI-Readme (the full text) · Changelog · Known limits
[The council chamber from the project website: the debate graph of a real recorded run (a water-collector design), with the Claude seat in the middle.]Try it in 30 seconds
No keys, no network, $0. Add it to Claude Code as an MCP server:
Claude Desktop, the plugin and other clients: Use it with your coding agent.
Contents
- This page: What you get · What's new · Your first run · Pricing · Known limits · Privacy
- The manual: AI-Readme (the full text) · Your first ten minutes · How it works · Chains · The spend cap · Accessibility
- More: Troubleshooting · Agent skills · Personas · Contributing · Changelog
What you get
- Criteria before planning. Your request becomes a short list of yes/no checks the plan has to pass, written before anyone plans.
- Blind proposals and a recorded debate. Each lab proposes without seeing the others, then reads the rest with the names hidden and posts support, an objection or a merge. Every author then keeps, amends or withdraws its own proposal, on the record.
- Review and revision. A panel of judges checks the draft against the criteria, and a failed check sends it back for a revision. The planning chains judge in three layers. An objection that was never settled stays on the record; nothing is averaged away.
- A handoff for building.
HANDOFF.mdis written for whoever builds the plan: the acceptance checks and the instructions a coding agent works from, and in the planning chains the milestones too.
Every run writes a folder, runs/<id>/:
On what this does and doesn't claim. This repo publishes the mechanism: the chains, the seat rosters, the stage order. Exact effectiveness numbers are not measured yet. We did have a selected Council debate measured by frontier AI on the run that planned update 0.8.3: the plan improved in every measured rubric but one, and that one was that it got longer and harder to read. What the repo does, concretely, is make disagreement between models visible and recorded instead of averaged away - you can read who objected to what, who withdrew a proposal under argument, and who held their position.
What's new in 0.8.4
- The ladder is the shape of every shipped planning chain. Layer 1 revises in blocks, layer 2 is asked in visits, then layer 3 reads. There is no round limit, so a run ends on agreement, on a stall the top layer holds, or at the limit you type or when you stop it.
- A plan the panel did not agree on can be accepted as it stands.
council acceptrecords who accepted it, when and why, and which objections and late findings still stand. It agrees with no judge and marks nothing agreed. - You can give the judges a ruling in the middle of a run.
council ruling-addasks for a ruling; once you have approved it, the judges and the reviser read it from the next pass on. - Excerpts. The session that handles the run can add text from your project during the run: files it read, or passages a judge or a proposer asked for. Every later seat is shown the text.
- Seat personas. A seat can carry a name as its title or, with an optional feature, debate in the voice of that persona (PERSONAS.md).
- Gone: the experimental advice add-on. Changed: the default spending cap is $12 (it was $7), and Node.js 24 or newer is the supported version.
0.8.4 also changes things a script or a client may rely on. Read "Changes that can break a script or a client" in the CHANGELOG before you update.
What's new in 0.8.3
- Recursive Councils - "Plans within Plans within Plans"
Your first run
The quick-start chain, plan-mini-council (it is also the default chain), needs an OpenRouter API key (one account that reaches many labs' models) and an agent session of your own, such as Claude Code, that answers its writer stages. With an Anthropic API key as well, its Claude seats are called at Anthropic directly; without one they go through OpenRouter.
-
Keys. Put the keys in a file called
.envin the folder you run from:Add
.envto your.gitignore(andruns/if your ideas are private). -
Your task.
initwritestasks/my-first-task.md. Edit it into your own idea, in plain words: what you want, the constraints that matter, and what done looks like. -
Price it, then run it.
- The limit. The first command spends nothing. A paid run starts only after you type its spending limit on a screen;
--max-usd 12puts $12 there as the suggestion. - Pauses. A run can also pause and wait for an answer from your Claude Code session, or from you: the quick-start chain's writer stages (skeleton, build, revise and handoff) are such pauses, and so is a swing between two judge layers' objections.
- A stop at the limit. A run that stops at its limit keeps every stage it paid for.
npx the-high-council --resume runs/<id>continues it: the screen asks for a new total above what the run has counted, and the finished stages cost nothing the second time.
Use it with your coding agent
Runs as an MCP server (so a coding-agent session such as Claude Code can drive it) or as a CLI. Bring your own API keys. Nothing is resold, nothing is hosted for you, and your keys go only to the providers you choose, never to us.
-
Claude Code: the
claude mcp addcommand under Try it in 30 seconds adds the server. Or install it as a plugin, which registers the same server and also installs the skills inskills/: -
Claude Desktop: download and open
the-high-council-<version>.mcpbfrom Releases. -
Anything else: Other MCP clients · Plugin settings and keys · Standalone binaries
Pricing
What each shipped chain costs per run, in US dollars. council doctor prints the same expected figures; --dry-run prices your own task, and a longer task costs more.
- Expected is worked out by the code before anything is sent, from the shipped price table and the chain's own size estimates.
- The shipped planning chains have no round limit: there Expected assumes three top-layer reads, an assumption that a lower number you type with
--roundsreplaces. - A run can cost more than Expected. The limit you type is what stops it.
- Tested is what real runs cost; – means no run has been reported yet.
- Seats your Claude Code session answers cost $0 here, because they run on your own subscription.
With recursive councils, a tree at the default limits runs up to 12 councils (the root and 11 sub-plans): the root on the chain you name with --chain, each sub-plan on the chain you name with --child-chain, or on the root chain when you name none. With one chain throughout, which is the default, you pay for up to 12 runs of that chain; council tree start --dry-run prints the projection for your own task and chains, and the limit you type stops the tree.
Ran one of these chains? CONTRIBUTING.md says how to send us the figure.
Recursive Councils: Plans within Plans within Plans
Since 0.8.3. A milestone of the plan can get a Council of its own, and its milestones can again, so the runs form a tree under one root plan. You type the tree's spending limit once, and every sub-plan runs under it. A sub-plan inherits the acceptance criteria its parent delegates to it and cannot narrow the ones that hold for the whole tree. Approvals, and the decisions taken when a run gets stuck, are recorded, and the record says who made each: you, or the Claude Code session driving the tree.
Price a whole tree before anything is spent:
Without --child-chain the sub-plans run on the root chain, so a root on a High chain plans its sub-plans at High prices; the projection shows the price.
Known limits, stated plainly
What this version cannot promise is written down limit by limit in KNOWN-LIMITS.md: what the spending limit can and cannot hold, what has run only with mock seats or has not been verified, and what a run's record cannot know.
Privacy
This tool collects nothing. Stated plainly, not as a claim about quality:
- No telemetry, no analytics, no tracking of any kind, anywhere in this repo.
- The network calls this tool makes are to the AI provider APIs you configure with your own
keys (
ANTHROPIC_API_KEY,OPENROUTER_API_KEY, and so on), when you start a real run with a non-mock, non-external seat, and two public requests to OpenRouter that send no key and nothing of your project:council refresh-zdr-list(OpenRouter's list of zero-retention hosts), and the look-up of the hosts that serve one model (named by its id in the address), which theprice_raisetool makes and which a run makes at a terminal when a price refusal stops it (exit 24).council doctorandcouncil demomake zero network calls; both are implemented to read only local files and environment variable names. - The landing page in
docs/ships no JavaScript and loads no third-party resource - seetest/landing-page.test.js, which fails the build if either ever changes. - Everything a run produces - the task, the debate, the deliverable, the cost - is written to a
folder on your own disk (
runs/<id>/) and nowhere else. Deleting that folder deletes the record. Seesrc/spend.js's own documentation for why spend accounting is derived from those folders rather than kept in a separate log. - Personal data. A run sends your task to the providers your chain names. Keep personal data out of it where you can.
- The check. Every run checks the task for an email address, an IBAN or a card number before anything is sent, and stops by default when it finds one: nothing is sent or spent. To send it anyway, run the same command again with
--allow-pii <types>. It does not recognise names, addresses or other personal details. - What it shows. The stop and the logs name the kind of match and where it is (line and column), never the value: on a stop the lines are printed (over MCP they go to the start's log file) and no run folder exists yet; under
warnthe run goes on and writes the same lines to itsrun.log, and a tree member also to itsWARNINGS.md. - The law. If you have to send personal data, use providers that sign a data processing agreement with you. Whether a run complies with the GDPR depends on those agreements and on what your task contains; THC makes no claim about it.
- The check. Every run checks the task for an email address, an IBAN or a card number before anything is sent, and stops by default when it finds one: nothing is sent or spent. To send it anyway, run the same command again with
- If you opt in to the audit export (
"audit": true, and on automatically whenever apolicy.jsonexists), each run also writesaudit.jsonlinto its own folder: signed, hash-chained lines (each carries the previous line's hash) thatverifyAuditLoginsrc/audit.jschecks offline. Seat, cost and timing only, never task or prompt text. Format:docs/audit-schema.md.
Reporting a bug
Open an issue at github.com/muad-yasin/the-high-council-mcp/issues. For anything security-related, or that should not be public, write to [email protected] instead.
If this makes you money
The licence is MIT. You owe nothing, and that is the whole licence - nothing below changes it.
If The High Council ends up helping you build something that earns, I'd ask for 0.7% of what it earns. Not a fee, not a clause, not a subscription. A request between people who build things.
There is no reporting, no audit, no tracking, and nothing checks. No is a complete answer - use it, fork it, sell what you build with it, and never think about this section again. That is a fine outcome and it's why the licence says what it says.
If you'd rather say yes: pay what you think it's worth.
License
MIT. See LICENSE. The section above is a request, not a term of it.
Source: README.md at commit 12992f7
Tools
0Version history
8- v0.8.4LatestNov 14, 2026
- v0.8.3Oct 26, 2026
- v0.8.2Oct 7, 2026
- v0.8.1Oct 6, 2026
- v0.8.0Oct 2, 2026
- v0.7.9Sep 29, 2026
- v0.7.8Sep 26, 2026
- v0.7.7Sep 26, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts