Skip to content

[FEATURE]: Performance tab with TTFT / tok/s / wall time per LLM call in the web app #49381

Open

Description

@rluisr

Feature hasn't been suggested before.

  • I have verified this feature I'm about to request hasn't been suggested before.

Describe the enhancement you want to request

When a session feels slow there's no way to tell from the web app whether the time went to the provider (slow first token, slow generation) or to tool execution. The Context tab shows token usage but nothing about latency.

I'd like a Performance tab in the session side panel, opened from the command palette the same way Context is, that shows per LLM call:

  • TTFT (time to first output)
  • tokens/second during generation
  • end-to-end wall time
  • output tokens, model, and running/error state

plus session totals (median TTFT, tok/s, total wall, call count).

Most of this is already in the message data (time.created / time.streamed / time.completed, tokens, reasoning.time, tool.time). The one gap is that AssistantText has no timestamp, so a text-only reply has no first-output time. Adding AssistantText.time like reasoning and tool already have closes that.

I have a working implementation and will open a PR against v2.

Activity

  1. github-actions commented on Sep 16, 2026

    @github-actions
    Contributor

    This issue might be a duplicate of an existing issue. Please check:

    If your request goes beyond what #5374 covers (TTFT, wall time, per-call breakdown, and the AssistantText.time addition), feel free to note that distinction so this can be tracked separately.

  2. opencodejr commented on Oct 28, 2026

    @opencodejr

    Thanks for the detailed request, @rluisr!

    To restate it: you'd like a Performance tab in the web app's session side panel, opened from the command palette like Context. It would show TTFT, tok/s, wall time, output tokens, model and state for each LLM call, plus session totals, so you can tell slow provider responses apart from slow tool execution. Maintainers will consider it.

    A few notes that may help with your PR:

    • You're right that AssistantText in packages/schema/src/session-message.ts has no time field, while AssistantReasoning does. A text-only reply needs that timestamp for TTFT.
    • There's existing code you may be able to reuse: SessionTurn.tokensPerSecond / SessionTurn.duration in packages/util/src/session-turn.ts. The TUI already uses them for its per-turn tok/s footer (behind session.tps), and the debug bar GUI plugin (packages/gui-plugins/src/debug/bar.tsx) uses them for the latest turn.
    • The old v2 branch has been promoted to dev, so please open the PR against dev.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions