Introduction
Archive keeps all your stuff in one place, in types you define, on a server you control.
Archive is one Go binary on top of Postgres. It pulls in mail, files and records from the places they live, keeps every original untouched, and maps them into your own types with a local model. Every value remembers where it came from and how sure Archive is about it. You reach the result from the web app, the HTTP API, the command line, or an AI assistant over MCP.
How it fits together
- Raw layer. Connectors and uploads land items in
rawexactly as they came, with their source, external id and content hash. - Types. The ontology is a versioned JSON spec of types and fields. A library of built-in types (money, email, phone, IBAN, address and more) normalizes and validates values on every write.
- Intake. A model behind any OpenAI-compatible endpoint reads raw items and files into your types, with a confidence score per field.
- Records. Objects of your types, stored as JSONB with their provenance and links.
- Spaces. Every record, file and source belongs to a space. Users and tokens are Postgres roles, and row-level security decides what each of them can see.
Where to start
- Install Archive with one command, with Docker Compose, or against your own Postgres.
- Read the concepts to learn about types, changes, records and spaces.
- Connect your sources and set up intake with a local model.
- Look things up in the CLI, HTTP API and MCP references.
- Deploy to Kubernetes or a cloud with the Helm chart and Terraform modules.
Surfaces
| Surface | Where | Signs in with |
|---|---|---|
| Web app | /app/ | Magic link, passkey or an OIDC provider |
| HTTP API | /api/ and /auth/ | Session cookie or Authorization: Bearer token |
| MCP | /mcp over HTTP, or archive mcp over stdio | Bearer token |
| CLI | archive on the server | Acts as the first owner, or -as email |