Corpus is a free, open source ai interaction & interfaces project written in Python and released under AGPL-3.0. It has 13 GitHub stars, 0 forks and 25 open issues, and was last pushed 3 months ago. On this registry it ranks #76 of 76 tracked projects in AI Interaction & Interfaces, with 5 head-to-head comparisons available.

What is Corpus?

Corpus is an open-source, self-hosted document Q&A system that ingests PDFs and web pages, answers natural-language questions with citations back to source text, and is aimed at teams and individuals who need grounded answers across a private document collection rather than across the public web.

What it is

Corpus is a Python application — FastAPI on the backend, React with Vite on the frontend — that builds a retrieval and question-answering layer over documents a user uploads. Documents are stored in S3-compatible storage (LocalStack when run locally), indexed for full-text search in Elasticsearch, tracked in PostgreSQL, cached in Redis, and processed through RabbitMQ queues orchestrated by Temporal workflows. Answers are generated by large language models and always carry citations linking back to the source text, so a reader can verify the passage an answer came from.

The concrete problem it replaces is the manual work of searching a document collection by hand. Instead of opening PDFs one at a time and grepping for a term, a user asks a question in natural language and receives an answer assembled from the relevant documents, with workspace and document-set organisation keeping unrelated material out of the retrieval scope. It also replaces ad-hoc one-off summarisation by providing cross-correlation across documents and automatable workflows whose results can be viewed and exported.

Key capabilities

  • Upload PDFs and web pages as source material.
  • Ask questions in natural language and receive answers with citations linking back to source text.
  • Organise documents into workspaces and document sets to scope retrieval.
  • Cross-correlation: compare answers across documents.
  • Workflow creation and execution, with output that can be viewed and exported.
  • Pluggable LLM providers: OpenAI (GPT-4o, GPT-4), Anthropic (Claude 4, Claude 3.5), Google (Gemini), and xAI (Grok).
  • Embedding providers from OpenAI and Voyage AI.
  • Full local stack ships with Docker Compose, including Temporal UI at http://localhost:8080 and the RabbitMQ management interface at http://localhost:15672.

Who uses it and how

  • Teams handling a private document corpus who cannot send material to a third-party hosted Q&A service and therefore run the stack on their own infrastructure.
  • Reviewers comparing how different documents treat the same question, using the cross-correlation demo path to evaluate sources side by side.
  • Operators building repeatable pipelines: upload once, then define workflows that run over the corpus and export results instead of re-asking manually.
  • Developers extending the retrieval or model layer, running the API locally at http://localhost:8000 with interactive docs at http://localhost:8000/docs and the frontend at http://localhost:3001.
  • Single users with Docker and Docker Compose installed who want the whole stack up without provisioning each service individually.

Getting started

The documented path is to clone https://github.com/noetic-sys/corpus.git, copy backend/.env.example to backend/.env and vite/.env.example to vite/.env.development, then run docker-compose up, which starts the frontend, API, Temporal UI, and RabbitMQ management interface. Running services individually instead requires bringing up the infrastructure services first and then poetry install, poetry run alembic upgrade head, and poetry run uvicorn api.main:app --reload in backend, plus npm install and npm run dev in vite.

How it compares

No comparable or paid products are named anywhere in the supplied facts, and the repository carries no topics, so no honest comparison to alternatives can be drawn here. On the evidence available, Corpus stands alone in this registry; readers should treat any similarity to other document-Q&A tools as unverified rather than documented.

When to use it — and when not to

A self-hoster must operate a substantial stack: PostgreSQL, Elasticsearch, RabbitMQ, Temporal, Redis, and S3-compatible storage, plus API credentials for whichever LLM and embedding providers are chosen, since no bundled or local model is documented. It licenses under AGPL-3.0, which is a copyleft licence that will not suit teams intending to embed the code in a closed product. The project also shows signals worth weighing before adoption: 13 stars, 0 forks, 25 open issues, an empty topic list, and no tags, package name, or published image in the README, so setup depends on building from source via Docker Compose rather than installing a released artifact.

project readme (upstream, from github) — read inline

Corpus

Document Q&A powered by AI. Upload documents, ask questions, get answers with citations.

Try Corpus

Demo

For higher quality demos, see assets/demo-large.gif.

Video Walkthroughs

See demos for video tutorials:

  • Getting Started - Upload documents and ask questions
  • Cross-Correlation - Compare answers across documents
  • Workflow Creation - Create automated workflows
  • Workflow Output - View and export results

What it does

  • Upload PDFs and web pages
  • Ask questions in natural language
  • Get answers with citations linking back to source text
  • Organize documents into workspaces and document sets

Local Development

Prerequisites

  • Docker & Docker Compose
  • Python 3.11+ (for running outside Docker)
  • Node.js 20+ (for running outside Docker)

Quick Start

git clone https://github.com/noetic-sys/corpus.git
cd corpus

# Copy environment files
cp backend/.env.example backend/.env
cp vite/.env.example vite/.env.development

# Start everything
docker-compose up

This starts the full stack:

Running without Docker

If you prefer to run services individually:

# Start just the infrastructure
docker-compose up postgres postgres_temporal rabbitmq corpus-redis elasticsearch localstack temporal temporal-ui

# Run backend
cd backend
poetry install
poetry run alembic upgrade head
poetry run uvicorn api.main:app --reload

# Run frontend
cd vite
npm install
npm run dev

Architecture

Component Purpose
FastAPI API server
React + Vite Frontend
PostgreSQL Primary database
Elasticsearch Full-text search
RabbitMQ Message queue
Temporal Workflow orchestration
Redis Cache
S3 (LocalStack locally) Document storage

Supported Models

LLM Providers

  • OpenAI (GPT-4o, GPT-4, etc.)
  • Anthropic (Claude 4, Claude 3.5, etc.)
  • Google (Gemini)
  • xAI (Grok)

Embedding Providers

  • OpenAI
  • Voyage AI

Contributing

See CONTRIBUTING.md.

License

AGPL-3.0 - see LICENSE.

Copyright (C) 2025 Noetic Systems, LLC

Frequently asked questions

Is Corpus free to use?

Corpus is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Corpus do?

Ask once, get answers across every document

What is Corpus written in?

Corpus is primarily written in Python. Its source is publicly available at https://github.com/noetic-sys/corpus, and it has 13 GitHub stars.