Organizations and projects

Sessions

A project's Sessions page: every session its agents took part in within the window, with its user, traces, errors, steps and tokens, and each session opened beside the list or on a page of its own — its runs replayed in metadata, never a message, in a layout you customize and keep.

A session is the runs that share the session id the application gave them: a chat, a thread, a support ticket worked over several runs — what OpenTelemetry calls gen_ai.conversation.id. A project's Sessions page lists every one seen in the window with the user it was with and what its runs added up to, and each opens beside the list, its runs replayed in order, or on a page of its own. Everything on both is metadata — which agent ran, how it ended, its steps and tokens — and nothing on either is a message, in any content mode. A session here is not a sign-in: those are listed under Account › Privacy.

Naming the session

Name the session when you open a run — session_id in the SDKs (sessionId in TypeScript, SessionID in Go), gen_ai.conversation.id on the span — and every span inside the run carries it. A run that names no session belongs to none; a project whose runs name none sees the page say so, with the attribute to set.

The list

ColumnWhat it is
SessionThe session id, as the application set it; opens the session beside the list
UserThe end user it was with, as stored: hashed under the project's own key; opens their traces
TracesHow many runs the session had in the window
ErrorsHow many of those had a span that failed
StepsThe steps those runs took, summed
TokensTheir model calls' input and output tokens, summed; hover for the split
First seenWhen the session's first run in the window started, in your time zone
Last seenWhen its last run in the window ended

Sort by any column by clicking its heading; the session last heard from comes first. A second click turns the sort round. Ids and first seen sort the alphabet's and the calendar's way; the most and the latest come first on the others.

The window is the last day, week, 30 or 90 days, by the day each span arrived. The page reads the spans within it — never the whole table — so a session whose runs have all passed their retention is no longer listed. Up to 100 sessions are shown, and the page says when the window holds more: show up to 500, or narrow the window.

The list draws itself again as the project's runs land, while it is in view: at once for the first, and once more for whatever arrives in the next 30 seconds. A session's own page, or one opened beside the list, is drawn again the same way, as the project's runs land.

The sort and the window are in the page's URL, so a link holds the view.

A session

Click a session's id and it opens beside the list, in the console's side panel — as a trace opens over the trace list, and as New project opens — the list still in reach behind it; Open the session's page in the panel's header, or a click that asks for a new tab, gives it a page of its own, with the page's room. Both sum it — its id in full, its user, how many runs it had and how many had a span that failed, their steps and tokens, when the first started and the last ended — and list its runs in the order they started, one row each, in a layout you customize, and each opening its trace. Up to 100 runs are shown, from the same window as the list: show up to 500 from the page, or narrow the window. The panel's ↑ and ↓ buttons step through the list's sessions; Escape, Close or Back shuts it, since the open session is in the page's URL (?peek=), so a link holds it; Full size gives it the whole content area.

A session id is the application's own text, up to 200 characters, so the page's URL carries it encoded. A session none of the project's runs in the window belonged to — one whose runs have passed their retention, or another project's — says so, and leads back to the list.

Customize

Not every session is a chatbot's, and not every reader wants the same of one: a chatbot's reviewer reads a session as a conversation, an agent harness's builder as nested work. One set of options lays out a session — and a trace's page the same way — and Customize beside the title changes any of them, so a team's own cut is never a third thing to find.

The default is each trace's line alone, a turn of a conversation: when it started, the user, its status and the class of the error it ended on (never its message), its tokens and duration, and the models and tools it called by name, each a link to the trace list narrowed to it. Nothing opens, and nothing is read but the session itself; the trace's own page is a click on its id away. Its messages — the run's own input and output, never the prompts of the model calls inside it — join the line once a project keeps content, and its scores once traces are scored: both are on already.

Customized to its steps, or to its steps and the calls inside them, each trace shows them nested under what made them as the spans recorded it, each named by what it is — the step, the model, the tool, a subagent's agent — with whichever of the trace list's columns you pick on the row. The traces that failed can start open, or all of them; click a row, or its chevron, to open or shut any other. Open, a trace reads its spans then and there, so a session of hundreds of traces costs only the ones you open, and each span's bar can be drawn on the trace's own line of time.

Customize names the layout you began from — the default, or a saved layout — as changed, with Back to it a click away:

OptionWhat it changes
How far a trace opensThe trace alone; its steps; or its steps and the calls inside them
Which start openNone; the traces that failed, and inside them the branches holding a failed span; or all — the first twenty of a session, the rest when opened. A trace of more than 400 spans opens with its branches shut whatever the layout says
TimelineEach span's bar on the trace's own line of time
ColumnsThe trace list's columns a trace's row shows; the trace's id always shows
Pinned spansUp to eight span names whose spans show under each trace even while it is shut — the intermediate step a reviewer checks — with their status and duration; read with the session itself
Calls shownOnly the spans of the kinds, statuses and names you pick, with the spans inside them; nothing picked shows them all
Messages, ScoresThe run's own input and output as the turn's two messages, and the trace's scores beside it: kept with the layout now, shown once the project keeps content and once traces are scored

Keys: j and k step through the session's traces, and o opens the one you stand on, or shuts it, wherever the layout opens a trace at all — once Customize opens its steps. After g, k is still API keys and o the Overview. In the panel the keys are the runs' as well; the list's sessions are stepped by the panel's ↑ and ↓ buttons.

Keeping a layout

Layouts keeps a customization under a name for everyone on the project, as the trace list's saved views are kept: Save as a new layout, then pick it from the menu to open the page as it was saved. A layout the page has moved off since is starred, and Save changes writes it over. Every member of the project applies its layouts; its Owners and Admins save, rename and delete them (Roles), and a project keeps up to 100 beside its views. Deleting a layout never changes what anyone else has customized: it only takes the name away.

A link holds a saved layout, ?view=, so a link you share opens as you saw it. Without one, the page opens in the layout you last chose, kept in your browser with your options, and with none the project's default.

The project opens in, under Layouts, is the default for everyone on the project who has not chosen one: the default layout until an Owner or Admin sets one of the saved layouts, and the default layout again once the layout it names is deleted. Only an Owner's or Admin's hand moves it; no layout is ever replaced or removed under anybody by a release.