Skip to main content
Quivr is an open-source engine for content that keeps arriving: news, feeds, mailboxes, posts. It stores incoming documents, processes them in the background so you can search them, and tells you when a new document matches a topic you follow. Your application talks to it over an HTTP API. Quivr is an engine, not a finished product: it has no screens or user accounts of its own. You build what your users see, such as a newsroom tool, a media monitoring service or a research assistant, and Quivr collects, searches and watches the content underneath. A small demo app, toured below, shows what you can build on it.

Quivr at a glance

Quivr calls plugins for the jobs that depend on your content. A plugin is a small web service that does one kind of job, such as reading PDF files, collecting a feed, preparing text for search or ranking results. Quivr ships with a plugin for each job, and you can swap them or add your own. Documents come in from your sources and your application, plugins do the jobs that depend on your content, and search results and alerts go out: In words:
  1. Sources are news feeds (RSS and Atom), Microsoft 365 mailboxes and lists on X, which Quivr collects on a schedule, and partners who push documents to it. Your application can send documents too.
  2. Quivr stores every version of every document, prepares it for search and checks it against your saved alerts.
  3. Plugins do the jobs that depend on your content: read files, collect sources, prepare text for search, rank results and decide alerts. Quivr asks them over HTTP. Only two jobs are required, preparing text for search and ranking results, and Quivr ships a plugin for each. The others are there when you need them.
  4. Your application searches Quivr and gets back ranked passages, each linked to its document and version.
  5. When a new document matches a saved alert, Quivr records the match with its reason. Your application reads it through the API, or receives it as a signed message (a webhook) at an address it runs, and decides how to tell people, by email or in your app.
  6. AI agents search Quivr through MCP, a standard way for agents to call tools, and quote what they find. Quivr returns passages; the agent writes the answer. See Connect an AI agent.

What goes in, what comes out

Take one news article: Harbour strike halts the ferry, with the line “The harbour strike stopped every ferry to the island on Friday.” It comes from a feed Quivr follows, or your application sends it. Quivr files it in a collection (a Corpus, in the API) as a document (a Record). The requests behind each row are in Add content, Search and Keyword alerts.

What you can do today

Collect content

Send documents one by one or in batches, as text or files such as PDFs. Or let Quivr pull them from RSS and Atom feeds, Microsoft 365 mailboxes and X lists, or receive them from a partner’s webhook.

Search it

Search by keywords, by meaning, or both. Each result names the document, the version and the exact passage it comes from.

Follow a topic

Save a keyword query or a plain-language description as an alert. Quivr records each document that matches, with the reason. Your application reads the matches through the API or receives them as signed webhooks.

Extend it with plugins

Add a file format, a source, a way to prepare text for meaning search or rank results, or an alert rule, in any language that serves HTTP.

What Quivr promises

Quivr confirms a document only once it has stored it, so an outage delays processing but never loses what it confirmed. Every write can be retried safely, a correction never overwrites history, and every search result is checked against stored content and your access. How Quivr works explains these promises and the parts behind them.

Who runs what

Quivr runs on servers you control, next to your application. Your users talk to your application, and your application calls Quivr. By default, Quivr itself sends document text nowhere outside your installation: the plugins it runs by default work there, and so does the model that lets it search by meaning. Quivr sends text out only through a plugin the operator turns on that calls an outside service: a hosted model for meaning search, a paid service that re-orders search results, or one that judges alerts described in plain language. Alerts carry identifiers, not text. Anything that holds an API key, your application or an AI agent, reads the documents that key allows, and an agent may pass them to the AI service it runs on.

What you need

  • To see it: nothing. The tour below shows the demo app.
  • To run it on your machine: Linux on x86_64 or an Apple Silicon Mac, Docker, Go, Python, a few command-line tools and about 1 GB of downloads. The Quickstart takes about fifteen minutes.
  • To build on it: a running Quivr and an API key from its operator. A key belongs to one organization, can be limited to some collections, and carries only the permissions your application needs, such as content:write to add documents, and content:read with search:query to search them.

Tour the demo

The repository includes a demo web app: a small monitoring dashboard built only on Quivr’s API. It is an example of a product someone could build on Quivr, not part of the engine. Its interface is in French; the screenshots below show three made-up English news feeds.
The demo's feed: a list of news headlines from three example feeds, alert tags under some headlines, and a side panel listing three alerts with their counts.

The feed (Fil). (1) Documents arrive from three feeds, newest first. (2) The alerts that caught a document are tagged under its title. (3) Each alert counts what it caught.

The demo's search results for 'windy weather ahead, sailors beware': a storm warning first, found by meaning, then less related articles.

A search with Idées proches (similar ideas) on. (1) The question, in plain words. (2) The best result, a storm warning, shares none of the question's words: Quivr found it by meaning. The demo marks such results Même sujet, autres mots (same topic, other words). (3) Meaning search returns the closest documents it has, so less related ones follow.

An open article in the demo, with the alerts that caught it and a correction notice showing the changed words.

An open document. (1) Why each alert caught it. (2) The feed corrected the article: the demo shows what changed, word by word, and can open the earlier text.

The demo's admin view: a summary saying documents become searchable in under a second, and a table of recent documents with the time spent at each processing step.

The Admin tab, read-only. (1) How long documents took to become searchable in this demo. (2) Each document's time at every step: received, cut into passages, searchable by keyword, prepared for meaning search, checked against alerts.

To run it yourself, follow the Quickstart prerequisites, install Node 22 or later, then run make demo from the repository and open http://127.0.0.1:5183. The demo’s README explains each tab. The pictured feeds and alerts are example data, and your local demo starts empty. To try it, add a news site in the Sources tab, or paste a document with Ajouter du texte (add a text), then set an alert.

What it does not do yet

Quivr searches text only: it does not search images, audio or video, and it does not read text inside images, so scanned documents stay unsearchable (there is no OCR). It has no user accounts or quotas of its own; those belong to your application. Known limits lists the rest, and Versions and compatibility says what stays stable across 2.x releases.

Next steps

Quickstart

Run Quivr locally and search your first article.

Core concepts

The few ideas you need to use the API.

How Quivr works

The parts inside Quivr, the path of a document and what Quivr promises.