> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nora.my/llms.txt
> Use this file to discover all available pages before exploring further.

# Nora Local

> Run the entire Nora platform on your own machine or infrastructure — as a desktop app, with Docker Compose, on Kubernetes, or from an air-gap tarball.

**Nora Local** is the self-hosted side of Nora. It ships the same server binary as the SaaS platform, the same SPA, and the same MCP surface, packaged four different ways so you can pick the shape that matches how your team already runs infrastructure.

<Note>
  **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.
</Note>

## Pick a form factor

Every form factor runs the same stack. The right one depends on where Nora needs to live.

<CardGroup cols={2}>
  <Card title="Desktop app" icon="laptop" href="/local-app/desktop/install">
    Right for a single laptop. Nora runs as a native window with a tray icon, and it manages the Docker stack for you.
  </Card>

  <Card title="Docker Compose" icon="docker" href="/local-app/deploy/compose">
    Right for a single server or VM. One `docker compose up -d` against the shared compose file.
  </Card>

  <Card title="Kubernetes (Helm)" icon="dharmachakra" href="/local-app/deploy/kubernetes">
    Right for an existing cluster with ingress, TLS, and private registries. The Helm chart deploys the same five services.
  </Card>

  <Card title="Air-gap tarball" icon="box-archive" href="/local-app/deploy/airgap">
    Right for zero-internet hosts — offline hospitals, defence, regulated networks. All images bundled in one archive.
  </Card>
</CardGroup>

## What's running under the hood

Every form factor boots the same five services on an internal Docker network.

* **`nora-server`** is the Rust binary that hosts the API and serves the SPA.
* **`nora-llm-bridge`** is 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 setting `NORA_VECTOR_STORE=qdrant`.

The default HTTP port is `8090`, controlled by `NORA_HOST_PORT`.

## What every install includes

* **Automatic migrations on boot.** `NORA_RUN_MIGRATIONS=1` is the default. The first `up` runs every SQL migration; subsequent boots no-op when nothing has changed.
* **The on-prem flavor gate.** `NORA_DEPLOY_FLAVOR=onprem` unlocks 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_FILE` in the compose, Helm, or air-gap paths.
* **An optional air-gap boot probe.** Set `NORA_AIRGAP=1` and 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

<CardGroup cols={2}>
  <Card title="Install the desktop app" icon="download" href="/local-app/desktop/install">
    macOS, Windows, and Linux downloads plus the one-time first-launch prompt.
  </Card>

  <Card title="Docker Compose" icon="docker" href="/local-app/deploy/compose">
    Run the same compose file directly on a server.
  </Card>

  <Card title="Kubernetes (Helm)" icon="dharmachakra" href="/local-app/deploy/kubernetes">
    Ingress, TLS, private registry, and license overrides.
  </Card>

  <Card title="Air-gap tarball" icon="box-archive" href="/local-app/deploy/airgap">
    Install on a machine with zero internet access.
  </Card>

  <Card title="MCP on Nora Local" icon="plug" href="/local-app/mcp">
    Point Claude Code, Codex, or Cursor at your local MCP endpoint.
  </Card>
</CardGroup>
