Skip to content

Installation

cairn is a Python project managed with uv. The engine ships as one wheel (cairn); each operator pack is its own wheel in the same uv workspace.

  • Python 3.12+
  • uv
Terminal window
git clone https://github.com/cairndev-sh/cairn.git
cd cairn
uv sync --extra dev # engine + workspace operators + dev deps

uv sync builds a fresh environment from the lockfile; it is enforced by CI to stay working. The dev extra brings test and lint tooling.

Terminal window
uv run cairn doctor # preflight: packs, profile bindings, env, services
uv run cairn ls # list what is installed

doctor is the fastest way to confirm the install is healthy — it checks that packs load, profile bindings resolve to registered operators, and required services are present. See the CLI reference.

Enable only what you need. The most commonly used:

ExtraAdds
ragretrieval-augmented generation (embedding + parsing)
rag-sqlite-veczero-config local vector store (also: rag-qdrant, rag-pinecone, rag-pgvector)
piiPresidio-backed PII detection for dataset gates
runtime-temporalthe durable Temporal runtime
runtime-dboslightweight durable execution (no server)
runtime-sqlite / runtime-postgrescross-restart human-in-the-loop checkpointing
storage-postgresPostgres run/state store
telemetryOpenTelemetry export
authargon2 password hashing for server auth
tuithe cairn remote console terminal UI
oauth / infisical / natsOAuth broker, Infisical secrets, NATS inbox
productionthe production bundle: Temporal + Postgres + real dataset-check and eval operator deps in one extra
Terminal window
uv sync --extra dev --extra rag --extra runtime-temporal

The engine also ships as a container (Dockerfile.engine), published as ghcr.io/evs-cmd/cairn-engine. The full server stack — engine, Postgres, Caddy, and optional Temporal / MLflow / LLM-gateway / observability services — runs from one compose file with profile toggles: see Deployment.

Terminal window
uv run pytest -q -m "not dbos" # dbos-tier tests need: uv sync --extra runtime-dbos