max_runners
The one number that bounds total spend: the most runners that may be alive at once, across every repository in the organization. The default is 50. Set it under Settings in the dashboard. Pick a figure below what your cloud quotas allow, so hitting the ceiling is a clear message on the dashboard rather than a stream of failed launches.The cap is enforced under a row lock on your installation, so several
control plane replicas cannot both take the last slot. When the cap is
reached, jobs queue rather than fail, and launch as runners finish.
The other bounds
These are not configurable per repository; they are the shape of the system.Watching usage
Analytics shows job counts, runner minutes and queue wait times — the p50 and p90 — per day and per repository. Those two numbers are the ones to watch:Queue wait climbing
You are at the cap, or at a quota. Check Events for launch failures
first; if there are none, raise
max_runners.Runner minutes climbing faster than jobs
Jobs are getting slower, not more frequent. Look at the disk, the cache
hit rate and the machine size before adding concurrency.
airship:repository on AWS, or the equivalent label on
Google Cloud, for a per-repository figure with no extra instrumentation.
Who can change what
Roles are re-checked with GitHub hourly, so removing someone from the
organization revokes their dashboard access within the hour. Tokens are
revocable immediately.
Turning the tap down
Deactivating is immediate and reversible: activating a repository again plans
the jobs that are still queued.