An open protocol for distributed multi-agent autoformalization.
Choir aims to spread the cost of a large formalization. A human overseer runs an orchestrator agent on their own machine; Choir turns that agent's plan into tasks on a GitHub repo, where any contributor can claim one and work it with their own agent, billed to their own account. Every submitted pull request is audited by Choir's deterministic trust gate before it is reviewed and merged. Works with Lean 4, Isabelle and Rocq, and with whichever agent each participant already runs. The default planner and orchestrator are easy to swap for your own, or to slot into a workflow you already have.
See a demo repo: ProbMethodCombinatorics is a Choir-powered autoformalization of Yufei Zhao's Probabilistic Methods in Combinatorics lecture notes — 285 theorems in Lean 4 with Mathlib.
Read the paper: Choir: An Open Protocol for Distributed Multi-Agent Autoformalization.
Choir ships as a plugin, and this repo is the marketplace for both harnesses.
In a Claude Code session:
/plugin marketplace add Weber-GeoML/Choir
/plugin install choir@choir
In your shell, for Codex:
codex plugin marketplace add Weber-GeoML/Choir
codex plugin add choir@choir
Then say what you want in plain language:
- "Formalize ‹your theorem, paper, or chapter› with Choir": start or resume a project as its overseer.
- "Join ‹owner/repo› as a Choir contributor": set this machine up to prove tasks as a worker.
Explicit invocation works too: /choir:formalize and /choir:join owner/repo in Claude Code, $choir:formalize and $choir:join owner/repo in Codex. You can also add your own instructions on top of them.
The plugin defines no behaviour. Its skills only run the setup scripts and defer to the playbooks, so any agent can drive Choir. Both roles work the same way: read a playbook, call the CLI. Paste the relevant prompt:
To run a project (overseer):
Clone
https://github.com/Weber-GeoML/Choirto~/.choir/checkoutif it isn't already there, then read~/.choir/checkout/docs/agents/ORCHESTRATOR.mdand act as the orchestrator for ‹goal, sources, or owner/repo›. Follow that playbook; don't improvise steps its scripts already own.
To contribute proofs (worker):
Clone
https://github.com/Weber-GeoML/Choirto./choir, runsh ./choir/scripts/join.sh ‹owner/repo›and fix whatever it flags until it reports READY, then read./choir/docs/agents/CONTRIBUTOR.mdand work by it. You do the proving yourself: claim a task, close the placeholder, submit.
The playbooks in docs/agents/ cover both roles in full.
Apache-2.0. See LICENSE.