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

# Stream Pod Logs

> View live pod logs directly in the Niro dashboard.

## Overview

Niro can stream logs from any pod in your fleet directly to the browser. The stream is established through the agent — no inbound connectivity to the cluster is required.

## Prerequisites

The log streaming capability must be enabled on the cluster. Check the cluster's capabilities badge on the Fleet page or the cluster detail view.

If logs are not enabled, re-run the installer with `NIRO_ENABLE_LOGS=1`:

```bash theme={"theme":{"light":"github-light","dark":"vesper"}}
curl -fsSL https://get.niro.cx/install.sh | NIRO_ENABLE_LOGS=1 sh
```

The capability appears in the dashboard within \~15 seconds. See [Agent Capabilities](/reference/agent-capabilities) for details on what RBAC is granted.

## Viewing logs

1. Go to **Pods** in the sidebar to see the cross-cluster pod inventory
2. Find the pod you want to inspect (you can filter by cluster, namespace, or phase)
3. Click the pod name to open the pod detail panel
4. Click **View logs** — the log stream opens in an inline panel

Or from the cluster detail view:

1. Open the cluster → **Workloads**
2. Click a pod name
3. Click **View logs**

## How log streaming works

When you click **View logs**, Niro:

1. Sends a log stream command to the agent specifying the target pod/container
2. The agent calls `kubectl logs --follow` for the specified container
3. The agent forwards log data to Niro in batches
4. The dashboard subscribes to the stream and renders new lines in real time

Streams are coordinated through Niro, so they work reliably regardless of which backend you're connected to.

## Container selection

For pods with multiple containers, a dropdown lets you choose which container's logs to stream. By default, the first container is selected.

## Previous container logs

If a container has restarted (e.g. due to a crash loop), you can view the previous container's logs by toggling **Previous container** in the log panel. This is particularly useful for diagnosing crash loops — you can see what the container logged before it exited.

## Log retention

Logs are streamed live — they're not stored in Niro. The log panel shows the tail of the live log stream since you opened it. For long-term log retention, configure a logging agent (e.g. Grafana Alloy, Fluent Bit, or Vector) in your cluster to forward logs to an external store.

## Troubleshooting

### The "View logs" button is grayed out

The cluster doesn't have the log capability enabled. Re-run the installer:

```bash theme={"theme":{"light":"github-light","dark":"vesper"}}
curl -fsSL https://get.niro.cx/install.sh | NIRO_ENABLE_LOGS=1 sh
```

### The stream shows "Connection error" or doesn't start

* Check that the agent pod is running: `kubectl get pods -n niro-system`
* Check the agent logs for errors: `kubectl logs -n niro-system -l app=niro-agent`
* The target pod may have been deleted or restarted between when you opened the panel and when the stream started

### Logs stop flowing after a few seconds

The container may have exited. If the pod restarted, switch to **Previous container** to see the logs from the crashed instance.

## Related

* [Agent Capabilities](/reference/agent-capabilities) — `NIRO_ENABLE_LOGS` and its RBAC grants
* [Connect a Cluster](/guides/connect-cluster) — re-running the installer to enable capabilities
* [Pods](/guides/fleet-monitoring) — the pod inventory and filtering
