---
title: Stop, resume, or terminate a pod
description: Spin GPU pods down and back up from the Operations Console or argusctl, when to stop versus terminate, and how the rate limit and step-up confirmations behave.
---

# Stop, resume, or terminate a pod



## Goal

Stop an idle pod, resume a stopped one, or permanently tear one down, with the action audited and verified.

## Stop versus terminate

* **Stop** halts the pod but keeps it resumable. Use it to spin down an idle pod you expect to bring back.
* **Resume** brings a stopped pod back up.
* **Terminate** is destructive: it destroys the pod and its disk. The CLI requires `--yes` on terminate for exactly this reason. Use it only for permanent teardown.
* **Orphan pods** (pods that exist at the provider with no worker row) are terminate-only: there is no orphan stop or resume, because there is no worker row to resume into.

`argusctl cost idle` lists running pods serving zero cameras and the dollars per day they burn, which is the usual "stop these" input. See [GPU spend visibility](/docs/compute/costs).

## Prerequisites

* A PAT with the **`compute:write`** scope (included in the `admin-full` preset).
* The worker id, from `argusctl compute list` or the COMPUTE page.
* A `--reason` (3 to 500 characters) for every action.

## Steps (console)

1. Open the COMPUTE page (route `#/compute`) at ops.useargus.co.
2. In the RUNNING PODS section, find the worker's card. Each card carries RESUME, STOP, and TERMINATE buttons.
3. Click the action. Compute mutations are gated by a step-up confirmation before the call is sent, and every action is audited.
4. The action toasts and the card's status updates in place on the next refresh tick (no page reload).

For an **orphan** pod, open its row (every pod row click-through opens the pod drawer, which shows identity, status, $/hr, drift, uptime, and a live provider section) and use the TERMINATE THIS POD button. This is destroy-only.

## Steps (CLI)

```bash
argusctl compute stop <workerId> --reason "spin down idle"
argusctl compute resume <workerId> --reason "resume for demo" --ttl-hours 6
argusctl compute terminate <workerId> --reason "tear down" --yes
```

* `--ttl-hours` on resume is optional.
* `terminate` refuses to run without `--yes`.
* Every command supports `--dry-run` to print the planned request without sending it.

## Verify

```bash
argusctl compute list      # worker status reflects the action
argusctl compute served    # a resumed pod reappears with what it serves
```

On the console, the card's status badge updates in place within the 15 second refresh cycle.

## Troubleshooting

* **`429` (CLI exit code 6).** The per-operator rate limit on `/compute/ops/*` is 20 calls per 60 seconds. The console surfaces this as a 429-aware modal; on the CLI, wait for the window to pass and retry.
* **`403` (exit code 5).** Your PAT lacks `compute:write`.
* **Terminate "failed" without `--yes`.** That is the guard working: terminate destroys the pod and disk, so the flag is mandatory.
* **An orphan keeps billing after you stopped tracked workers.** Orphans are excluded from the tracked monthly total, so the COMPUTE page warns when running orphans exist. Terminate the orphan from its drawer.


---

For a semantic overview of all documentation, see [/sitemap.md](/sitemap.md)

For an index of all available documentation, see [/llms.txt](/llms.txt)

For agent-facing discovery, including API and MCP surfaces, see [/agents.md](/agents.md)