Session Dashboards: Agent-Built Widgets, Boards, Tabs, and Docked Chat

Learn how to use session dashboards in the Control UI, where your agent generates live widgets. This page covers building, pinning, and managing dashboards for developers and power users.

Read this when

  • Using or explaining session dashboards in the Control UI
  • Deciding what agents can do on a board and what needs an operator grant

Every thread inside the Control UI operates in two modes: the familiar conversation view and a dashboard, a dynamic grid of live widgets your agent generates for you. A thread without any widgets functions purely as a chat interface. As soon as a widget gets pinned, a Chat | Dashboard toggle shows up in the header, and the dashboard becomes the primary workspace with your chat panel docked alongside it.

No setup or separate application is required. Dashboards are a built-in capability, tied to the thread, stored with the agent, and persist through /new and /reset (the conversation history resets, but the dashboard remains).

Build a dashboard by asking

Tell your agent what kind of information you need to see:

Create a widget named revenue-graph: an interactive bar chart of monthly revenue. Add "Bars" and "Trend" buttons that switch views. Pin it to my dashboard.

The agent first renders the widget inline in the chat so you can preview it before committing. From that point:

  • You pin it: Hover over the inline widget and select Pin to dashboard.
  • Or the agent pins it directly when you request it, and can modify it later using its name. Widgets have fixed names, so "update revenue-graph with June's numbers" swaps out the content in place while the board layout stays unchanged.

Widgets are self-contained mini applications (HTML/JS/SVG inside a strict sandbox). Any buttons or view toggles within a widget work immediately. Switching a chart view, for instance, never requires agent involvement.

The board

  • Fluid grid. Drag widgets by their handle, and everything automatically rearranges and tightens up. Resize using the handle or choose a size preset (small, medium, large, extra large) from the widget menu. No one places pixels, neither you nor the agent.
  • Tabs. A board can contain multiple pages. For example, an overview tab and a focused tab with one large widget. Each tab remembers its own chat dock position.
  • Docked chat. On the dashboard view, your conversation can dock to the left, right, or bottom. It resizes like the sidebar and can be completely hidden. The agent still hears you when you bring it back.
  • Agent parity. Anything you can do, the agent can also do using its dashboard tool: add, update, move, resize, and remove widgets, manage tabs, switch the active tab, and reposition or hide the chat dock. Ask "put the chat on the left and show the finance tab" and watch it happen.

What widgets are allowed to do

A widget that only displays content needs no approval. It appears instantly, just like inline chat widgets, and its network access is completely disabled.

Widgets that require reach must declare it, and you grant it once per widget with a single tap:

  • Network (net): Fetch declared HTTPS origins directly from the sandbox. A weather card that refreshes itself from an API is one example.
  • Gateway data (data): Read-only feeds such as sessions, usage, or cron status, resolved by the gateway. The widget never holds your token.
  • Automation (actions): Trigger a specific cron job. A button can run a real task (which may use a smaller model) without waking your main conversation.
  • Prompt (prompt): Send messages into your thread without the per-click confirmation that unapproved widgets require.

Enabled plugins can add their own named read-only feeds and actions to these capability lists. Disabling the plugin removes those integrations.

Grants are tied to the exact widget bytes and revision you reviewed. If the agent modifies the widget and requests more than you approved, it returns to pending status. Refreshing content within the same permissions keeps the grant. Widget interactions the agent should know about, such as filters you clicked or views you switched, reach it quietly as session notices. It stays informed without being interrupted.

MCP apps on the board

If your gateway has MCP servers configured, interactive MCP apps that appear in chat can be pinned like any other widget. Pinned apps come back to life on the board with fresh sessions. By default they are display-only. Granting the widget its declared server tools makes it fully interactive, with the same one-tap, revision-bound approval as everything else.

Good to know

  • Resetting a thread that has a board asks for confirmation and keeps the board.
  • Deleting a thread deletes its board.
  • Boards live on your gateway in the owning agent's database and appear on every device you connect from.
  • The security model, storage details, and design rationale are documented in Dashboard Architecture, including the documented sandbox tradeoffs.