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 --helpSetting up
atrium initThe wizard looks at the machine, asks five questions, and shows you what it chose before it writes anything.
| Question | What it decides |
|---|---|
| The vector store | SQLite (a local file), Qdrant, or Postgres with pgvector. The first two ask for a host and a port. |
| The embedding provider | A local server, OpenAI, another OpenAI-compatible server, or the in-process embedder from the local extra. |
| The model | Picked 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. |
| OCR | Off, or a provider (RapidOCR, Tesseract) and a language. |
| Reranking | Off, or a provider and a model. |
| Vision | Off, 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 continueOnly 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 doctorIt 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-ingestIt 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 versionatrium 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.