Job router
- Tier: Ultimate
- Offering: GitLab Self-Managed, GitLab Dedicated
- Status: Experiment
The availability of this feature is controlled by a feature flag. For more information, see the history. This feature is available for testing, but not ready for production use.
The job router is a component of the GitLab Agent Server (KAS) that provides advanced job orchestration capabilities for GitLab CI/CD. Instead of runners that poll GitLab directly for jobs, runners connect to the job router, which manages job distribution and provides features like admission control.
Architecture
GitLab Instance → Job Router (KAS) → Runner
↓
Runner Controller (optional)The job router:
- Receives job requests from runners
- Responds with jobs to run to runners
- Optionally consults runner controllers for admission decisions
Prerequisites
To use the job router, you must have:
- GitLab instance with the following feature flags set to
true:job_router: For group and project runnersjob_router_instance_runners: For instance runnersjob_router_admission_control: For admission control (optional)
- GitLab Runner 18.9 or later with the
FF_USE_JOB_ROUTERenvironment variable set totrue.
Discover job router information
Runners can discover the job router URL using the job router discovery API.
Runner controllers
Runner controllers enable admission control for jobs routed through the job router. For more information, see runner controllers.