---
layout: docs
page_title: Remote Operations
description: |-
  Waypoint operations such as `waypoint up`, `build`, `deploy`, etc. can be executed remotely using runners.
---

# Remote Operations

Waypoint operations such as `waypoint up`, `build`, `deploy`, etc. can
be executed _remotely_ using [runners](/docs/runner). This enables
a variety of useful functionality and patterns:

- GitOps where builds, deploys, etc. are triggered by Git.
- Users don't need to have credentials for build or deployment targets,
  only the runners do. For example, if you're deploying an application
  AWS, only the runners need AWS credentials. Users only need a token
  for the Waypoint server to queue the deployment job.
- Private resource access. Every client only needs access to the
  Waypoint server. The runners can run on a private network to access
  internal resources.

## Requirements

Remote operations require:

- At least one [runner is installed and running](/docs/runner). Waypoint
  automatically installs a runner with `waypoint install`.
- Your project is configured with a [data source](/docs/waypoint-hcl/runner)
  so that the runners can clone the project source code.
- Your project has [remote operations enabled](/docs/waypoint-hcl/runner).

Waypoint will automatically run your operations remotely if all these conditions are met, and that you have a [runner profile](/docs/runner/profiles) configured.

## Usage

### CLI

```shell-session
# let waypoint choose to run your operation remotely if possible (recommended):
$ waypoint up
...

# or, force it to run locally on your development machine:
$ waypoint up -local
...
```

You can substitute any operation for `up` such as `build`, `deploy`, `release`, etc.

Both of these approaches will queue a job with the server and remotely execute
that job on the runner. Execution output will stream to the client, but all
logic is executing remotely.

## Concurrency

Waypoint only allows a single operation per distinct `(workspace, project, app)`
combination. This applies to both local and remote operations. Therefore, if two
users attempt run `waypoint up` at the same time, even if they add the `-local` flag,
one of the operations will wait for the other to complete before continuing.

However, if a second user runs `waypoint up` in a _different project_ or
_different application in the same project_ or _different workspace_, that
operation will run concurrently so long as there is available runner capacity.
