A weekend script
that kept getting rewritten.
Quire started in March 2024 as one file that dumped a folder into a model and hoped. It worked about 70% of the time. Another way of saying it didn't work. The rest has been figuring out the other 30%.
A wrong number, and no way to tell.
One of us shipped a report with a retention figure pulled from an internal wiki page that had been superseded four months earlier. Nobody caught it for a quarter.
The page wasn't wrong when it was written. It was wrong when it was read, and nothing in the tooling could tell the difference. That gap is the whole project.
Every tool tried at the time made it worse. They were excellent at producing a fluent paragraph from a stale page and useless at mentioning the page was stale. So: cite everything, verify before showing, and refuse when there's nothing to cite.
"Where did this come from?"
If a tool can't answer that in one keystroke, it isn't finished. That's why citations shipped before a chat interface, and why the chat interface eventually got deleted.
First commit
14 March 2024
Licence
Apache-2.0 from v0.4 onward. v0.1–v0.3 were MIT and remain so.
Maintainers
Five, three with commit access to main
Funding
Sponsors and one NLnet grant. No investors, no company. The numbers.
Who decides, and how you'd know.
Maintainers
Five people. Three hold commit rights to main; two review in specific areas. Names, areas and time zones are in MAINTAINERS.md, along with the date each was added.
How someone becomes one
Sustained review work, not commit volume. Nominated by an existing maintainer, confirmed if nobody objects within a week. Two of the five arrived this way, both after about a year of reviewing other people's PRs.
How decisions are made
Small things: whoever reviews. Anything changing defaults, adding a dependency or touching the licence goes through an RFC in Discussions, open at least fourteen days.
How ties break
They don't, usually. A proposal without consensus doesn't ship. When a decision is genuinely forced, the maintainer who owns that area calls it and writes down why.
What we'd tell you about
A licence change, a new subprocessor, a maintainer leaving, a security incident, or funding falling below one quarter of runway. In the repo and in the release notes, not in a blog post nobody reads.
The succession plan
Publishing keys for PyPI and npm are held by two maintainers and a third party who isn't otherwise involved. If the maintainers vanish, someone can still cut a security release. This is the most boring paragraph on the site and it's the one that matters most in five years.
Five positions we'd defend in a thread.
01 — A citation is a feature, not a footnote
An answer you can't verify is a rumour with good grammar. We'd rather ship a slower answer that survives scrutiny.
02 — "I don't know" is a valid output
Refusal is a capability. Most of the evaluation budget goes into teaching the system when to decline, and it's the hardest thing here.
03 — Retrieval is the product
Models improve on someone else's schedule. Parsing, ranking and verification improve on ours, so that's where the effort goes.
04 — The default must work offline
A tool that needs a network call to be useful isn't yours. Local models, local index, no account — the hosted path is an option, never the assumption.
05 — Small and permanent beats big and funded
We'd rather this exist unchanged in ten years than grow fast enough to need a business model that eats it.
And one we changed our mind on
v1 shipped a chat interface because everything did. It was wrong. People don't want a conversation, they want a command that returns something they can pipe, so v2 deleted it and became a CLI. Weekly usage tripled.
How it got here
Read the governance file, not this page.
A marketing page can say anything. GOVERNANCE.md has a git history, and you can see every time it changed.