> ## Documentation Index
> Fetch the complete documentation index at: https://docs.valkyrieapp.azumo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Deployment status and failures

> Read what a deployment is doing, why it stopped or failed, and what to do next.

Every endpoint page tells you where the deployment is, what its machine is doing
right now, and, when something goes wrong, what failed and what to try next. The
same information is available to agents through the MCP tools
`get_deployment_status` and `diagnose_deployment`, which also say why a
deployment is not running (`stop_reason`: `schedule`, `idle`, `billing`,
`spend_cap`, `user`, `failure`, `preempted` or `paused_limit`) and when it next
starts by itself (`next_scheduled_start_at`).

## Statuses

| Status | What it means | What to do |
| - | - | - |
| **Queued**, **Provisioning**, **Preparing**, **Initializing**, **Health check** | The deployment is starting. See [Deployment stages](https://docs.valkyrieapp.azumo.com/dashboard/endpoints.md#deployment-stages). | Wait for **Running**. |
| **Running** | The model is serving requests. | Call it. |
| **Paused** | Paused on purpose. The GPU is stopped but the machine and its disk are kept, so **Resume** is fast. The kept disk is billed while paused, see [Paused endpoints](https://docs.valkyrieapp.azumo.com/guides/wallet-billing.md#paused-endpoints). | **Resume** it to serve again. |
| **Interrupted (outbid)** | The deployment ran on [interruptible capacity](https://docs.valkyrieapp.azumo.com/guides/wallet-billing.md#interruptible-capacity) and a higher bid took the GPU. The deployment did not fail. | **Restart on a new instance** from its menu. The endpoint and API keys stay the same. An always-on deployment restarts by itself. |
| **Off (schedule)** | Its [schedule](https://docs.valkyrieapp.azumo.com/dashboard/endpoints.md#schedules) stopped it, and it starts again by itself. The badge shows when, in your timezone, for example **Off (schedule) · starts Tue 09:00**. The machine is released while it is off; the endpoint keeps its URL, settings and keys. | Nothing, it comes back on its own. To use it sooner, choose **Start now** from its menu. |
| **Stopped (idle)** | The [idle stop](https://docs.valkyrieapp.azumo.com/guides/always-on.md#idle-stop) stopped it because it served no requests for a while. The endpoint keeps its URL, settings and keys. | **Start now** from its menu. |
| **Stopped (budget)** | The workspace's balance ran low or it reached a [spend limit](https://docs.valkyrieapp.azumo.com/guides/wallet-billing.md#spend-limits), so Valkyrie paused it. | Add funds or raise the limit, then **Resume** it. |
| **Terminated** | Stopped and it does not come back by itself: you stopped it, or it was paused for more than 72 hours. The endpoint keeps its URL and settings. | **Redeploy** from its menu. It rents a new GPU. |
| **Failed** | The deployment couldn't start or stopped working. The page shows a failure code and a next step, see [below](#failure-codes-and-next-steps). | Follow the next step. |

## What the machine is doing

While a deployment starts, its page shows live detail from the machine:

* **What the instance is doing**: the current step, and while the model downloads,
  **Downloaded** (for example, 12 GB of 30 GB), the **Download rate**, and the
  **Time left**. If the machine hasn't reported for more than 10 minutes, a note
  says the reading may be out of date.
* **Boot timeline**: each start-up step the deployment went through, with its time.
* **Last provider reading**: the machine's actual state, the state Valkyrie expects,
  its uptime, and its hourly cost.

> [!NOTE]
>
> If a model download makes no progress for 5 minutes while the machine is still
> reporting, Valkyrie fails the deployment with **The model download stalled**,
> releases the machine so you stop paying for it, and avoids that machine for the
> next attempts. Deploy again to start on a different machine.

When a failed machine is removed, Valkyrie first captures what it can: the final
logs and the machine's last state. That record stays on the page under **Captured
before the failed instance was removed**, so you can still read why it failed after
the GPU is gone.

## Failure codes and next steps

A failed deployment shows **Deployment failed:** with a short label, the error
message, and a **Next step**. The API and MCP return the same as `failure.code`,
`failure.label`, `failure.summary`, and `failure.next_step`.

| Code | Label | Next step |
| - | - | - |
| `provider_never_started` | The machine never started | Deploy again; a different machine is usually picked. If it repeats, try another GPU type. |
| `image_pull_failed` | The container image could not be pulled | Deploy again; this is usually a problem with that machine's network. |
| `ssh_key_rejected` | The machine rejected Valkyrie's SSH key | Deploy again; a different machine is usually picked. |
| `download_stalled` | The model download stalled | Deploy again. For a very large model, pick a GPU with more disk, or check that the model repository is reachable. |
| `server_crashed` | The model server crashed | Read the deployment logs for the error. Out of memory usually means a bigger GPU, a shorter context length, or a quantized model. |
| `config_invalid` | The model or its settings are not valid | Check the model name, access token, and settings, then deploy again. |
| `price_cap` | No machine within the price cap | Raise the price cap or try a different GPU type. |
| `no_offer` | No GPU available | Try another GPU type, allow GPU fallback, or try again later. |
| `platform_error` | Valkyrie could not complete the deployment | Deploy again. If it repeats, contact support with the deployment id. |

Some requests are refused before any GPU is rented, so they cost nothing:

* A model name that isn't a Hugging Face `owner/name` id. See
  [Model names](https://docs.valkyrieapp.azumo.com/guides/deploy-model.md#model-names).
* A disk smaller than the model's weights. See
  [Disk size](https://docs.valkyrieapp.azumo.com/guides/deploy-model.md#disk-size).
* A model whose repository files or weight format the serving engine can't load.
  The error starts with **Runtime preflight failed**.
* No machine that meets Valkyrie's reliability checks for the GPU you picked. The
  error says how many machines each check removed. Try again later or pick another
  GPU type.

## Diagnose a deployment

The **Diagnosis** card on every endpoint page puts the whole story in one place:

* A headline: **Serving**, what the deployment is doing now, or **Failed:** with the
  failure label.
* The next step, when there is one.
* The latest report from the machine, the last log output, the last start-up report
  from the model server, the last provider reading, how long it has been in the
  current stage, and whether the final logs were captured before teardown.
* The tail of the stored logs, or **No logs stored yet.**

Start here when a deployment misbehaves. If you contact support, include the
deployment id and what this card says.

From an agent, `diagnose_deployment` returns the same information plus up to 300
lines of stored logs. It only reads stored data and changes nothing. See
[MCP tools](https://docs.valkyrieapp.azumo.com/mcp/tools.md).
