Telemetry
Runaway sends an anonymous daily ping so the project can count active installs and see which features get used. It’s on by default for new installs, sends only counts and version strings, and you can turn it off anytime. Installs created before this became the default stay off unless you opt in.
What it sends
Section titled “What it sends”Every field is a count, a version string, or a coarse bucket.
| Field | Example | Meaning |
|---|---|---|
| schemaVersion | 1 | Payload version. |
| telemetryId | a random UUID | Per-install random ID — see The telemetry ID. |
| hubVersion | 1.0.0 | Hub version. |
| nodeVersion | 22.20.0 | Node version the hub runs on. |
| platform / arch | linux / x64 | Hub OS and CPU architecture. |
| counts | see below | Integer counts of your fleet. |
| hostPlatforms | { linux: 3, darwin: 1, … } | Host OS spread, counts per bucket. |
| hostArchitectures | { amd64: 3, arm64: 1, … } | Host CPU spread, counts per bucket. |
| features | see below | Which features are in use, as booleans. |
| observedAt | epoch ms | When the snapshot was taken. |
counts — orgs, workloads, a per-runtime-tier breakdown (workloadsNone,
workloadsSharedDaemon, workloadsDind, workloadsSysbox, workloadsKata), hosts, hostsOnline,
runners, runnersIdle, runnersBusy, jobsLast24h.
features (each a yes/no) — webhooksEnabled, autoscalerActive, storageCapEnabled,
isolatedRuntimeUsed, registryCredsConfigured, customEnvUsed.
To see the exact JSON your hub would send: Settings → Telemetry → Show me what we send.
What it never sends
Section titled “What it never sends”- Org, account, or repository names
- Hostnames, IP addresses, or URLs
- Personal access tokens, registry passwords, webhook secrets, or any credential
- Email addresses or account details
- Job logs, workflow contents, or runner output
Only the fields above leave the hub. The collector function is contract-tested, so a new field can’t be added quietly.
The telemetry ID
Section titled “The telemetry ID”telemetryId is a random UUID generated per install, separate from the install’s internal identity.
It exists only to deduplicate pings — so one install counts once — and isn’t tied to your GitHub
account, your Docker hosts, or anything else.
Opt out and the ID is discarded: past pings can’t be linked back to you. Opt back in later and a fresh ID is minted, with no link to the old one.
When it sends
Section titled “When it sends”The first ping goes out about 30 minutes after a fresh install starts, then once a day. A failed send is dropped silently — no retry, no queue. With no internet egress (air-gapped, say), nothing leaves and nothing breaks.
Where it goes
Section titled “Where it goes”Pings go to a collector the Runaway maintainers host. It’s open source — a small ingest service in
the public <owner>/runaway-telemetry repository — so you can read exactly what receives and stores
them.