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 runners
    • job_router_instance_runners: For instance runners
    • job_router_admission_control: For admission control (optional)
  • GitLab Runner 18.9 or later with the FF_USE_JOB_ROUTER environment variable set to true.

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.