Agent Workspace Console
Agent Workspace Console
The Agent Workspace is a real-time, fleet-wide control centre for all AI agents running across your products. Navigate to it from the dashboard sidebar (Terminal icon) at /dashboard/agent-workspace.
Overview
The workspace gives you live visibility into every active pipeline and lets you intervene at any point — pausing agents, injecting instructions, or taking full manual control — without stopping the rest of the fleet.
Layout
The console is split into two panels:
Live Agent Panel (Left)
Lists every active pipeline across all your products. Each pipeline card shows:
- Pipeline status — current stage (e.g.
implementing,testing,releasing). - Agent job pills — individual agent jobs within the pipeline and their statuses.
- Elapsed timer — how long the pipeline has been running.
- Pending intervention badges — how many unacknowledged interventions are queued.
Click a pipeline card to filter the Activity Feed to that pipeline only.
Activity Feed Console (Right)
A terminal-style log stream displaying real-time output from all active pipelines. When a specific pipeline is selected in the left panel, the feed filters to that pipeline's logs only.
Quick Inject Bar — at the bottom of the console, type a free-form instruction and press ⌘↵ (macOS) or Ctrl↵ (Windows/Linux) to inject it directly into the selected pipeline's active agent context.
Human-in-the-Loop Controls
Each pipeline card in the Live Agent Panel exposes five intervention actions:
| Action | Icon | Behaviour |
|---|---|---|
| Interrupt | ⏸ | Signals the agent to pause before its next tool call. The pipeline enters a paused state and waits. |
| Inject | 💬 | Opens a prompt where you type an instruction. The text is injected into the agent's running context on its next cycle. |
| Take Over | ✋ | Flags the pipeline as under manual control. Auto-resume is blocked until you explicitly resume it. |
| Resume | ▶ | Clears an interrupted or taken_over state and allows the pipeline to continue autonomously. |
| Note | 📝 | Attaches a plain-text observer note to the pipeline's audit log without affecting execution. |
All interventions are written to the agent_interventions table and are visible in the Audit Log.
Real-Time Data Stream
The workspace is powered by a Server-Sent Events (SSE) connection to /api/agent-workspace/stream.
Connection behaviour
- On connect, the server sends a
fleet_snapshotevent containing the current state of all active pipelines and up to 300 recent log entries. - Every 3 seconds, the server polls for state changes. It uses fingerprint-based diffing and only emits a
fleet_updateevent when something has actually changed, keeping bandwidth low. - New log lines are streamed as
fleet_logsevents. - A
heartbeatevent is sent every 15 seconds to keep the connection alive through proxies and load balancers.
SSE Event Types
| Event | Payload | Description |
|---|---|---|
fleet_snapshot | PipelineSnapshot[] | Full initial state of all active pipelines |
fleet_update | PipelineSnapshot[] | Changed pipelines only (diff since last poll) |
fleet_logs | AgentLog[] | New log entries from any active pipeline |
heartbeat | { ts: number } | Keep-alive ping |
error | { message: string } | Stream-level error notification |
Audit Log
Every human intervention — Interrupt, Inject, Take Over, Resume, or Note — is persisted to the agent_interventions database table. This provides a complete, tamper-evident record of all manual actions taken against any pipeline. You can review the full history in the Audit Log section of the dashboard (/dashboard/agent-audit).
Sidebar Navigation
The Agent Workspace is listed in the account sidebar under the Terminal icon. The sidebar also now includes:
- Template Marketplace — pre-built product templates (previously labelled "Marketplace").
- Agent Marketplace — installable agent packages with ratings.
Access Control
The SSE stream and all agentWorkspace tRPC procedures are authenticated. Only pipelines belonging to projects you have access to are visible. Unauthenticated requests to /api/agent-workspace/stream receive a 401 Unauthorized response.