Status (2026-09) — The desktop app is at
0.1.0. Docker Compose, Helm, and the air-gap tarball are all production paths shipped from the same release pipeline. Current builds are unsigned, so macOS Gatekeeper and Windows SmartScreen ask once on first launch. Code-signing is in progress.Pick a form factor
Every form factor runs the same stack. The right one depends on where Nora needs to live.Desktop app
Right for a single laptop. Nora runs as a native window with a tray icon, and it manages the Docker stack for you.
Docker Compose
Right for a single server or VM. One
docker compose up -d against the shared compose file.Kubernetes (Helm)
Right for an existing cluster with ingress, TLS, and private registries. The Helm chart deploys the same five services.
Air-gap tarball
Right for zero-internet hosts — offline hospitals, defence, regulated networks. All images bundled in one archive.
What’s running under the hood
Every form factor boots the same five services on an internal Docker network.nora-serveris the Rust binary that hosts the API and serves the SPA.nora-llm-bridgeis a Node subprocess for the Claude Agent SDK, Ollama, and OpenAI-compatible adapters.postgres(pgvector/pgvector:pg16) stores application state and, by default, vector embeddings.redis(redis:7-alpine) backs the working-memory cache. The stack falls back to Postgres when Redis is absent.qdrant(qdrant/qdrant:v1.12.4) is an optional vector store you can switch to by settingNORA_VECTOR_STORE=qdrant.
8090, controlled by NORA_HOST_PORT.
What every install includes
- Automatic migrations on boot.
NORA_RUN_MIGRATIONS=1is the default. The firstupruns every SQL migration; subsequent boots no-op when nothing has changed. - The on-prem flavor gate.
NORA_DEPLOY_FLAVOR=onpremunlocks SDK and Local execution modes in the UI, and enables free-tier gating. - A free tier out of the box. With no license key, you get 1 workspace, 3 flows, and 100 daily invokes. Activate a paid plan by pasting the license key into Settings on the desktop app, or by setting
NORA_LICENSE_KEY/NORA_LICENSE_FILEin the compose, Helm, or air-gap paths. - An optional air-gap boot probe. Set
NORA_AIRGAP=1and the server refuses to boot (exit code 78) if it can still reach the public internet. Use this to verify your isolation before Nora starts taking traffic.
What Nora Local does not run
- The self-serve billing surface — plans, portal, subscribe, and cancel do not exist on-prem. Billing follows your license contract.
- The SaaS improvement loop — the Verify & Improve budget is bundled with the enterprise license, not billed per-workspace.
Next
Install the desktop app
macOS, Windows, and Linux downloads plus the one-time first-launch prompt.
Docker Compose
Run the same compose file directly on a server.
Kubernetes (Helm)
Ingress, TLS, private registry, and license overrides.
Air-gap tarball
Install on a machine with zero internet access.
MCP on Nora Local
Point Claude Code, Codex, or Cursor at your local MCP endpoint.