Create a hub with vai up
vai up creates a hub in your own Hetzner project and makes this device its owner.
$ vai login$ vai up acme --location nbg1 --hcloud-context acme-prod --twins-hcloud-context acme-twinsAlpha: for testing only; does not yet meet the Cyber Resilience Act's requirements.It shows what it will create and asks before it does anything (--plan prints the list and exits; --yes skips the question).
What it does, in order
Section titled “What it does, in order”- The image. A short-lived helper server writes the release’s Podman image and makes a snapshot of it in your project, checked against the signed manifest. The hub reuses the snapshot for your servers.
- Network, firewall, primary IP. A private network for the hub and your servers; a firewall that opens WireGuard’s port and, while
vai upruns, SSH from your address only; a primary IPv4 that survives a replacement of the hub’s server. - The server, from that snapshot: a cpx02 (1 vCPU, 1 GB) by default;
--server-typepicks another. - The hub, installed after its release signature is checked, and started.
- Pairing. This device becomes the owner; it pins the hub’s own certificate authority.
- The recovery key, shown once. Store it on paper or in a password manager; you type its last group to confirm.
- The licence, activated by the hub.
- The tokens, handed to the hub and stored there encrypted with its data keys.
- The backup bucket, and the continuous backup of the hub’s database to it.
- SSH closed.
On Hetzner the whole run took 160 s (lab run, 20 October 2026). Every resource carries the labels vaicoa-managed=true and vaicoa-hub=<name>.
Interrupted?
Section titled “Interrupted?”Run the same command again: every step finds what an earlier run made before it makes anything, and continues at the first step that did not finish. vai up NAME --abort deletes what an unfinished run made, after you type the hub’s name.
Afterwards
Section titled “Afterwards”$ vai status$ vai open # the hub's portal in your browser, while vai runsvai down NAME deletes the hub and everything of it in the project; it refuses while the hub still manages a server. vai upgrade installs another release on the hub’s server with its data and pairings kept.
Next: pair a device.