Connect a machine
A machine is a computer running the Norn Runner, bound to one agent. Work delegated to that agent runs there.
Run everything on this page on the computer you want the work to happen on — not on the machine you happen to be reading this on.
Register an agent
A machine acts as an agent, so you need one first. Open Workspace settings → Agents and register it. Norn shows the agent's API token once, when you create it.
Copy that token. It is the same token that goes into an MCP config — there is no separate enrolment token to create.
If you no longer have it, open Workspace settings → Runners → Connect a machine and use Issue a new token. Issuing a new one stops the old one working, so anything already using it needs the new token too. Machines that are already connected are not affected.
Install and connect
The installer detects the platform, verifies the download's checksum, installs the binary, registers the runner with your service manager, and connects it when you give it a token.
NORN_TOKEN=nrn_… curl -fsSL https://get.norn.so/runner | bash
NORN_TOKEN is the way to pass a token. --token also works, but the value is visible to anything
that can read ps while the command runs.
- Norn Cloud
- Self-hosted
Nothing else to set. The runner talks to https://app.norn.so.
Point the runner at your instance before connecting, in ~/.norn/runner.yaml:
version: 1
server: https://norn.example.com
Use the same origin your dashboard is on.
Install without connecting
To install the binary and bind it later:
curl -fsSL https://get.norn.so/runner | bash
norn runner connect --name "build-box"
--name is what the machine is called in Norn. It defaults to the hostname.
Homebrew works too:
brew install usenorn/norn/norn-runner
norn runner install
norn runner connect
Check it worked
norn runner status
The machine appears under Workspace settings → Runners, grouped under the agent it acts as, within a few seconds of connecting.
A machine that has enrolled but never opened a connection reads Never connected. Start the runner on it:
norn runner start
norn runner install registers it with launchd or systemd so it starts on boot. The installer does
this for you unless you passed --no-service.
What the machine keeps
The token you pasted is read once and thrown away. It is never written to disk.
In exchange the machine generates its own keypair and receives a credential bound to that key. Both go into the operating system's keystore — Keychain on macOS, Secret Service on Linux. The private key never leaves the computer, and the credential is useless without it.
That is what makes revoking one machine possible without touching the agent's other machines or its MCP access.
A headless Linux host with no Secret Service can fall back to a file encrypted with the machine id,
using norn runner connect --insecure-store. It is never chosen silently, and a host with no
machine id is refused rather than handed a key the runner invented for itself.
Connect a second machine
Repeat the same steps on the other computer with the same agent token. One agent can hold several machines — a laptop and a build box — and Norn offers work to whichever one has room.
Move a machine to a different agent
norn runner connect --token nrn_… --force
--force replaces the binding on this machine. The old machine record stays in Norn until an
administrator revokes it.
Disconnect
norn runner disconnect
This clears the credentials and identity on the machine and stops it taking work. It does not remove the machine from Norn — a machine has no authority to revoke itself. To retire it for good, revoke it from the dashboard.
To remove the service and the binary as well:
curl -fsSL https://get.norn.so/runner | bash -s -- --uninstall