---
title: "First-Run Wizard"
url: "https://control.actana.ai/docs/panel/first-run"
description: "A Panel with zero Cores opens in a wizard that walks the first install and pairing — and unlocks the app when one lands."
updated: 2026-09-01T16:01:54+00:00
---

A Panel that knows no Cores shows the pairing wizard, and a Panel that knows one shows the app. New in 0.4.3.

**The condition is the count, not the calendar.** This is not a first-run flag or a "seen it" preference. It is a live read of the Core registry: a fresh Panel lands in the wizard, and a Panel whose last Core was removed goes back to it — the same rule answering both, because they are the same state. There is nothing to reset and nothing to migrate.

**It replaces the shell rather than covering it.** At zero Cores the app — top bar, project rail, settings — does not mount at all. There is no route to type, no escape key, and no empty dashboard behind the wizard to glimpse. The only exit is a paired Core. (Creating the Operator account happens before it, on its own screen.)

## What it walks you through

> **Coming from the [Docker Compose quickstart](/docs/get-started/docker-compose)?** Steps 1 and 2 are already done: the compose file installed and started the Core, and `docker compose exec core actana pair new` minted the code. Go straight to step 3 and pair with the address `core:8443`.

1. **Put a Core on a machine.** The wizard shows both documented install paths, each as copyable commands:
   - **Installer** — for a machine that already has your code: the [one-liner](/docs/install/install-core), then `actana setup`.
   - **Compose** — a containerised Core: `docker compose … up -d core`, pinned to this Panel's own image tag so the pair cannot drift apart. It deliberately starts **only the `core` service** — you are already looking at a Panel.
2. **Mint a code there** — `actana pair new`, which answers with the [handout](/docs/pairing/create-a-pairing-code).
3. **Pair it here** — the same **Add a Core** form as Settings → Cores: address, fingerprint compared before the code is sent, then session and code. See [Panel Pairing](/docs/pairing/panel-pairing).

The commands the wizard prints are the same facts these docs and the CLI print — it is generated from them, not a paraphrase, so what you paste is what the docs teach.

When the pairing lands, the wizard holds until the registry confirms the Core, then unlocks the app straight into [Fleet](/docs/panel/fleet) with your new Core in it.

## See also

- [Panel Pairing](/docs/pairing/panel-pairing)
- [Create a Pairing Code](/docs/pairing/create-a-pairing-code)
- [Install Core](/docs/install/install-core)
- [Fleet](/docs/panel/fleet)
