---
layout: docs
page_title: Runners
description: |-
  Waypoint utilizes "runners" to execute Waypoint operations remotely. Runners are responsible for performing builds and deploys, polling projects for changes, and more.
---

# Waypoint Runners

Waypoint utilizes "runners" to execute operations. Every build, deploy, or release operation happens on
a Waypoint runner. Waypoint has three kinds of runners:

### CLI Runner

When you trigger an action with the CLI, i.e. by running `waypoint deploy`, the CLI acts as a runner
capable of performing your operation. If your deployment needs AWS credentials, or a valid kubectl context,
it can access the credentials on the developer workstation that it's running on.

If you only use Waypoint from the CLI, this is the only kind of runner that is used.

### Remote Runner

Not every operation in Waypoint needs to happen in response to a CLI invocation from a privileged workstation.
Waypoint can trigger deployments from the UI or automatically based on git changes, or automatically
poll the status of applications in the background. In these cases, Waypoint needs a "remote runner", a long-lived
runner that is always available to run these operations.

Waypoint automatically installs a single remote runner by default when the Waypoint
server is installed with [`waypoint install`](/commands/install).

### On-demand runners

While the remote runner is capable of performing operations on its own, it also supports plugins
to spawn on-demand runners for a given platform. These on-demand runners are ephemeral container instances that perform one operation before exiting. These on-demand runners can
perform container builds without any privileged access, offer more isolation between operations, and allow Waypoint
to scale further.

On-demand runners: see [on-demand runners](/docs/runner/on-demand-runner) for more information.

## Disabling Runners

Runners can be disabled if desired. With runners disabled, Waypoint executes
all operations via the local CLI (even when communicating with a remote
[server](/docs/server)).

### Unavailable Functionality

With runners disabled, certain functionality becomes unavailable:

- Remote operations
- Git polling

In addition to disabled functionality, consider that all clients must now
have proper credentials for the target platforms (such as AWS, GCP, etc.)
since without runners they must execute all operations locally.

### Disabling Runner Installation

Prior to installation, runners can be disabled by specifying the
`-runner=false` flag to the [`waypoint install`](/commands/install) command.
This will not install a runner.

To uninstall a runner that is already installed, the only option today is
to uninstall and reinstall Waypoint with a
[data snapshot and restore](/docs/server/run/maintenance#backup-restore). You
may also manually go into your platform and delete the runner, but Waypoint
can't automate this for you today.
