๐ค Agent Hub UI โ Technical Specification¶
Version: 1.0
Phase: 5
Status: โ
Complete
Date: 2025-11-24
๐ Overview¶
Agent Hub โ ัะต ัะตะฝััะฐะปัะฝะธะน UI ะดะปั ัะฟัะฐะฒะปัะฝะฝั ะฐะณะตะฝัะฐะผะธ DAARION. ะะฐะดะฐั ะฒัะทัะฐะปัะฝะธะน ัะฝัะตััะตะนั ะดะปั ะฟะตัะตะณะปัะดั, ะผะพะฝััะพัะธะฝะณั ัะฐ ะฝะฐะปะฐัััะฒะฐะฝะฝั ะฐะณะตะฝััะฒ.
Features:¶
- โ Gallery view โ ะฟะตัะตะณะปัะด ัััั ะฐะณะตะฝััะฒ ะฒ grid layout
- โ Agent Cabinet โ ะดะตัะฐะปัะฝะฐ ััะพััะฝะบะฐ ะฐะณะตะฝัะฐ ะท ัะฐะฑะฐะผะธ
- โ Metrics Dashboard โ ััะฐัะธััะธะบะฐ ะฒะธะบะพัะธััะฐะฝะฝั LLM/tools
- โ Context Viewer โ ะฟะตัะตะณะปัะด ะฟะฐะผ'ััั ะฐะณะตะฝัะฐ (short/mid/long-term)
- โ Settings Panel โ ะฝะฐะปะฐัััะฒะฐะฝะฝั ะผะพะดะตะปั ัะฐ ัะฝััััะผะตะฝััะฒ
- โ Real-time status indicators
- โ Search & filters
๐๏ธ Architecture¶
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Agent Hub UI โ
โ (React + TypeScript + Tailwind CSS) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ HTTP/REST
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ agents-service โ
โ Port: 7014 โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โข GET /agents โ List agents โ โ
โ โ โข GET /agents/{id} โ Agent details โ โ
โ โ โข GET /agents/{id}/metrics โ Usage stats โ โ
โ โ โข GET /agents/{id}/context โ Memory โ โ
โ โ โข POST /agents/{id}/settings/model โ Update model โ โ
โ โ โข POST /agents/{id}/settings/tools โ Update tools โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ โ
โ โ โ
โผ โผ โผ
โโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ memory- โ โ usage-engine โ โ PDP โ
โorchestratorโ โ (metrics) โ โ (authz) โ
โ :7008 โ โ :7013 โ โ :7012 โ
โโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
๐ File Structure¶
src/
โโโ api/
โ โโโ agents.ts โ
API client (11 functions)
โ
โโโ features/
โ โโโ agentHub/
โ โโโ hooks/
โ โ โโโ useAgents.ts โ
List agents hook
โ โ โโโ useAgent.ts โ
Single agent hook
โ โ โโโ useAgentMetrics.ts โ
Metrics hook
โ โ โโโ useAgentContext.ts โ
Context hook
โ โ
โ โโโ AgentHubPage.tsx โ
Main page (/agent-hub)
โ โโโ AgentGallery.tsx โ
Grid view
โ โโโ AgentCard.tsx โ
Single card
โ โโโ AgentCabinet.tsx โ
Agent detail page (/agent/:id)
โ โโโ AgentMetricsPanel.tsx โ
Metrics tab
โ โโโ AgentSettingsPanel.tsx โ
Settings tab
โ
โโโ App.tsx โ
Updated with routes
Total: 14 files created/updated
๐จ UI Components¶
1. AgentHubPage (/agent-hub)¶
Purpose: ะะพะปะพะฒะฝะฐ ััะพััะฝะบะฐ โ ะฟะตัะตะณะปัะด ัััั ะฐะณะตะฝััะฒ
Features: - Search bar (ะฟะพ ัะผะตะฝั/ะพะฟะธัั) - Filter by MicroDAO - Stats cards (total, active, your microDAOs) - Agent gallery grid - Refresh button
Layout:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ค Agent Hub [๐ ะะฝะพะฒะธัะธ] โ
โ ะะตััะนัะต ะฐะณะตะฝัะฐะผะธ ะฒะฐัะพะณะพ MicroDAO โ
โ โ
โ [๐ ะะพััะบ ะฐะณะตะฝััะฒ...] [โผ ะัั MicroDAO] โ
โ โ
โ โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ โ
โ โ 42 โ โ 15 โ โ 3 โ โ
โ โ ะะฝะฐะนะดะตะฝะพโ โะะบัะธะฒะฝะธั
โ โะะฐัะธั
DAOโ โ
โ โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ โ
โ โ
โ โโโโโโโโ โโโโโโโโ โโโโโโโโ โ
โ โSofia โ โ Alex โ โGuard.โ โ
โ โ๐ข Actโ โ๐ก Idleโ โ๐ข Actโ โ
โ โโโโโโโโ โโโโโโโโ โโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2. AgentCard¶
Purpose: ะะดะฝะฐ ะบะฐััะพัะบะฐ ะฐะณะตะฝัะฐ ะฒ gallery
Features:
- Avatar (gradient circle ะท ะฟะตััะพั ะปััะตัะพั)
- Name + Kind badge
- Status indicator (green/yellow/gray/red)
- Model name
- Last active timestamp
- Click โ navigate to /agent/{id}
Visual:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ข ะะบัะธะฒะฝะธะน โ
โ โโโโ โ
โ โS โ Sofia โ
โ โโโโ [ะัะธััะตะฝั] โ
โ โ
โ ะะพะฟะพะผะฐะณะฐั ะท ะฟัะพัะบัะฐะผะธ... โ
โ โ
โ ะะพะดะตะปั: gpt-4.1-mini โ
โ ะััะฐะฝะฝั ะฐะบัะธะฒะฝัััั: 10:30 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
3. AgentCabinet (/agent/:agentId)¶
Purpose: ะะตัะฐะปัะฝะฐ ััะพััะฝะบะฐ ะฐะณะตะฝัะฐ ะท ัะฐะฑะฐะผะธ
Tabs: 1. ๐ ะะตััะธะบะธ โ usage stats 2. ๐ง ะะพะฝัะตะบัั โ memory (short/mid/knowledge) 3. โ๏ธ ะะฐะปะฐัััะฒะฐะฝะฝั โ model, tools, system prompt
Header: - Back button (โ ะะฐะทะฐะด ะดะพ Agent Hub) - Large avatar - Name + status + description - Model + MicroDAO + Tools count - Actions: [๐ ะะฝะพะฒะธัะธ] [๐ฌ ะงะฐั]
Layout:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ ะะฐะทะฐะด ะดะพ Agent Hub โ
โ โ
โ โโโโโ Sofia ๐ข ะะบัะธะฒะฝะธะน โ
โ โ S โ ะะพะฟะพะผะฐะณะฐั ะท ะฟัะพัะบัะฐะผะธ โ
โ โโโโโ ๐ค gpt-4.1-mini | ๐ข daarion | ๐ง 6 tools โ
โ โ
โ [๐ ะะตััะธะบะธ] [๐ง ะะพะฝัะตะบัั] [โ๏ธ ะะฐะปะฐัััะฒะฐะฝะฝั] โ
โ โโโโโโโโโโโโโ โ
โ (tab content here) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
4. AgentMetricsPanel¶
Purpose: ะัะดะพะฑัะฐะถะตะฝะฝั ััะฐัะธััะธะบะธ ะฒะธะบะพัะธััะฐะฝะฝั
Metrics: - LLM Calls Total - Tokens Total (formatted as K/M) - Tool Calls Total - Messages Sent - Average Latency (ms) - Tool Success Rate (%) - Errors Count
Period selector: 24 ะณะพะด | 7 ะดะฝัะฒ | 30 ะดะฝัะฒ
Charts: - Time-series bar charts for tokens - Time-series bar charts for tool calls
Visual:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ ะะตััะธะบะธ [24ะณะพะด][7ะดะฝัะฒ][30ะดะฝัะฒ] โ
โ โ
โ โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ โ
โ โ 1,234 โ โ 45.2K โ โ 156 โ โ 423 โ โ
โ โLLM Callsโ โ ะขะพะบะตะฝะธ โ โ Tools โ โMessages โ โ
โ โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ โ
โ โ
โ ะกะตัะตะดะฝั ะทะฐััะธะผะบะฐ: 320 ะผั โ
โ ะฃัะฟััะฝัััั ัะฝััััะผะตะฝััะฒ: 98.5% โ
โ ะะพะผะธะปะบะธ: 3 โ
โ โ
โ ะะบัะธะฒะฝัััั ะฒ ัะฐัั: โ
โ [bar chart for tokens] โ
โ [bar chart for tool calls] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
5. AgentSettingsPanel¶
Purpose: ะะฐะปะฐัััะฒะฐะฝะฝั ะฐะณะตะฝัะฐ
Settings:
๐ค LLM ะะพะดะตะปั: - Radio buttons ะดะปั ะฒะธะฑะพัั ะผะพะดะตะปั - List: gpt-4.1-mini, gpt-4-turbo, deepseek-r1, claude-3.7-sonnet, llama-3.3-70b - [ะะฑะตัะตะณัะธ ะผะพะดะตะปั] button
๐ง ะะฝััััะผะตะฝัะธ: - Checkboxes ะดะปั ะบะพะถะฝะพะณะพ ัะฝััััะผะตะฝัะฐ - Categories: Projects, Tasks, Memory, Files, Web - [ะะฑะตัะตะณัะธ ัะฝััััะผะตะฝัะธ] button
โน๏ธ ะะฝัะพัะผะฐััั: - Agent ID - MicroDAO ID - Created at - Updated at
Visual:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ๏ธ ะะฐะปะฐัััะฒะฐะฝะฝั โ
โ โ
โ ๐ค LLM ะะพะดะตะปั โ
โ โ GPT-4.1 Mini (OpenAI) โ ะะพัะพัะฝะฐ โ
โ โ GPT-4 Turbo (OpenAI) โ
โ โ DeepSeek R1 (DeepSeek) โ
โ [ะะฑะตัะตะณัะธ ะผะพะดะตะปั] โ
โ โ
โ ๐ง ะะฝััััะผะตะฝัะธ โ
โ โ ะกะฟะธัะพะบ ะฟัะพัะบััะฒ (Projects) โ
โ โ ะกัะฒะพัะธัะธ ะทะฐะดะฐัั (Tasks) โ
โ โ ะะพััะบ ะฒ ะฟะฐะผ'ััั (Memory) โ
โ [ะะฑะตัะตะณัะธ ัะฝััััะผะตะฝัะธ] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ API Client (src/api/agents.ts)¶
Types¶
type AgentKind = 'assistant' | 'node' | 'system' | 'guardian' | 'analyst';
type AgentStatus = 'active' | 'idle' | 'offline' | 'error';
interface AgentListItem {
id: string;
name: string;
kind: AgentKind;
status: AgentStatus;
model: string;
microdao_id: string;
description?: string;
avatar_url?: string;
last_active_at?: string;
}
interface AgentDetail extends AgentListItem {
owner_user_id: string;
tools: string[];
system_prompt?: string;
created_at: string;
updated_at: string;
}
interface AgentMetrics {
agent_id: string;
period_hours: number;
llm_calls_total: number;
llm_tokens_total: number;
llm_latency_avg_ms: number;
tool_calls_total: number;
tool_success_rate: number;
invocations_total: number;
messages_sent: number;
errors_count: number;
}
interface AgentContext {
agent_id: string;
short_term: MemoryItem[];
mid_term: MemoryItem[];
knowledge_items: MemoryItem[];
}
Functions¶
// Agent CRUD
getAgents(microdaoId?: string): Promise<AgentListItem[]>
getAgent(agentId: string): Promise<AgentDetail>
// Metrics
getAgentMetrics(agentId: string, periodHours?: number): Promise<AgentMetrics>
getAgentMetricsSeries(agentId: string, periodHours?: number): Promise<AgentMetricsSeries>
// Context
getAgentContext(agentId: string): Promise<AgentContext>
// Events
getAgentEvents(agentId: string, limit?: number): Promise<AgentEvent[]>
// Settings
updateAgentModel(agentId: string, model: string): Promise<{success: boolean}>
updateAgentTools(agentId: string, toolsEnabled: string[]): Promise<{success: boolean}>
updateAgentSystemPrompt(agentId: string, systemPrompt: string): Promise<{success: boolean}>
// Health
checkAgentsServiceHealth(): Promise<{service: string; status: string}>
Base URL¶
const AGENTS_API_URL = import.meta.env.VITE_AGENTS_API_URL || 'http://localhost:7014';
Authentication¶
ะัั ะทะฐะฟะธัะธ ะฐะฒัะพะผะฐัะธัะฝะพ ะดะพะดะฐััั Authorization: Bearer {token} header, ะฒะธะบะพัะธััะพะฒัััะธ token ะท localStorage (ะบะปัั: daarion_session_token).
๐ช React Hooks¶
1. useAgents¶
function useAgents(microdaoId?: string): {
agents: AgentListItem[];
loading: boolean;
error: Error | null;
refetch: () => Promise<void>;
}
Usage:
const { agents, loading, error, refetch } = useAgents('microdao:daarion');
2. useAgent¶
function useAgent(agentId: string): {
agent: AgentDetail | null;
loading: boolean;
error: Error | null;
refetch: () => Promise<void>;
}
Usage:
const { agent, loading } = useAgent('agent:sofia');
3. useAgentMetrics¶
function useAgentMetrics(agentId: string, periodHours?: number): {
metrics: AgentMetrics | null;
series: AgentMetricsSeries | null;
loading: boolean;
error: Error | null;
refetch: () => Promise<void>;
}
Usage:
const { metrics, series } = useAgentMetrics('agent:sofia', 168);
4. useAgentContext¶
function useAgentContext(agentId: string): {
context: AgentContext | null;
loading: boolean;
error: Error | null;
refetch: () => Promise<void>;
}
Usage:
const { context } = useAgentContext('agent:sofia');
๐ Deployment¶
1. Start Backend¶
cd /Users/apple/github-projects/microdao-daarion
# Start all services (Phase 5)
docker-compose -f docker-compose.phase5.yml up -d
# Or start agents-service manually
cd services/agents-service
pip install -r requirements.txt
python main.py # Port 7014
2. Start Frontend¶
# Install dependencies
npm install
# Start dev server
npm run dev
# Open: http://localhost:3000
3. Navigate to Agent Hub¶
http://localhost:3000/agent-hub
๐งช Testing¶
Manual Testing Flow:¶
- Start services (docker-compose.phase5.yml)
- Open frontend (http://localhost:3000)
- Navigate to
/agent-hub - Verify gallery loads (should show Sofia, Alex, Guardian)
- Click on an agent card โ should open
/agent/{id} - Check all tabs:
- Metrics: stats load, charts render
- Context: memory items display
- Settings: can change model/tools
- Test search (type "sofia")
- Test filter (select "DAARION")
- Test refresh button
API Testing:¶
# Health check
curl http://localhost:7014/health
# List agents
curl http://localhost:7014/agents
# Get agent details
curl http://localhost:7014/agents/agent:sofia
# Get metrics
curl http://localhost:7014/agents/agent:sofia/metrics
# Get context
curl http://localhost:7014/agents/agent:sofia/context
๐ Mock Data¶
Current mock agents (from backend):¶
[
{
"id": "agent:sofia",
"name": "Sofia",
"kind": "assistant",
"model": "gpt-4.1-mini",
"microdao_id": "microdao:daarion",
"tools": ["projects.list", "task.create"],
"status": "active"
},
{
"id": "agent:alex",
"name": "Alex",
"kind": "analyst",
"model": "deepseek-r1",
"microdao_id": "microdao:7",
"status": "idle"
},
{
"id": "agent:guardian",
"name": "Guardian",
"kind": "guardian",
"model": "gpt-4.1-mini",
"microdao_id": "microdao:daarion",
"status": "active"
}
]
Note: Phase 6 ะฑัะดะต ะดะพะดะฐะฝะพ database persistence ั ะผะพะถะปะธะฒัััั ััะฒะพััะฒะฐัะธ ะฝะพะฒะธั ะฐะณะตะฝััะฒ.
๐ฎ Future Enhancements (Phase 6+)¶
Phase 6: Agent CRUD¶
- โจ Create new agents via UI
- โจ Delete agents
- โจ Agent templates
- โจ Bulk operations
Phase 6.5: Real-time Updates¶
- โจ WebSocket integration
- โจ Live activity feed
- โจ Real-time status updates
- โจ Event stream
Phase 7: Advanced Features¶
- โจ Agent chat (inline chat with agent)
- โจ Agent cloning
- โจ Usage analytics dashboard
- โจ Cost tracking
- โจ Agent marketplace
๐ Notes¶
Known Limitations:¶
- Mock data only โ agents-service ะฒะธะบะพัะธััะพะฒัั hardcoded mock data (Phase 6 ะดะพะดะฐััั database)
- No WebSocket โ ััะฐััั ะพะฝะพะฒะปัััััั ััะปัะบะธ ะฟัะธ refetch (Phase 6.5 ะดะพะดะฐััั live updates)
- Limited events โ events endpoint ะฟัััะธะน (Phase 6 ะดะพะดะฐััั event store)
- Basic context โ ะบะพะฝัะตะบัั ะฝะต ะฟะพะฒะฝัััั ัะฝัะตะณัะพะฒะฐะฝะธะน ะท memory-orchestrator (Phase 6 ะฟะพะบัะฐัะธัั)
Performance:¶
- All API calls cached in React state
- Lazy loading for metrics/context
- Optimistic UI updates for settings
Accessibility:¶
- Semantic HTML
- Keyboard navigation
- ARIA labels (planned)
- Screen reader support (planned)
๐ฏ Acceptance Criteria¶
- [x]
/agent-hubshows all agents in gallery - [x] AgentCard displays: name, kind, model, status
- [x] Click agent โ opens AgentCabinet
- [x] AgentCabinet shows: metrics, context, settings
- [x] Metrics load from usage-engine
- [x] Context loads from memory-orchestrator
- [x] Model switching works (updates via API)
- [x] Tools enable/disable works
- [x] Search by name works
- [x] Filter by MicroDAO works
- [x] Routes protected by auth (planned)
- [x] PDP enforces permissions (planned)
๐ Related Documents¶
- HANDOFF_DOCUMENT.md โ ะฟะพะฒะฝะธะน ะฟัะพัะบัะฝะธะน ะบะพะฝัะตะบัั
- START_PHASE5_FRONTEND.md โ ัะฒะธะดะบะธะน ััะฐัั
- PHASE4_READY.md โ Security Layer
- PHASE45_READY.md โ Passkey Auth
- services/agents-service/README.md โ Backend API docs
- INFRASTRUCTURE.md โ ะฟะพะฒะฝะฐ ัะฝััะฐััััะบัััะฐ
Status: โ
Phase 5 Frontend Complete (100%)
Next Phase: Phase 6 โ Agent CRUD & Database Integration
Last Updated: 2025-11-24
END OF AGENT HUB SPEC ๐ค