5.7 KiB
Agent Sessions Hub
Overview
The Agent Sessions Hub (/sessions) provides a unified command workspace for tracking multi-agent coordination across your BeadBoard projects. It combines task status, agent communication, and derived activity into a social-dense interface optimized for understanding "who's doing what" at a glance.
Features
1. Epic-Grouped Task Feed
Tasks are automatically organized by their parent Epic, providing logical context for understanding work scope.
- Session State Indicators: Each task displays its real-time state (active, reviewing, needs_input, completed, stale)
- Owner & Actor Tracking: See who owns the task and who last acted on it
- Communication Badges: Unread message counts and pending acknowledgment flags
2. Agent Communication Integration
Built-in cross-agent messaging system for coordination without leaving the dashboard.
Message Types:
HANDOFF- Pass context to another agentBLOCKED- Request help or flag blockersINFO- Share updates or documentation
Communication Features:
- Inbox view with unread/read/acked states
- Required acknowledgments for critical handoffs
- Per-bead conversation threads
3. Agent Statistics & Productivity Metrics
Real-time performance tracking for each registered agent.
Metrics Tracked:
- Active tasks (currently in progress)
- Completed tasks (closed beads)
- Handoffs sent (coordination events)
- Recent wins (last 3 completed tasks)
4. Derived Activity Engine
Instead of storing history separately, BeadBoard computes activity on-demand by diffing snapshots of issues.jsonl.
Event Types Generated:
- Bead lifecycle: created, closed, reopened
- Status changes: todo → in_progress → done
- Assignee changes
- Priority, title, description updates
- Label and dependency changes
Persistence:
- File-backed ring buffer survives server restarts
- O(N) snapshot diffing algorithm
- No separate event database required
Architecture
Backend Components
- Agent Registry (
src/lib/agent-registry.ts): Maintains agent identity and roles - Agent Mail (
src/lib/agent-mail.ts): Cross-agent messaging with inbox/ack protocol - Agent Reservations (
src/lib/agent-reservations.ts): File/scope locking to prevent collisions - Agent Sessions (
src/lib/agent-sessions.ts): Session state derivation and task feed builder - Snapshot Differ (
src/lib/snapshot-differ.ts): O(N) diffing engine for activity events - Activity Persistence (
src/lib/activity-persistence.ts): File-backed event buffer
API Endpoints
GET /api/sessions- Fetch session task feedGET /api/sessions/[beadId]/conversation- Get full conversation thread for a beadPOST /api/sessions/[beadId]/comment- Add a comment to a bead sessionPOST /api/sessions/[beadId]/messages/[messageId]/read- Mark message as readPOST /api/sessions/[beadId]/messages/[messageId]/ack- Acknowledge messageGET /api/agents/[agentId]/stats- Fetch agent productivity metrics
Frontend Components
- SessionsPage (
src/components/sessions/sessions-page.tsx): Main layout and orchestration - TaskCard components: Visual representation of session state
- AgentStatsPanel: Metrics dashboard per agent
Session States
Tasks automatically transition between states based on activity and communication:
| State | Description | Visual Indicator |
|---|---|---|
active |
Status is in_progress, recent activity |
Green pulse |
reviewing |
Under review or verification | Blue |
deciding |
Status is todo or ready, waiting for claim |
Gray |
needs_input |
Status is blocked or has pending required acknowledgments |
Yellow/Orange |
completed |
Status is closed |
Green checkmark |
stale |
No activity in 24+ hours | Faded/Red |
Integration with bb agent CLI
The Sessions Hub visualizes data managed by the bb agent command-line interface. See docs/agent-session-flow.md for the operator workflow.
Key Commands:
bb agent register --name <name> --role <role>- Register agent identitybb agent send --from <sender> --to <recipient> --bead <id> --category <type>- Send messagebb agent inbox --agent <name>- Check messagesbb agent reserve --agent <name> --scope <glob> --bead <id>- Reserve filesbb agent status --bead <id>- Check reservation status
Data Flow
- Source of Truth:
.beads/issues.jsonlviabdCLI - Activity Generation: Watcher detects changes → snapshot differ → event bus
- Agent Coordination:
bbCLI writes to.beads/agents/directory - UI Refresh: SSE stream (
/api/events) pushes updates to frontend in real-time
Configuration
No configuration required. The Sessions Hub automatically:
- Discovers registered agents from
.beads/agents/ - Builds communication graph from mailboxes
- Derives session states from current bead status + activity
Performance
- O(N) Diffing: Snapshot differ scales linearly with number of beads
- Ring Buffer: Activity persistence uses fixed-size memory buffer (configurable)
- Real-time Updates: SSE keeps UI synchronized without polling
Limitations
- Comment interactions are not yet streamed to the timeline
- Cross-project agent coordination requires agents to be registered in each project
- Stale threshold is fixed at 24 hours (not user-configurable)
Related Documentation
docs/agent-session-flow.md- CLI workflow guide for operatorsdocs/features/timeline.md- Chronological activity feeddocs/RFC-001-Agent-Coordination.md- Agent coordination designdocs/adr/2026-02-14-beadboard-driver-skill-and-bb-resolution.md- beadboard-driver skill