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

# Sessions

> Stitch multi-turn conversations across many traces.

A **session** groups the traces of one multi-turn conversation — each user turn is
its own trace, and they roll up into a session by a shared `session_id`. The
**Sessions** page lists them and lets you replay a whole conversation end to end.

## How traces become a session

Set a stable session id on the spans of every turn and RunAgain rolls them up
automatically. Any of these attributes work (first non-empty wins):

* `session.id`
* `gen_ai.conversation.id`
* `langfuse.session.id`

<Tip>
  Turns are ordered by start time. If you don't set a session id, each trace still
  stands alone in the [Traces](/app/traces) list — sessions are purely additive.
</Tip>

## Session list

Same layout as the [traces list](/app/traces#trace-list): each row shows the
**session id** (click to copy), **agents**, **turns** (traces), **duration**, the
session's **eval scores**, and **time**. A colored right border flags status (red
error, green ok), with an **error** stick next to the eval score.

**Saved-view tabs** with live counts — **All · Errors · Slow >3s · Eval'd** — filter
the list and drop a filter token (**×** to clear), and a free-text **search** matches
over session id, agent, and user. Eval scores show the overall score (colored by
threshold) + three ticks (faithfulness · trajectory · schema), or **—** when unsampled.

## Session detail

Opening a session shows:

* **Evals** — a chip row of the project's [evals](/app/evals) in scope for this session
  (across its turns), each marked ✓ when it produced a score or `· pending` otherwise.
* **Session scores** — session-level scores plus an **Add score** button to attach a
  manual one to the whole conversation (see [scoring from the UI](/app/traces#scoring-from-the-ui)).
* **Session time composition** — the working-vs-idle bar for the whole conversation,
  so the gaps *between* turns (user think-time) are visible alongside the agent's work.
* **Session waterfall** — every turn's spans on **one shared time axis**. Each turn is
  a collapsible section with its own summary bar; click a turn header to open that
  turn's full [trace](/app/traces).
* **Conversation** — each turn rendered as a chat thread, including
  [subagent drill-down](/app/traces#trace-detail) within a turn. A long system
  prompt (more than 10 lines) collapses to its first 10 lines with a *Show more*
  toggle.

## Where session ids come from

Any integration that exports to the [OTLP endpoint](/integrations/otlp) can set a
session id. For example, thread it through the
[Claude Agent SDK](/integrations/claude-agent-sdk) or set it as a span attribute in the
[Vercel AI SDK](/integrations/vercel-ai-sdk) via `experimental_telemetry.metadata`.
