> ## 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.

# First launch

> The install wizard, the tray icon, the app menu, and what happens the second time you open Nora.

The first time you open the desktop app, it runs a **12-step install wizard**. From the second launch onward, if the stack is already up, the app skips the wizard entirely and drops you straight into the Nora SPA.

## The install wizard

Click **\[Install Nora]** on the landing screen. The wizard renders a checklist you can watch line by line — expand **Show details** to see the raw `docker compose` log underneath.

### The 12 steps

| # | Step | What it does |
| - | - | - |
| 1 | Check Docker Desktop | Runs `docker info` and refuses to continue if Docker isn't running |
| 2 | Pull database image (postgres) | Pulls `pgvector/pgvector:pg16` |
| 3 | Pull cache image (redis) | Pulls `redis:7-alpine` |
| 4 | Pull vector image (qdrant) | Pulls `qdrant/qdrant:v1.12.4` |
| 5 | Pull LLM bridge image | Pulls `nora-llm-bridge` |
| 6 | Pull Nora server image | Pulls `nora-server` |
| 7 | Start database | Starts the Postgres container |
| 8 | Start cache | Starts the Redis container |
| 9 | Start vector store | Starts the Qdrant container |
| 10 | Start LLM bridge | Starts the LLM bridge |
| 11 | Start Nora server | Starts `nora-server` and runs any pending SQL migrations |
| 12 | Wait for server to answer | Polls `GET /api/v1/system/deploy` until the server answers with `flavor: onprem` |

The pull phase usually takes 2 – 5 minutes on a reasonable connection and is near-instant on a rebuild. If the images cannot be pulled — a private network or a throttled registry — Docker falls back to building from source, which takes 15 – 30 minutes on the first run.

<Tip>
  The final step waits for the server to answer with `flavor: onprem` on purpose. If a different service happens to be answering on the same port, the app treats it as a **port conflict** rather than silently opening someone else's app. See the [Settings](/local-app/desktop/settings) page to change the port.
</Tip>

## The tray icon

Once Nora is installed, it lives in the tray — the menu bar on macOS, the system tray on Windows, or the notification area on Linux. Right-click for these actions:

* **\[Open Nora]** brings the main window forward.
* **\[Stop stack]** runs `docker compose stop`. Configuration and data volumes stay intact.
* **\[Restart stack]** stops then starts the stack.
* **\[Quit Nora]** quits the desktop app. Containers keep running unless you stop them first.

The tray icon uses macOS template mode, so it inverts correctly under dark and light menu bars.

## The app menu

The **Nora** submenu lives in the top menu bar on macOS and in the window menu on Windows and Linux. It has four things:

* **\[About Nora]** shows the version and build info.
* **\[Check for Updates…]** and **\[Import Update…]** open the update popup. See [Updates](/local-app/desktop/updates).
* **Services**, **Hide**, and **Quit** are the standard macOS entries.

The **Edit** submenu wires up Undo, Redo, Cut, Copy, Paste, and Select All. It's there so the license key and port inputs behave like every other native app.

The **Window** submenu covers Minimize, Maximize, and Close Window.

## Second launch

On subsequent launches, the app calls `docker info` and `GET /api/v1/system/deploy` before it paints anything. When the stack is already up and healthy:

* The setup HTML never flashes on screen.
* The window opens directly on the SPA URL (`http://localhost:${NORA_HOST_PORT}`).
* The setup screens — landing, wizard, dashboard — only reappear when the stack is stopped or when you open **Settings**.

If the stack is installed but stopped, you land on the small **Dashboard** screen with an **\[Start Nora]** button. One click starts the containers and the app takes you to the SPA once the health probe returns.

## Next

<CardGroup cols={2}>
  <Card title="Settings" icon="sliders" href="/local-app/desktop/settings">
    License key, host port, reset, and full uninstall.
  </Card>

  <Card title="Updates" icon="arrows-rotate" href="/local-app/desktop/updates">
    Update the app shell and container images, together or independently.
  </Card>
</CardGroup>
