Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Insight

Insight is an experimental, local-first research assistant for journalists. Build collections of PDFs, ask questions in plain language, and get answers that cite their sources. You can also share a collection directly with colleagues, without uploading it to a central service.

Your documents, your choices

Your PDFs, extracted text, and search index are stored on your computer. Sharing a collection gives its recipients their own copies. When you use chat, your configured AI provider receives the conversation and the document excerpts retrieved to answer your questions—not access to your document library. You can choose a hosted provider or a model server running on your own machine.

Explore the guide

  • Getting Started: install Insight and configure a model.
  • Collections: import documents and share an investigation.
  • Chat: ask questions and check the answers.
  • Architecture: understand how Insight works and why it is built this way.

Insight is a research project, not a production-ready records management or security solution.

Getting Started

Download

Choose the installer for your computer:

  • macOS: .dmg, using aarch64 for Apple silicon or x64 for Intel Macs.
  • Windows: .exe, or .msi if your IT department prefers it.
  • Linux: .deb for Ubuntu/Debian, .rpm for Fedora/Red Hat, or .AppImage for other distributions.

Choose an AI provider

Insight supports hosted services such as OpenAI, Anthropic, and Gemini, as well as local model servers such as Ollama and llama.cpp. Configure a provider and model in Settings before starting a conversation.

The provider processes your conversation and the document excerpts Insight retrieves to answer your questions. Choose a provider and model that meet your newsroom’s confidentiality requirements; a local model server avoids sending that material to a third-party service.

Collections

Use collections to organize documents by investigation, beat, or source.

Scanned documents

Insight extracts the text already embedded in PDFs. Scanned pages without embedded text can be stored and shared, but their contents will not be searchable; Insight does not currently perform OCR.

Sharing and access

Sharing a collection generates a ticket. Anyone with that ticket can access the collection, so treat it like a password.

Peers exchange documents and extracted text directly, without a central document server. Recipients get full copies that work offline; search indexes and conversations remain local. Peers must be able to connect to exchange data.

Access cannot be revoked. A recipient keeps any data already received and may continue syncing with other peers. Share sensitive collections only with people you trust, and create a new collection if you need to restrict future access.

Chat

Ask questions in plain language, then use follow-ups to narrow a search or examine a result in more detail.

Questions you can ask

  • “What was the total budget for 2023?”
  • “Find all mentions of Company X.”
  • “Compare the 2020 and 2023 assessments.”
  • “Summarize the main findings of these reports.”

Check before publishing

AI-generated answers can be incomplete or wrong. Use the citations to find the underlying documents, then verify important facts and quotations against the originals.

Conversations are stored only on your computer. Sharing a collection shares its documents, not its chats. See Getting Started for what your AI provider receives.

Architecture

Insight is a desktop application rather than a hosted document service. Its architecture is designed around two goals: keeping source documents under the user’s control and letting each newsroom choose how AI inference and collaboration should work.

Why a local desktop application?

Tauri provides the cross-platform desktop shell, Svelte provides the interface, and Rust handles document processing, storage, search, sync, and chat orchestration. A desktop application can work directly with local files and continue background processing without requiring an application server. Tauri uses the operating system’s webview instead of shipping a separate browser runtime.

How documents become searchable

MuPDF extracts the existing text from PDFs while preserving its page locations. milli builds a local full-text keyword search index using BM25. Search therefore runs on the user’s machine and does not require uploading the collection.

Original documents are immutable, content-addressed blobs. Extracted text is a separate, derived artifact: it can be regenerated or replaced when extraction improves without changing the source document. Content addressing also lets peers verify that they received exactly the data they requested.

How Insight talks to models

Insight uses rig to provide a consistent agent and tool-calling interface across model providers. When someone asks a question, the agent uses local tools to search the collection and read relevant passages, then asks the configured model to synthesize an answer from that evidence.

The model provider receives the conversation and retrieved excerpts. It does not receive direct access to the document library or search index. Hosted models and local model servers use the same research workflow, allowing users to choose between managed inference and keeping model processing local.

How collections sync

Collections use iroh for peer-to-peer replication. Replicated collection metadata records which documents and extractions belong to a collection; content-addressed storage transfers their actual bytes. Direct peer connections and NAT traversal allow colleagues to exchange data without running a central document server.

Recipients get full copies of the documents and extracted text, then build their own search indexes. This makes each copy usable offline and avoids depending on one peer remaining online. Conversations never sync.

A sharing ticket grants access to a collection rather than identifying an account on a central service. That enables direct collaboration, but it also means access cannot be revoked after a ticket is shared.