Apache-2.0 v3.0.1 Python 3.10+ no telemetry

Ask your documents.
Check every answer.

Quire is an open-source answer engine you run yourself. Point it at a folder, ask in plain language, and get an answer where every claim links to the line it came from, or an honest "not in your corpus" when there's nothing to cite.

pipx install quire

Also on Homebrew, npm and Docker. Runs offline against a local model. No key, no account, no cloud.

~/work/handbook
$ quire index ./docs
  parsed 1,204 files · 18,332 spans · 6.2s

$ quire ask "why did we drop the v2 migration?"

Two reasons, and they were recorded separately. The rollback
plan was never finished[1], and the team that owned the
write path moved to billing in March[2].

  [1] docs/rfc/012-v2-migration.md:88   (2026-02-11)
  [2] notes/planning/q1-retro.md:14     (2026-03-02)

  2 sources · grounded · 0.9s · llama3.1:8b via ollama
12.4k

Stars on GitHub

340

Contributors across 41 countries

89

Releases since the first commit

0

Bytes of telemetry collected. There is no phone-home path in the code.

Bring your own everything

Ollamallama.cppvLLMOpenAIAnthropicSQLitepgvectorLM Studio Ollamallama.cppvLLMOpenAIAnthropicSQLitepgvectorLM Studio
Demo

Ninety seconds, no narration.

Index a folder, ask a real question, then watch it refuse one it can't source. This is a terminal cast, so not a video. It's text, so you can select it, it costs nothing to load, and it can't rot into a stale recording of an old release.

~/work/handbook
$ quire index ./docs  scanning ./docs  parsed 1,204 files · skipped 0 · 18,332 spans  index  .quire/index.db (14.2 MB) · 6.2s $ quire ask "why did we drop the v2 migration?" Two reasons, and they were recorded separately. The rollbackplan was never finished[1], and the team that ownedthe write path moved to billing in March[2].   [1] docs/rfc/012-v2-migration.md:88   (2026-02-11)  [2] notes/planning/q1-retro.md:14     (2026-03-02)   2 sources · grounded · 0.9s · llama3.1:8b via ollama $ quire ask "what was Q3 2019 headcount?" --strict   insufficient evidence  Nothing in this corpus supports an answer.  The index starts at 2021-04.   Closest matches:    docs/people/headcount-2021.csv   exit 2 $ quire serve  ui     http://127.0.0.1:7777  api    http://127.0.0.1:7777/v1  ready · 18,332 spans · nothing leaves this machine

Nothing was cut

That's a full session at real speed. No jump cuts hiding a thirty-second wait — the usual trick in a product video.

The refusal is the point

Most demos only show the question that works. The middle third of this one is the tool declining, because that's the behaviour worth trusting.

Run it yourself

Same four commands, your own folder. If it doesn't do this on your corpus, that's a bug worth filing.

Three commands

Learn it in about four minutes.

No graph builder, no orchestration DSL, no vector database to stand up first. A CLI, a config file and a local index.

quire index

Folders, git repos, URLs, or one of 30 community connectors. Layout-aware PDF parsing, OCR for scans, incremental re-index on change.

Reference →

quire ask

A cited answer in your terminal, or JSON for piping. Every claim carries a file, a line and a date. Exits non-zero when it can't ground the answer.

Reference →

quire serve

A local web UI and an HTTP API on port 7777. Same engine, same citations, nothing leaves the machine unless you configure a hosted model.

Reference →
Why it exists

Every RAG demo works. Almost none of them survive contact with a real repo.

Quire started as a weekend script that kept getting rewritten, because the same three things broke every time and none of them were the model.

Parsing quietly loses

A merged table cell, a two-row header, a scanned page at four degrees. The answer looks fine and the number is from the wrong column.

Nothing is ever superseded

The 2021 policy still ranks. Embeddings have no idea a document was replaced, and neither does a top-k retriever.

It never says "I don't know"

Ask about something not in the corpus and you get a fluent paragraph assembled from the nearest three files. This is the one that ends the pilot.

The part we care most about

It exits non-zero and makes nothing up.

