atrium

The command line

Ten commands, and a setup wizard that asks five questions.

Everything the HTTP API does, the command line does too — and a few things only it does, like the setup wizard and the diagnostics.

atrium --help

Setting up

atrium init

The wizard looks at the machine, asks five questions, and shows you what it chose before it writes anything.

QuestionWhat it decides
The vector storeSQLite (a local file), Qdrant, or Postgres with pgvector. The first two ask for a host and a port.
The embedding providerA local server, OpenAI, another OpenAI-compatible server, or the in-process embedder from the local extra.
The modelPicked from the list the endpoint actually serves, with its dimension beside it. The models on that server that are not embedding models are named separately, so they cannot be chosen by accident.
OCROff, or a provider (RapidOCR, Tesseract) and a language.
RerankingOff, or a provider and a model.
VisionOff, or a model.

Every answer is a list you move through with the arrow keys and confirm with Enter. Nothing that can be picked has to be typed, and nothing is typed that has a good default.

Then the review: five lines describing the installation — store, embeddings, OCR, rerank, vision — the keys this run set, and a count of the ones already in the file. From there you can

set KEY VALUE   change a value
unset KEY       remove a key
edit            open the file in $EDITOR
save            write it and continue

Only then is the file written, and it is verified with a real embedding call — a model listing proves the server is up, not that the model loads or that its dimensions are the ones you configured.

Flags: --env PATH (where to write it), --non-interactive (detect and pick the best available, no questions — for CI), --yes (answer yes to every setup action it offers), --force (overwrite without asking), --json (print the result as JSON, with secrets redacted).

Checking the installation

atrium doctor

It probes each dependency and says what it found and what to do about it:

Probing services…
  embedder   OK  http://localhost:11434/v1/models
  model      OK  bge-large:latest
  vector db  dimension mismatch  collection 'documents' exists with dim
  1024, but config requests 768
    the store holds vectors the model cannot use — start a new one
    (`atrium init`) and re-ingest

It also reports a permissive security posture — an empty API_KEY, an empty ALLOWED_MIME_TYPES — as warnings, not failures. It exits non-zero when something is actually broken.

atrium validate checks the .env on its own, and atrium configure --key EMBED_MODEL --value bge-large changes one value.

Using it

atrium ingest ./docs/                  # a directory or a file
atrium search "retention policy"       # query the corpus
atrium reingest ./doc.pdf --doc-id doc --chunking-mode context_rich
atrium demo                            # ingest one document, search it back
atrium serve                           # the HTTP API
atrium version

atrium search takes --top-k, --rerank / --no-rerank and --json. atrium ingest takes --doc-id, --chunking-mode (auto, balanced, precise, context_rich, custom), --chunking-config and --verbose.

atrium demo is the shortest path from nothing to a working search: it ingests one document into the configured store and searches it back. It needs the embedder, and nothing else.

When something is not set up

A missing service is a sentence and a way out, never a traceback:

The embedding endpoint at http://localhost:11434/v1 is not answering.
  Start it, or pick another endpoint: `atrium init`
  For a local server: `ollama serve`, then `ollama pull bge-large`

The commands exit non-zero. The HTTP API answers 503 with the same message, so a client can act on it.

Atrium Cloud

Don't want to run it yourself? Atrium Cloud is coming.

It is not here yet — the list is what there is until it is. The library is free, MIT licensed, and yours either way.

On this page