> ## Documentation Index
> Fetch the complete documentation index at: https://datum-4926dda5-docs-compute-and-vpc-guides.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Compute commands

> Deploy and manage containerized workloads on Datum Cloud with the datumctl compute plugin.

<Note>
  Compute is in preview, and each project needs approved access before it can deploy. For product guides, including a quickstart, see [Compute](/compute/overview).
</Note>

`datumctl compute` deploys a container image as a *workload* that runs in one or more Datum Cloud locations, and provides the day-to-day commands to scale, restart, and delete it. It's a first-party plugin instead of a built-in command. After you install it, its commands behave like the rest of the CLI.

```bash theme={null}
datumctl plugin install compute
datumctl compute --help
```

<Info>
  New to plugins? [Using plugins](/datumctl/plugins/using-plugins) covers installation, upgrades, and how a plugin inherits your active context and credentials. Not installed `datumctl` itself yet? Start with the [Quickstart](/datumctl/quickstart).
</Info>

## Core concepts

A handful of terms recur across every `compute` command:

| Term          | Meaning                                                                                                                                                |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Workload**  | The thing you deploy — a container image plus its runtime configuration (ports, env, instance type) and one or more placements.                        |
| **Placement** | A named group of locations and a scale policy (minimum replica count) in a workload. A flag-based `deploy` creates a single placement named `default`. |
| **Location**  | A Datum Cloud region a workload can run in, for example `us-central-1`. The `--city` flag selects every location in a city by its code, such as `DFW`. |
| **Instance**  | One running copy of a workload's container in one location. A placement with `--min=2` across two locations produces four Instances.                   |

`compute` is project-scoped: every command reads `--project` (or your active context's project, injected automatically — see [Contexts & scoping](/datumctl/contexts-and-scoping)). There is no organization-level view and no `--namespace` flag; all compute resources live in the project's `default` namespace.

## Requesting access

Compute is a gated service. The first time you run a command that needs it, `datumctl` checks whether your project is entitled to use Compute:

<CardGroup cols={2}>
  <Card title="Not requested" icon="circle-question">
    No request has been made yet. On an interactive terminal, the gate offers to submit one for you.
  </Card>

  <Card title="Pending approval" icon="hourglass-half">
    A request is awaiting a manual decision by the service provider. Latency is unbounded.
  </Card>

  <Card title="Active" icon="circle-check">
    The project is entitled — every `compute` command runs normally.
  </Card>

  <Card title="Denied / Revoked" icon="circle-xmark">
    The provider rejected the request (or later revoked it). Recovery is submitting a new request.
  </Card>
</CardGroup>

### The automatic gate

Run any gated command — `deploy`, `workloads`, `instances`, and so on — without access, and on a TTY `datumctl` prompts you inline:

```bash theme={null}
datumctl compute deploy api --image=ghcr.io/acme/api:1.4.2 --location=us-central-1 --min=1
```

`datumctl` checks if Compute is enabled for the project, and — if not — asks whether to request access; on confirmation, it submits the request and waits briefly to see whether the platform approves it immediately or the request needs manual review.

Decline, and nothing is submitted — run `datumctl compute access request` yourself whenever you're ready. In a non-interactive shell (CI, a script, or a piped command), the gate never prompts; it fails immediately and tells you which command to run.

### Checking and requesting access explicitly

Use `datumctl compute access` to check the current state directly, and `access request` for more control over submitting one than the automatic prompt gives you:

```bash theme={null}
# Show the current access state
datumctl compute access

# Submit a request with a justification, useful for the provider's review
datumctl compute access request --message="Onboarding the api service"

# Submit and block until the platform's first decision (or --timeout elapses)
datumctl compute access request --wait

# A denied or revoked request is terminal — --renew deletes it and submits fresh
datumctl compute access request --renew
```

`datumctl compute access` prints the state, the platform's explanation, and — when there's a next step — the exact command to run:

```text theme={null}
Service:  Compute (compute.datumapis.com)
Project:  acme-prod
Status:   Not requested
          This service is not enabled for this project.

Request access with: datumctl compute access request
```

Add `-o json` or `-o yaml` to script against the state instead of parsing prose.

## Checking quota

Once active, `datumctl compute quota` shows how much of your project's compute allotment is used:

```bash theme={null}
datumctl compute quota
```

```text theme={null}
Quota for project acme-prod

RESOURCE    UNIT        LIMIT   USED   AVAILABLE   USAGE
Workloads   workloads   10      3      7           [######--------------]  30%
Instances   instances   50      12     38           [#####---------------]  24%
vCPUs       vCPUs       32      8      24           [#####---------------]  25%
Memory      MiB         65536   16384  49152        [#####---------------]  25%
```

Pass `--constrained` to show only the resource types that are currently at their limit — the fastest way to check whether a stalled rollout is a quota problem:

```bash theme={null}
datumctl compute quota --constrained
```

## Find your way around

<CardGroup cols={2}>
  <Card title="Building images" icon="cube" href="/datumctl/compute/building-images">
    Turn a Dockerfile into an image Compute can run, and check compatibility before you deploy.
  </Card>

  <Card title="Deploying workloads" icon="rocket" href="/datumctl/compute/deploying-workloads">
    Deploy a workload from flags or a manifest, and read back its health across locations.
  </Card>

  <Card title="Operations" icon="gauge" href="/datumctl/compute/scaling-and-operations">
    Roll restarts, watch a rollout, and debug individual Instances.
  </Card>

  <Card title="Destroying workloads" icon="trash" href="/datumctl/compute/destroying-workloads">
    Tear down a workload and every Instance it created.
  </Card>
</CardGroup>

## Related

* `datumctl compute --help` and `datumctl compute <command> --help` for the full flag reference.
* [Compute](/compute/overview) — product guides for runtime classes, configuration, placement, and publishing workloads.
* [Using plugins](/datumctl/plugins/using-plugins) — how the `compute` plugin is installed, upgraded, and trusted.
* [Contexts & scoping](/datumctl/contexts-and-scoping) — how the project a `compute` command runs against is resolved.
* [Output formats & scripting](/datumctl/output-and-scripting) — `-o json`/`-o yaml` patterns that apply across `compute` subcommands.
