info:To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers
---
# GitLab Runner Docs
# GitLab Runner
GitLab Runner is the lightweight, highly-scalable agent that runs your build jobs
and sends the results back to a GitLab instance.
GitLab Runner is an application that works with GitLab CI/CD to run jobs in a pipeline.
GitLab Runner works in conjunction with GitLab CI/CD, the open-source
continuous integration service included with GitLab.
You can choose to [**install**](install/index.md) the GitLab Runner application
on infrastructure that you own or manage. If you do, you should install
GitLab Runner on a machine that's separate from the one that hosts the GitLab instance.
This documentation includes details about installing and setting up GitLab Runner,
and registering and configuring individual runners.
GitLab Runner is open-source and written in [Go](https://golang.org). It can be run
as a single binary; no language-specific requirements are needed.
If you already have runners set up and you need help using them
in your GitLab instance, the information you need may be in the
When a CI/CD job runs, it knows which runner to use by looking at the assigned tags.
## Configuring GitLab Runner
For example, if a runner has the `ruby` tag, you would add this code to
your project's `.gitlab-ci.yml` file:
See information on [configuring GitLab Runner](configuration/index.md), and:
```yaml
job:
tags:
-ruby
```
-[Advanced configuration options](configuration/advanced-configuration.md): Learn how to use the [TOML](https://github.com/toml-lang/toml) configuration file that GitLab Runner uses.
-[Use self-signed certificates](configuration/tls-self-signed.md): Configure certificates that are used to verify TLS peer when connecting to the GitLab server.
-[Autoscaling using Docker machine](configuration/autoscale.md): Execute jobs on machines that are created on demand using Docker machine.
-[Autoscaling GitLab Runner on AWS](configuration/runner_autoscale_aws/index.md)
-[The init system of GitLab Runner](configuration/init.md): Learn how the Runner installs its init service files based on your operating system.
-[Supported shells](shells/index.md): Learn what shell script generators are supported that allow to execute builds on different systems.
-[Security considerations](security/index.md): Be aware of potential security implications when running your jobs with GitLab Runner.
-[Runner monitoring](monitoring/README.md): Learn how to monitor the Runner's behavior.
-[Cleanup the Docker images automatically](https://gitlab.com/gitlab-org/gitlab-runner-docker-cleanup): A simple Docker application that automatically garbage collects the GitLab Runner caches and images when running low on disk space.
-[Configure GitLab Runner to run behind a proxy](configuration/proxy.md): Learn how to set up a Linux proxy and configure GitLab Runner. Especially useful for the Docker executor.
-[Feature Flags](configuration/feature-flags.md): Learn how to use feature flags to get access to features in beta stage or to enable breaking changes before the full deprecation and replacement is handled.
-[Configure Session Server](configuration/advanced-configuration.md#the-session_server-section): Learn how to configure a session server for interacting with jobs the Runner is responsible for.
When the job runs, it uses the runner with the `ruby` tag.
## Troubleshooting
## Configuring runners
Read the [FAQ](faq/README.md) for troubleshooting common issues.
You can [**configure**](configuration/advanced-configuration.md)
the runner by editing the `config.toml` file. This is a file that is installed during the runner installation process.
## Release process
In this file you can edit settings for a specific runner, or for all runners.
The description of release process of the GitLab Runner project can be