TASK: Agent Hub UI — Agent Monitoring & Management Dashboard¶
Priority: High (Parallel to Phase 3)
Estimated Time: 3-4 weeks
Dependencies: Phase 2 complete
Goal¶
Створити централізований UI для моніторингу та управління агентами в DAARION: - Agent Gallery — список всіх агентів з їх статусами - Agent Cabinet — детальна інформація про агента - Real-time monitoring — активність, метрики, логи - Agent Configuration — налаштування, інструкції, tools - Conversational Interface — прямий чат з агентом
Architecture Overview¶
Agent Hub UI (React)
↓
├─ Agent Gallery (список агентів)
├─ Agent Cabinet (детальний dashboard)
├─ Agent Chat (direct conversation)
├─ Agent Metrics (real-time stats)
└─ Agent Configuration (edit settings)
↓
Backend:
├─ agents-service (агенти + blueprints)
├─ agent-runtime (execution stats)
├─ messaging-service (direct chat)
└─ NATS (real-time events)
Deliverables¶
1. Frontend Components (src/features/agent-hub/)¶
Structure:
src/features/agent-hub/
components/
AgentGallery.tsx # Grid of agent cards
AgentCard.tsx # Single agent preview
AgentCabinet.tsx # Full agent dashboard
AgentMetrics.tsx # Real-time metrics panel
AgentLogs.tsx # Activity log stream
AgentConfiguration.tsx # Edit agent settings
AgentChat.tsx # Direct chat interface
AgentToolsPanel.tsx # List of agent tools
hooks/
useAgents.ts # Fetch agents list
useAgentDetails.ts # Fetch single agent
useAgentMetrics.ts # Real-time metrics
useAgentLogs.ts # Activity stream
useDirectChat.ts # Direct chat with agent
types/
agent.ts # TypeScript types
AgentHubPage.tsx # Main hub page
2. Backend: agents-service (NEW)¶
Port: 7010
Purpose: Agent blueprints, configuration, metadata
Structure:
services/agents-service/
main.py
models.py
blueprints.py
config.yaml
requirements.txt
Dockerfile
README.md
API:
GET /api/agents¶
List all agents:
{
"agents": [
{
"id": "agent:sofia",
"name": "Sofia-Prime",
"kind": "assistant",
"status": "active",
"avatar": "https://...",
"description": "Project manager & task organizer",
"capabilities": ["task_mgmt", "summarization"],
"microdao_id": "microdao:daarion",
"created_at": "2025-01-01T00:00:00Z",
"last_active": "2025-11-24T12:00:00Z"
}
]
}
GET /api/agents/{agent_id}¶
Get agent details:
{
"id": "agent:sofia",
"name": "Sofia-Prime",
"kind": "assistant",
"status": "active",
"avatar": "https://...",
"description": "...",
"instructions": "You are Sofia, a helpful assistant...",
"model": "gpt-4.1-mini",
"tools": ["projects.list", "task.create", "followup.create"],
"capabilities": {...},
"metrics": {
"total_messages": 1234,
"total_invocations": 567,
"avg_response_time_ms": 2345,
"success_rate": 0.98
},
"config": {
"temperature": 0.7,
"max_tokens": 1000,
"quiet_hours": "22:00-08:00"
}
}
PUT /api/agents/{agent_id}¶
Update agent configuration:
{
"instructions": "Updated instructions...",
"model": "gpt-4",
"tools": ["projects.list", "task.create"],
"config": {
"temperature": 0.8,
"max_tokens": 2000
}
}
GET /api/agents/{agent_id}/metrics/realtime¶
Real-time metrics (WebSocket or SSE):
{
"agent_id": "agent:sofia",
"timestamp": "2025-11-24T12:34:56Z",
"active_conversations": 3,
"messages_last_hour": 15,
"avg_response_time_ms": 2100,
"current_load": "normal"
}
GET /api/agents/{agent_id}/logs?limit=50¶
Activity logs:
{
"logs": [
{
"id": "log-123",
"timestamp": "2025-11-24T12:34:56Z",
"event_type": "message.sent",
"channel_id": "channel-uuid",
"content_preview": "Створила задачу 'Phase 3 testing'",
"metadata": {
"latency_ms": 2345,
"tokens_used": 567
}
}
]
}
3. UI Components Detail¶
AgentGallery.tsx¶
- Grid layout (3-4 columns)
- Agent cards with:
- Avatar
- Name + status badge
- Short description
- Last active time
- Quick stats (messages, response time)
- Filter by:
- Status (active, paused, error)
- Kind (assistant, coordinator, specialist)
- MicroDAO
- Search by name
Wireframe:
┌─────────────────────────────────────────┐
│ Agent Hub [+ New] │
├─────────────────────────────────────────┤
│ [Filter: All] [Search: ...] │
├─────────────────────────────────────────┤
│ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ │ 👤 Sofia │ │ 👤 Alex │ │ 👤 Eva │
│ │ ● Active │ │ ● Active │ │ ⏸ Paused │
│ │ PM & Org │ │ Tech │ │ Research │
│ │ 234 msgs │ │ 156 msgs │ │ 89 msgs │
│ └──────────┘ └──────────┘ └──────────┘
AgentCabinet.tsx¶
- Header:
- Avatar, name, status
- Quick actions (pause, edit, chat)
- Tabs:
- Overview: Key stats + recent activity
- Metrics: Real-time charts
- Logs: Activity stream
- Configuration: Edit settings
- Chat: Direct conversation
Wireframe:
┌─────────────────────────────────────────┐
│ 👤 Sofia-Prime [Edit] [Chat]│
│ ● Active | Last seen: 2m ago │
├─────────────────────────────────────────┤
│ [Overview] [Metrics] [Logs] [Config] │
├─────────────────────────────────────────┤
│ 📊 Statistics (24h) │
│ Messages: 45 | Invocations: 23 │
│ Avg Response: 2.3s | Success: 98% │
│ │
│ 📝 Recent Activity │
│ • 12:34 - Replied in #general │
│ • 12:30 - Created task "Phase 3 test" │
│ • 12:25 - Summarized meeting notes │
└─────────────────────────────────────────┘
AgentChat.tsx¶
- Direct 1-on-1 chat with agent
- Similar to Messenger UI
- Shows agent thinking/tools usage
- Context: "Direct conversation (not in channel)"
4. Real-time Updates¶
WebSocket endpoint: ws://localhost:7010/ws/agents/{agent_id}
Events:
{
"type": "agent.message.sent",
"agent_id": "agent:sofia",
"channel_id": "channel-uuid",
"timestamp": "2025-11-24T12:34:56Z",
"content_preview": "Created task..."
}
{
"type": "agent.metrics.update",
"agent_id": "agent:sofia",
"metrics": {
"active_conversations": 3,
"messages_last_hour": 15
}
}
{
"type": "agent.status.changed",
"agent_id": "agent:sofia",
"old_status": "active",
"new_status": "paused"
}
5. Integration Points¶
With Phase 2:
- Uses existing messaging-service for direct chat
- Displays logs from agent-runtime invocations
- Shows agent status from agent-filter
With Phase 3:
- Shows LLM usage (tokens, cost) from llm-proxy
- Displays memory stats from memory-orchestrator
- Lists available tools from toolcore
With NATS:
- Subscribes to agent.* events for real-time updates
- Publishes agent.config.updated on changes
6. Mock Data (Development)¶
agents.mock.ts:
export const mockAgents: Agent[] = [
{
id: "agent:sofia",
name: "Sofia-Prime",
kind: "assistant",
status: "active",
avatar: "/avatars/sofia.png",
description: "Project manager & task organizer",
capabilities: ["task_mgmt", "summarization", "planning"],
microdao_id: "microdao:daarion",
created_at: "2025-01-01T00:00:00Z",
last_active: "2025-11-24T12:00:00Z",
metrics: {
total_messages: 1234,
total_invocations: 567,
avg_response_time_ms: 2345,
success_rate: 0.98
}
},
{
id: "agent:alex",
name: "Alex-Tech",
kind: "specialist",
status: "active",
avatar: "/avatars/alex.png",
description: "Technical specialist for development tasks",
capabilities: ["code_review", "debugging", "documentation"],
microdao_id: "microdao:daarion",
created_at: "2025-01-15T00:00:00Z",
last_active: "2025-11-24T11:45:00Z",
metrics: {
total_messages: 856,
total_invocations: 423,
avg_response_time_ms: 3100,
success_rate: 0.96
}
}
];
7. Tech Stack¶
Frontend: - React 18 + TypeScript - Tailwind CSS - React Query (TanStack Query) - React Router - WebSocket (for real-time)
Backend: - Python 3.11 + FastAPI - PostgreSQL (agents DB) - NATS (events) - Docker
8. Database Schema¶
agents table:
CREATE TABLE agents (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
kind TEXT NOT NULL, -- assistant, coordinator, specialist
status TEXT NOT NULL DEFAULT 'active', -- active, paused, error
avatar TEXT,
description TEXT,
instructions TEXT NOT NULL,
model TEXT NOT NULL,
tools JSONB DEFAULT '[]',
capabilities JSONB DEFAULT '{}',
config JSONB DEFAULT '{}',
microdao_id TEXT NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW(),
last_active TIMESTAMPTZ
);
CREATE INDEX idx_agents_microdao ON agents(microdao_id);
CREATE INDEX idx_agents_status ON agents(status);
agent_metrics table:
CREATE TABLE agent_metrics (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
agent_id TEXT NOT NULL REFERENCES agents(id),
timestamp TIMESTAMPTZ DEFAULT NOW(),
event_type TEXT NOT NULL, -- message.sent, invocation, error
channel_id TEXT,
latency_ms FLOAT,
tokens_used INT,
success BOOLEAN,
metadata JSONB
);
CREATE INDEX idx_metrics_agent_time ON agent_metrics(agent_id, timestamp DESC);
9. Routes¶
Frontend routes:
/agents → AgentGallery (list)
/agents/:agentId → AgentCabinet (dashboard)
/agents/:agentId/chat → AgentChat (direct conversation)
/agents/:agentId/config → AgentConfiguration (edit)
10. Acceptance Criteria¶
✅ Agent Gallery: - Shows all agents with status badges - Filter by status, kind, microDAO - Search by name - Responsive grid layout
✅ Agent Cabinet: - Displays all agent details - Shows real-time metrics - Activity log stream - Configuration editor
✅ Agent Chat: - Direct 1-on-1 conversation - Shows agent thinking/tools - Message history
✅ Real-time Updates: - Metrics auto-refresh (WebSocket) - Activity log auto-updates - Status changes reflected immediately
✅ Integration: - Works with Phase 2 (messaging, runtime) - Works with Phase 3 (LLM, memory, tools) - Uses NATS for events
11. Implementation Steps¶
Week 1: Backend Foundation¶
- Create
agents-service(FastAPI) - Database schema + migrations
- Basic CRUD endpoints
- Mock agent blueprints
Week 2: Frontend Components¶
- AgentGallery + AgentCard
- AgentCabinet (layout + tabs)
- AgentMetrics panel
- AgentLogs stream
Week 3: Real-time & Integration¶
- WebSocket for real-time updates
- Direct chat integration
- Configuration editor
- NATS events
Week 4: Polish & Testing¶
- UI polish (animations, UX)
- Error handling
- E2E testing
- Documentation
12. Future Enhancements (Phase 3.5+)¶
🔜 Agent creation wizard - GUI for creating new agents - Template selection - Tool assignment
🔜 Agent analytics - Charts (messages over time) - Cost tracking - Performance insights
🔜 Agent marketplace - Browse community agents - Install/deploy agents - Agent templates
🔜 Multi-agent orchestration - Agent chains - Workflow builder - Agent collaboration
Quick Start (After Implementation)¶
# Start agents-service
docker-compose -f docker-compose.agents.yml up -d
# Frontend dev
cd node-network-app
npm run dev
# Open
open http://localhost:8899/agents
Documentation¶
After implementation, create:
- /docs/AGENT_HUB_SPEC.md — Full specification
- /docs/AGENT_SERVICE_API.md — API documentation
- /services/agents-service/README.md — Service setup
Status: 📋 Spec Ready
Version: 1.0.0
Last Updated: 2025-11-24
READY TO BUILD! 🚀