Skip to content

[Feature]: Sessions view in the Control UI / TUI — tabbed/list overview with peek + inline reply #80901

Description

@jw8957

Summary

Add a first-class UI for managing concurrent sessions on both OpenClaw surfaces — Web Control UI and TUI — a tab/list overview that shows every session at a glance, lets users peek at the latest turn without attaching, and replies inline when a session is waiting for user input.

This is inspired by Claude Code’s Agent View (2026-05-11), generalized from a single CLI to OpenClaw’s multi-surface, multi-channel setup.

Problem to solve

OpenClaw already supports many concurrent sessions per user (main session, group-bound sessions, subagents, cron-spawned sessions). In practice a single user can easily have 8–15 active sessions across multiple channels at any time.

Today the Control UI lists these sessions, but the framing is closer to an ops dashboard than an agent workspace. The TUI shows the active session but has no comparable session-overview either. Across both surfaces:

  • It’s hard to tell which sessions are waiting on user input vs still working vs done at a glance.
  • Switching between sessions costs several clicks — there’s no quick peek.
  • When a session is waiting on a decision, the user has to attach to it just to type a one-line reply.

A focused sessions view would make day-to-day multi-session usage dramatically smoother.

Proposed solution

1. Sessions overview (tab/list)

A sessions-overview surface, available on both Web Control UI and TUI, lists every session for the current user/agent. One row per session:

  • Title (derived or user-set)
  • Status badge: waiting / working / done
  • Last interaction timestamp
  • Last assistant snippet (short preview, e.g. first 120 chars)
  • Channel/origin icon (DM, group, cron, heartbeat, subagent, …)

Sort default: waiting → working → done, then by recency.

A tabbed presentation (a tab strip with one tab per pinned session, plus an “All sessions” tab) would also work well — the key need is fast switching without losing track of which sessions exist. Tabs map naturally to the Web UI; in the TUI the same model can be expressed as a top-bar tab strip or as keyboard-driven tab cycling (e.g. Ctrl+→/←).

2. Peek panel

Clicking (Web UI) or selecting (TUI) a row opens a side/bottom panel showing:

  • The last few turns of that session
  • The currently pending prompt (if any)
  • A status line: “waiting for user since hh:mm”, “tool call in flight”, etc.

Peek must not attach — multiple sessions can be peeked in sequence cheaply.

3. Inline reply

When the peeked session is in waiting state, the panel exposes a reply textbox. Submitting it routes the reply through the session’s native input path (so a reply to a group-bound session lands in the group, a reply to a DM-bound session lands in the DM, etc.).

4. Status semantics

Three explicit states surfaced consistently across the UI:

  • working — a turn is currently in flight (model or tool calls pending)
  • waiting — the last turn stopped and the session is awaiting user input
  • done — task delivered (cron returned, sessions_yield, subagent finished, etc.)

The current running / idle distinction in the UI doesn’t cleanly separate “the agent is busy” from “the agent is waiting on me”, which is the most common thing users want to know.

5. Background / promote

Lightweight equivalents of CC’s /bg and --bg:

  • A “background” action on any open session that sends it to the overview and keeps it running.
  • A “start new background session” action from the overview that opens a draft task without attaching.

Alternatives considered

No response

Impact

Impact to all users

Evidence/examples

No response

Additional information

What this is not

  • Not a new agent runtime or scheduler. OpenClaw already has heartbeat / cron / sessions_spawn; this is purely a UI for what’s already running.
  • Not tied to a single surface. The same model should apply to both Web Control UI and TUI, with surface-appropriate input mechanics (mouse + keyboard on Web, keyboard + minimal mouse on TUI).
  • Not a multi-agent coordination view. Single-agent multi-session is enough for the common case.

Open questions for maintainers

  1. Is anything similar already on the roadmap or in flight? Pointers to existing issues/PRs welcome.
  2. Is a tab strip preferable to a single overview list, or some combination? CC went with a single list; tabs may be more familiar for web users and map cleanly to TUI keyboard cycling.
  3. Where should this live in the Control UI / TUI navigation — replace the current session list, sit next to it, or open via a shortcut/route?
  4. Should the Web UI and TUI share the same backing data/abstraction (e.g. a single sessions-overview API the gateway exposes), so both surfaces stay in sync automatically?

Happy to follow up with a more detailed design doc or contribute to a PR if the direction lands.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low-priority cleanup, docs, polish, ergonomics, or speculative work.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.enhancementNew feature or requestimpact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.issue-rating: 🌊 off-meta tidepoolIssue quality rating does not apply to this item.

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions