# Traces in Tern

Send a request to the server you just started with `elide serve` and its trace appears in the **Traces** tab: the
request's spans as a waterfall, each span's attributes, and the logs written under it. The Server page runs a local
OTLP receiver beside the server for this; your configured exporters keep sending to their own destinations.

## Traces tab

The tab appears once a trace is captured. The capture line reads `Live capture` or `Capture paused`, followed by the
trace, span and log counts.

| Part | Shows |
| --- | --- |
| Trace list | Captured traces, newest first. |
| Waterfall | The selected trace's spans, indented by depth, each with a bar for its offset and duration. |
| Span tree | The trace's spans nested by parent, each with its attributes and the logs written under it. |

| Control | Key | Effect |
| --- | --- | --- |
| **Pause** / **Resume** | `p` | Stop or restart capture. The server keeps running and captured traces stay. |
| **Errors** | `e` | Show only failed traces. `Esc` returns to all. |
| **Clear** | `c` | Empty the local history. |

None of these restarts the server or changes its state, and none affects your exporters.

## Capture and export

| Setting | Behavior |
| --- | --- |
| Your exporters | Keep exporting. The receiver is an extra destination, removed when the Server page closes. |
| Disabled telemetry, signal settings, sampling | Respected: the receiver sees only what your configuration emits. |
| Signals | Traces and logs. Other signals go only to your own destinations. |

The runtime adds the receiver as a destination named `__local_inspector`, through a private lease in
`ELIDE_OTEL_INSPECTOR`; it is separate from `OTEL_EXPORTER_OTLP_*`. See
[Local inspection](/docs/opentelemetry/configuration#local-inspection).

## Limits

| Limit | Value |
| --- | --- |
| Records kept | 512 |
| Record data kept | 4 MiB |
| Age | Five minutes |
| Request body | 2 MiB |
| Formats | OTLP/HTTP protobuf or JSON, optionally gzip-compressed |

The oldest records go first when a limit is reached; the capture line counts evicted, rejected and truncated records.
Spans of a static server measure request handling through building the response, not delivery to the client.

## Next

That is the whole loop: tests, debugger, coverage, build, server and traces, in one terminal. When a view does not
open or a command prints text where you expected a view, [Troubleshooting](/docs/tern-troubleshooting) names the cause.

## See also

- [OpenTelemetry overview](/docs/opentelemetry)
- [Terminal surfaces: `elide serve`](/docs/tern-terminal#elide-serve-in-tern)
