Skip to main content

Pool management

A pool is the routing primitive. Every runner belongs to exactly one pool; every job lands on exactly one pool. This page covers the operational surface around pools — creating, registering runners, rotating tokens, and reading throughput.

Create a pool

  1. Open Settings → Runner Pools → New pool in your project.
  2. Name it (e.g., prod-gpu-farm). Names are unique per project.
  3. Pick a type: self-hosted or hosted.
  4. For hosted, pick a SKU (hosted-ros2-cpu, hosted-gazebo-gpu, hosted-webots-cpu, hosted-webots-gpu).
  5. Save. The pool is now eligible for routing.
Hosted pools are created without any runners — the platform provisions Fargate or EC2 capacity on demand. Self-hosted pools sit idle (and accept no jobs) until you register at least one runner.

Register a runner

Generate a registration token for the pool, then run rbtk-runner register on the machine.
Registration tokens are single-use and expire in 1 hour. You can mint as many as you need.

Inspect runners in a pool

From the dashboard, click any row on the Runner Pools page to open the pool’s detail view. It surfaces the live capacity (running / max), running + queued job counts, recent failures, region/airgap, GPU posture, the registered runners with statuses + last heartbeat, and the most recent 30 test jobs that have been routed to the pool. Each test job row links into its own detail page. From the CLI:

Token rotation

Each runner has a long-lived runner token for authenticating its heartbeat. Tokens rotate on every heartbeat — the platform may return a new token in the heartbeat response, which the runner writes to runner.yaml atomically. There is no manual rotation step. If a runner’s local token is compromised:
This invalidates the token immediately; the runner sees the next heartbeat fail with 401, exits, and the host must re-register.

Revoke a runner

Or via the dashboard: Settings → Runner Pools → prod-gpu-farm → gpu-host-04 → Revoke. The runner’s runner token is voided; any in-flight job is failed with runner_revoked and requeued for routing.

Delete a pool

Deletion is refused if the pool has any ONLINE runners or in-flight jobs. Drain first:

Per-pool job stats

Hosted pools also report billed sim minutes for the window. See Billing.

Tagging and isolation

A common pattern is to tag pools for environments:
Jobs route by explicit pool selection in the test config or by capability+routing rules. See Test configuration for pool: selectors and requires: { airgapped: true } predicates.

Audit trail

Every pool mutation (create, delete, runner-revoke, token mint) emits an audit-log row visible at Settings → Audit log. Filter by resource_type = pool to extract.

Next steps

Air-gapped mode

Lock down a pool to the on-prem platform only.

GPU setup

Multi-GPU pools, nvidia-container-toolkit.