{
  "id": "gitlab-runner",
  "name": "GitLab Runner",
  "homepage": "https://docs.gitlab.com/runner/",
  "description": "An application that works with GitLab CI/CD to run jobs in a pipeline.",
  "executables": [
    "gitlab-runner"
  ],
  "dotfiles": {
    "paths": [
      "~/.gitlab-runner/config.toml"
    ],
    "secret": [],
    "secret_paths": [
      {
        "file": "~/.gitlab-runner/config.toml",
        "format": "toml",
        "match": {
          "key_path": [
            "runners.*.token",
            "runners.*.cache.s3.AccessKey",
            "runners.*.cache.s3.SecretKey"
          ]
        }
      }
    ]
  },
  "commands": {
    "format": 1,
    "label": "GitLab Runner",
    "description": "Run the runner, register it with a GitLab instance, or verify registered runners. Service management, run-single, executor-specific registration options and token reset are left out.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": true,
      "short_bundles": false
    },
    "subcommand": [
      {
        "path": [
          "run"
        ],
        "label": "Run the runner",
        "description": "Fetch and process jobs from GitLab until stopped.",
        "source": [
          {
            "id": "docs",
            "kind": "manual",
            "url": "https://docs.gitlab.com/runner/commands/",
            "revision": "2026-10-27",
            "evidence": "gitlab-runner run [command options] [arguments...]\n--config  See configuration-file  Specify a custom configuration file to be used\n--working-directory  the current directory  Specify the root directory where all data is stored when builds run with the shell executor\n--user  the current user  Specify the user that executes builds\n--syslog  false  Send all logs to SysLog (Unix) or EventLog (Windows)\n--listen-address  empty  Address (<host>:<port>) on which the Prometheus metrics HTTP server should be listening\n"
          }
        ],
        "field": [
          {
            "id": "config",
            "label": "Config file",
            "type": "path",
            "option": [
              "--config"
            ],
            "path": {
              "kind": "file",
              "role": "input",
              "must_exist": true
            },
            "sources": [
              "docs"
            ]
          },
          {
            "id": "working_directory",
            "label": "Working directory",
            "type": "path",
            "option": [
              "--working-directory"
            ],
            "path": {
              "kind": "directory",
              "role": "input",
              "must_exist": false
            },
            "sources": [
              "docs"
            ]
          },
          {
            "id": "user",
            "label": "Run builds as user",
            "type": "string",
            "option": [
              "--user"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "listen_address",
            "label": "Metrics listen address",
            "description": "host:port for the Prometheus metrics server.",
            "type": "string",
            "option": [
              "--listen-address"
            ],
            "sources": [
              "docs"
            ]
          }
        ],
        "task": [
          {
            "id": "run",
            "label": "Run",
            "fields": [
              "config",
              "working_directory"
            ],
            "required": []
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "config",
              "working_directory",
              "user",
              "listen_address"
            ]
          }
        ]
      },
      {
        "path": [
          "register"
        ],
        "label": "Register a runner",
        "description": "Register a runner non-interactively with a URL and authentication token.",
        "source": [
          {
            "id": "docs",
            "kind": "manual",
            "url": "https://docs.gitlab.com/runner/commands/",
            "revision": "2026-10-27",
            "evidence": "gitlab-runner register --name my-runner --url \"http://gitlab.example.com\" --token my-authentication-token\ngitlab-runner register --non-interactive <other-arguments>\n--config  See the configuration file section  Specify a custom configuration file to be used\n"
          }
        ],
        "field": [
          {
            "id": "url",
            "label": "GitLab URL",
            "type": "url",
            "option": [
              "--url"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "token",
            "label": "Authentication token",
            "type": "string",
            "option": [
              "--token"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "name",
            "label": "Runner name",
            "type": "string",
            "option": [
              "--name"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "non_interactive",
            "label": "Non-interactive",
            "type": "boolean",
            "option": [
              "--non-interactive"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "config",
            "label": "Config file",
            "type": "path",
            "option": [
              "--config"
            ],
            "path": {
              "kind": "file",
              "role": "output",
              "must_exist": false
            },
            "effect": "overwrite",
            "sources": [
              "docs"
            ]
          }
        ],
        "task": [
          {
            "id": "register",
            "label": "Register",
            "fields": [
              "url",
              "token",
              "name",
              "non_interactive"
            ],
            "required": [
              "url",
              "token"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "url",
              "token",
              "name",
              "non_interactive",
              "config"
            ]
          }
        ]
      },
      {
        "path": [
          "verify"
        ],
        "label": "Verify runners",
        "description": "Check that registered runners can connect to GitLab.",
        "source": [
          {
            "id": "docs",
            "kind": "manual",
            "url": "https://docs.gitlab.com/runner/commands/",
            "revision": "2026-10-27",
            "evidence": "gitlab-runner verify --url \"https://gitlab.example.com\" --token my-authentication-token\ngitlab-runner verify --delete\n--config  See the configuration file section  Specify a custom configuration file to be used\n"
          }
        ],
        "field": [
          {
            "id": "url",
            "label": "GitLab URL",
            "type": "url",
            "option": [
              "--url"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "token",
            "label": "Runner token",
            "type": "string",
            "option": [
              "--token"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "delete",
            "label": "Delete runners that fail verification",
            "type": "boolean",
            "option": [
              "--delete"
            ],
            "effect": "delete",
            "sources": [
              "docs"
            ]
          },
          {
            "id": "config",
            "label": "Config file",
            "type": "path",
            "option": [
              "--config"
            ],
            "path": {
              "kind": "file",
              "role": "input",
              "must_exist": true
            },
            "sources": [
              "docs"
            ]
          }
        ],
        "task": [
          {
            "id": "verify",
            "label": "Verify all",
            "fields": [
              "config"
            ],
            "required": []
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "url",
              "token",
              "config",
              "delete"
            ]
          }
        ]
      }
    ]
  }
}
