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

# Deploying and Monitoring

> Roll a microservice out, watch it land, and read its logs and pods without leaving Xano.

Clicking a microservice in the list opens its detail page. The header carries the live status badge and status detail, **Deploy** / **Redeploy** and **Save** inline, and **Restart** and **Undeploy** in the overflow menu.

## The rollout strip

When a deploy is in flight, a staged progress strip shows where it has got to:

<Steps>
  <Step>
    ### Applying manifests

    The Kubernetes objects have been submitted. No pods exist yet.
  </Step>

  <Step>
    ### Scheduling pods

    Pods are being created, scheduled onto nodes, and pulling their image. This is where an unpullable image shows up.
  </Step>

  <Step>
    ### Ready

    Some replicas are up and passing readiness. This step appears once partial readiness is detectable.
  </Step>

  <Step>
    ### Active

    The rollout is complete and the service is ready.
  </Step>
</Steps>

If the rollout fails, the strip stops at the stage that failed and shows the error detail alongside it. The deploy button re-labels itself to match the state — **Deploy** before a first rollout, **Redeploy** once active, **Retry deploy** after a failure.

Status is polled roughly every three seconds while a deploy is in progress, and **polling stops once the deploy settles**, so a page left open on a healthy service isn't generating traffic indefinitely.

## Configuration tab

The microservice's XanoScript, in the same Monaco editor used elsewhere in Xano. It tracks dirty state, so **Save** is only live when there is something to save, and navigating away with unsaved changes prompts you first.

Saving stores the definition. It does **not** deploy — use **Deploy** / **Redeploy** to roll the change out.

## Logs tab

Container logs, tailed.

* **Container picker** — for a multi-container pod, choose which container's logs to read.
* **Previous container** — toggle to read the logs of the *previous*, crashed instance of a container. This is how you see why something crash-looped, since the current container's logs start after the restart.
* **Refresh** — pull the latest output on demand.
* **Auto-refresh** — poll every few seconds while the tab is open.

If there's nothing to show — the service has never run, or the container has produced no output — the tab says so rather than showing an empty box.

<Tip>
  Logs are the right tab for an application that started but is misbehaving. For a container that never started, go to **Pods** — the reason will be in the pod status, not in logs that were never written.
</Tip>

## Pods tab

A table of the pods backing the deployment:

| Column       | What it tells you                                                                 |
| ------------ | --------------------------------------------------------------------------------- |
| **Phase**    | `Running`, `Pending`, `Failed`, `Succeeded`, or `Unknown`                         |
| **Ready**    | Ready container ratio, e.g. `1/1`                                                 |
| **Restarts** | Restart count — a climbing number means a crash loop                              |
| **Age**      | How long the pod has been running                                                 |
| **Image**    | The image the container is actually running                                       |
| **Issues**   | Chips for containers stuck in a state worth surfacing, such as `ImagePullBackOff` |

The table auto-refreshes while the tab is open, and rows are clickable.

### Pod detail

Clicking a row opens a draggable slide-in panel with the full pod detail:

* **Metadata** — name, node, phase, start time
* **Labels** and **annotations**
* **Containers** — image and image ID, state and reason, restart count, ports, resource requests and limits
* **Conditions** — the pod's Kubernetes conditions with their transition times

<Note>
  Container **environment variable names** are shown; **values are never exposed**. Configuration passed as an environment variable stays readable only inside the container.
</Note>

The panel also offers:

* **Delete pod** — remove the pod. The deployment recreates it, so this is the standard way to recycle a single misbehaving replica.
* **Force delete** — delete with a grace period of zero, for a pod that will not terminate normally.

<Warning>
  Force delete skips graceful shutdown. Use it for a genuinely stuck pod, not as a faster ordinary delete — an application mid-write can be cut off.
</Warning>

## Lifecycle actions

| Action                    | Where         | What it does                                                    |
| ------------------------- | ------------- | --------------------------------------------------------------- |
| **Deploy** / **Redeploy** | Header        | Rolls the current definition out                                |
| **Save**                  | Header        | Stores the XanoScript without deploying                         |
| **Restart**               | Overflow menu | Restarts the running containers without changing the definition |
| **Undeploy**              | Overflow menu | Tears down the running resources; the definition stays          |
| **Delete**                | Overflow menu | Removes the microservice entirely                               |

**Undeploy** is the reversible one: the microservice remains in the list and keeps its configuration, but nothing is running, so it drops out of the function stack host list until you deploy it again.

### Deleting a microservice

Delete opens a dedicated panel with a danger alert and a type-to-confirm on the microservice name. Confirming tears down the running resources and removes the definition.

<Warning>
  Deleting is not reversible, and any function stack still referencing the microservice will fail at runtime. Check what calls it before you delete it.
</Warning>


## Related topics

- [Microservices in the Workspace](/enterprise/enterprise-features/microservices/workspace-microservices.md)
- [Token Scopes Reference](/xano-features/metadata-api/token-scopes-reference.md)
- [Tenant Center](/enterprise/enterprise-features/tenant-center.md)
