Setup and registration
Administration → Runners → Setup is the two-step flow for self-hosted agents.
Step 1 — Create a runner group
See Groups You must have at least one enabled group before you can generate an install command.
Step 2 — Register runners
Select a group, platform, and options, then generate an install command and run it on the host.
Register runners
- Select a runner group. The helper text shows the group's scope.
- Select a platform: Linux, Windows, Docker, or Kubernetes. See Platforms
- For Linux or Windows, choose isolation: Process or Container. Docker and Kubernetes lock isolation automatically.
- Optionally set a runner name, name prefix, and labels (not used for Kubernetes YAML identity — the cluster assigns unique names).
- Optionally set max uses and token TTL.
- Click Generate registration command.
- Copy the command and run it on the host.
- Refresh Overview. The runner appears when registration and the first heartbeat succeed.
Runner name
| Option | When to use |
|---|---|
| Runner name | Fixed unique name in this organization. |
| Runner name prefix | Scale replicas: each registration becomes prefix + random suffix (e.g. prod-482913). |
| Blank | Agent uses the host name from the install environment. |
Labels at registration
Comma-separated labels are baked into the install command and applied on register. You can edit them later from Overview. Do not assign axio-\* to self-hosted runners. See Labels
After the command is ready
The page shows:
Linux · Process)You can switch the platform cards to view the Linux vs Docker vs Kubernetes variant of the same token when instructions exist for those platforms. Register another one starts a new token so two hosts do not share identity.
Token options
| Field | Default | Limit |
|---|---|---|
| Max uses | Unlimited until expiry (static fleet token) | 1 – 10000 |
| Token TTL | Shown in the generated instruction (often 60 minutes if unset) | 1 – 43200 minutes (30 days) |
Leave max uses blank for a long-lived install token you reuse across a static fleet. Set max uses to 1 for a single machine. For Docker/Kubernetes replicas, set max uses ≥ replica count.
After generate you can Revoke token so the command stops working. Historical revoked or obsolete tokens can be cleaned without affecting the command you just copied. See Tokens
What happens on the host
(axreg_\* token) axrun_\* token stored on the host The registration token is discarded after exchange. The agent keeps the long-lived token in config (mode 0600) or the encrypted credential store.
Control plane URL
Install commands embed API_PUBLIC_URL (must include /api/v1). If registration returns HTML or HTTP 405, the URL is the web UI, not the API. Fix ingress or the public API URL, then generate a new command.
From a Docker runner on the same host as the API, use http://host.docker.internal:3001/api/v1. Machine-mode on the same VM can use http://localhost:3001/api/v1.
Local quick start
npm run build:runner
cd runner/installer
./configure.sh --url http://localhost:3001/api/v1 --token axreg_... --name my-runner
./run.sh