Quire decomposes every draft answer into atomic claims and checks each one against its cited span before you see it. Unsupported claims get cut. If cutting leaves nothing, you get a refusal and the nearest files it found.

  • Span-level citations with file, line and commit date
  • Conflict flags when two sources give different numbers
  • --strict makes an ungrounded answer a build failure
  • Refusal calibration is a release gate, benchmarked every PR
refusal
$ quire ask "what was Q3 2019 headcount?" --strict

  insufficient evidence
  Nothing in this corpus supports an answer.
  The index starts at 2021-04.

  Closest matches:
    docs/people/headcount-2021.csv
    notes/planning/hiring-plan-2022.md

  exit 2

It runs on your laptop

The default configuration uses a local model through Ollama and stores the index in SQLite next to your files. No API key, no account, no network call. Pull the ethernet cable and it keeps working.

offline by defaultSQLite indexno account
Local first, not local only

Your documents never leave unless you say so.

Point it at a hosted model when you want the quality, keep it local when the content is sensitive, or split the two: local extraction and classification, hosted synthesis. It's a config line either way.

quire.toml
[model]
answer   = "ollama/llama3.1:8b"
verify   = "ollama/qwen2.5:3b"
# answer = "anthropic/claude-sonnet-5"  # if you'd rather

[index]
store    = "sqlite://.quire/index.db"
exclude  = ["**/node_modules", "**/.git"]

[answer]
strict   = true   # refuse rather than guess
The promise

Free, and structurally hard for us to make un-free.

Apache-2.0, irrevocably

Every release is licensed on publication. We cannot relicense what's already out, and a fork is always a legal option.

No open core

There is no paid tier holding the good features. Everything the maintainers run is in the repo you can clone.

No investors to answer to

Funded by sponsors and two grants. Nobody holds equity that needs a return, so nobody needs the license to change.

Questions from the issue tracker

Apache-2.0 with no CLA, which means we don't hold the rights needed to relicense contributed code even if we wanted to. There's no venture money and no equity to service. The honest risk isn't a rug pull, it's abandonment, so the governance page names who has commit access and what happens if the maintainers stop.

Yes, and it's the default. An 8B model handles extraction, verification and short synthesis well. Long multi-document synthesis is visibly better on a frontier model. The benchmark page publishes both numbers so you don't have to find out yourself.

Use them if you're building a framework's worth of things. Quire is opinionated and narrow: one job, one config file, a CLI you can pipe. It also works as a library alongside either of them. Several people index with LlamaIndex and answer with Quire.

SQLite comfortably to about 500k documents on a laptop. Past that, point store at Postgres with pgvector. The largest deployment we know of is a public records archive at 4.1 million documents.

None. There is no analytics dependency, no opt-out flag to trust and no phone-home path in the codebase. Search the repo for http and you'll find the model clients and the connectors you configured, nothing else.

About this site

None of this is real. The code is.

Quire is an invented project. This site is a design and copywriting exercise, open sourced under MIT so you can take the whole thing and ship your own.

What's fabricated

The project, the tool, the CLI. The 12.4k stars, the 340 contributors, the 89 releases and every benchmark number. The showcase entries, the quoted people, the sponsors and the grants.

All of it was written for this exercise. There is nothing to pipx install.

What's real

The design system, the markup, and the page structure. The visual language follows a published style spec (a "soft daylight notebook" aesthetic) kept where it counts: charcoal as the only dense element, display type at weight 500 only, 32px card radius, no shadows on content.

One departure. The spec puts a #ebf5ff canvas under near-white cards. Here it's inverted (white canvas, #f4f8fd cards) so the depth step survives and the blue moves into the wash behind the hero.

How it's built

Static HTML. One stylesheet. Under 200 lines of JavaScript for the mobile nav, the accordion, scroll reveals, the copy button, the counting statistics and the terminal cast. No framework, no build step, no dependencies.

Seventeen pages, including a 404 styled as the tool's own refusal state.

Take it

MIT licensed. Rename the project, replace the copy, keep the system. If you reuse the structure, delete the fabricated signals first: the star count, the contributor numbers, the benchmark tables, the sponsor list. Inflated community metrics are the open-source version of a fake logo wall.

Written by Claude Opus 5 via Claude Code. All prose original to that session.

Point it at the folder nobody has cleaned since 2023.

That's the honest test, and it takes about four minutes.

pipx install quire