Onboard¶
Onboarding turns an empty state root into a company on the map in minutes. It is the console's first screen when nothing has been set up.
It asks two questions. Everything else the console needs, it either works out for itself or offers you afterwards, once there is a company to apply it to.
- Seats and models. What this machine thinks with: its Claude Code sign-in (the console starts the sign-in and shows you the link), a seat token from another account, any model provider's API key, or a model running on your own hardware. One of them has to answer a live check before this screen is passed — everything the product composes is agents, and a seat that is merely present is not a seat that works.
- Company. A name, and the shape closest to your business. Five templates ship with the console — a software product company, a client services studio, a content and media business, a holding company and an online store — and each one fills in the cells and the pipelines they run in one go. Rename what does not fit. Finish then hires the workforce those pipelines call for: every stage a pipeline says is worked by an agent gets one, briefed from the stage's own question and its definition of done, on demand rather than on a schedule. Rewrite any of them, or replace one from the gallery of pre-built workloads. An empty root cell is there if you would rather build it yourself, and a bundle exported from another install can be pasted in or fetched from an https URL.
Finish writes the registry, creates every cell, verifies each one, and lands on the map. Nothing in the product asks you to open a terminal.
What it does not ask for¶
Three things used to be required before the console would run at all. None of them is, and it is worth saying why, because each absence is deliberate.
No passphrase, on a console only you can reach. The console listens on
127.0.0.1. Anything running as your own operating-system user can read its
credential files directly, whatever the console asks for at the door — so on a
machine you are already logged into, a passphrase in front of it stops nobody
that your user account does not already stop. You can set one whenever you
like. The console requires one, with an authenticator, at the moment you do
something that makes it reachable from somewhere else: publishing the hosted
dashboard. The demand arrives attached to the
act that creates the risk.
No GitHub. Your company is a git checkout on your own disk from the moment it is created, and that checkout is the record. Run records are written locally, and the console works fully without a GitHub account ever being mentioned. Connecting GitHub afterwards pushes a copy somewhere off this machine and gives each product or entity cell its own private repository — useful, and a backup decision rather than a setup step.
No messaging channel. Nothing needs to reach you before there is anything to tell you about. Until you pick a channel, the console is where the work waits for you.
Where should we reach you?¶
Offered as a card after Finish, and never required. Six ways, and two of them need no account anywhere:
| What it takes | Works on | |
|---|---|---|
| Phone push | Scan a QR code with the free ntfy app. A private random topic is generated for you; there is no signup and no token to paste. | Any phone, from any machine |
| Text message | Your phone number. Sent through Messages on this Mac — a genuinely normal text, free, no account. | macOS only |
| Telegram | One bot token. The console then shows a link to your own new bot; press Start and it captures the chat id itself, with no JSON to read. The only two-way channel — you can reply to it. | Everywhere |
| Discord or Slack | One webhook URL, pasted. | Everywhere |
| Your SMTP details. | Everywhere |
The console walks you through each one. It opens the exact page in a new tab — BotFather, GitHub's token page — rather than telling you to go and find it, shows a QR when your phone is the quicker way, and does every mechanical step it can: it asks Telegram for your new bot's own name, watches for you to press Start, and reads the chat id out itself, so you never see one. For GitHub it offers a login this machine already has, if there is one, and connects with nothing pasted at all.
Whichever you choose is proved with a real message before it counts as connected — a credential that has never actually delivered anything is not a channel. Several at once is fine: briefs and alerts go to all of them, while a confirmation code goes to just one, because a code is a secret and copies of a secret are places it can be read from.
Credentials are written to this machine at mode 600 and never shown again. The console records which ones were set, not their values.
Everything else, afterwards¶
The finish screen lists what is left, each one a button with its own status
and never a line to type: install each cell's workloads (into your own user
session — nothing asks for an administrator password), schedule the nightly
snapshot, add an offsite copy, name a smart plug and router, connect GitHub,
pick a channel, and read the operating contract that becomes the root cell's
CLAUDE.md.
Changing the company later goes through the guided walks rather than back through onboarding: add a cell, build a pipeline, hire an agent from the gallery of pre-built workloads, or describe what you want and have it drafted for you.
Company import
A company exported from another install is a yaml bundle with no state and no credentials in it. Paste it or give its https URL under Import; the plan shows what would be written before anything is.
From then on the map is the home. Start a pipeline from its box; the pre-flight shows every layer of instruction it will run under before it runs.