Dashboard โ
OpenSpider includes a real-time web dashboard built with React and Vite, served directly by the Express server on port 4001.
Accessing the Dashboard โ
openspider dashboardOr navigate to http://localhost:4001 in your browser.
Version Badge โ
The dashboard displays the current OpenSpider version (e.g. v2.2.0) next to the logo in the sidebar. The version is fetched live from the /api/health endpoint and reflects what's in package.json.
Theme Toggle ๐จ โ
The sidebar includes a 3-way theme toggle at the bottom:
| Mode | Icon | Behavior |
|---|---|---|
| Light | โ๏ธ | Light backgrounds, dark text |
| Dark | ๐ | Dark backgrounds, light text (default) |
| Auto | ๐ป | Follows your OS prefers-color-scheme setting |
The selected theme is persisted in localStorage and applied instantly via CSS custom properties.
Health Status Indicator ๐ โ
A real-time health indicator at the bottom of the sidebar shows system health at a glance:
| Status | Color | Meaning |
|---|---|---|
| ๐ข Healthy | Green | All systems operational |
| ๐ก Degraded | Amber | Some components unavailable (e.g. WhatsApp disconnected) |
| ๐ด Unreachable | Red | Server not responding |
Hover over the health indicator to see detailed component status:
- WhatsApp connection status
- LLM provider name
- Server status
- Memory usage (MB)
- Uptime duration
The indicator auto-polls /api/health every 30 seconds.
Dashboard Tabs โ
Agent Chat ๐ฌ โ
A full chat interface for communicating directly with your agents.
Features:
- Send messages and see agent responses in real-time via WebSocket
- File attachments โ Click the ๐ paperclip to attach images, documents, or any file
- Input history โ Press
โ/โarrow keys to recall previous messages - Agent emoji avatars โ Each agent displays its role emoji (๐ง Manager, โก Coder, ๐ฎ Researcher)
- Cron job results โ Scheduled task outputs display inline with a โฐ Cron badge
- Verbose/Non-verbose toggle โ Switch between raw logs and clean chat bubbles
- Messages show which agent responded with timestamps (visible on hover)
Agent Flow ๐ โ
A live visualization of the ManagerโWorker delegation flow using Mermaid-based graphs.
Features:
- Nodes represent agents with role-specific emojis
- Instruction labels on edges show what the Manager delegated
- Result nodes appear after task completion with result snippets
- Updates in real-time as agents work
System Logs ๐ โ
A comprehensive log viewer with filtering, search, and export.
Features:
- Level filtering โ Toggle Trace, Debug, Info, Warn, Error independently
- Level counts โ Each button shows the count (e.g.,
TRACE 78) - Content classification โ Logs auto-classified by keywords (error/failed โ Error, warn/โ โ Warn)
- Search โ Real-time text search across all logs
- Download โ Export filtered logs as a
.logfile - Auto-follow โ Checkbox to auto-scroll to newest logs
- Color-coded โ Left border and level badge colored by severity
Agent Workspace ๐ โ
Manage your AI team directly from the UI without touching the core filesystem.
Features:
- Create Agents โ Click "Create Agent" to bootstrap a new agent persona.
- Rename Agents โ Select an agent and edit the
namefield in the CAPABILITIES tab to gracefully change its display name. - Modify Personas โ Edit the
IDENTITYandSOULtabs to tweak behavior, vibe, and safety guardrails in real-time. - Teach User Context โ Update the
USER CONTEXTtab to persist your preferences or background so the agent remembers. - Manage Skills & Models โ Use the
CAPABILITIEStab to add/remove tools or switch the underlying LLM processing the agent's thought loop. - Instant Persistence โ Click Save Changes to immediately sync your UI edits out to the agent's pillar files (
IDENTITY.md,SOUL.md, etc.).
Dynamic Skills โ๏ธ โ
View metadata for available agent skills:
browse_webโ Web browsing via Playwrightschedule_taskโ Create cron jobswait_for_userโ Pause for user input- Custom skills can be added via skill metadata files in
skills/
Usage Analytics ๐ โ
Track token usage, API calls, and costs across providers and models.
WhatsApp Security ๐ โ
Visual interface for managing WhatsApp access controls:
- DM Allowlist โ Add/remove permitted phone numbers
- Group Allowlist โ Add/remove permitted groups
- Per-group mode toggles โ Switch each group between Mention and Listen mode
- LID Identity Mappings โ View pending blocked LIDs and assign phone numbers. When an unknown LID tries to DM, it appears here as a pending amber card. Type the phone number and click "Map" to allow access. Resolved mappings are listed with delete buttons.
- Voice Settings โ Configure ElevenLabs voice responses (see Voice Messages)
- Email Notification Settings โ Configure email recipients:
- Cron Job Results To โ Email address where automated cron job results are delivered
- Vendor & Friends To โ Default email address for outbound emails to vendors/contacts
- Changes save directly to
workspace/whatsapp_config.jsonandworkspace/email_config.json
Cron Jobs โฐ โ
Manage scheduled tasks:
- View all configured cron jobs with descriptions and intervals
- Enable/disable individual jobs
- Manually trigger a job for immediate execution
- Monitor last run timestamps
- Override the active LLM Provider and Model on a per-job basis
- Cron results appear inline in the Agent Chat view
Process Monitor ๐ฅ๏ธ โ
Monitor running system processes and resource usage.
Overview ๐ โ
A high-level summary view of your OpenSpider instance.
Sessions ๐ โ
View and manage active agent sessions.
Favicon & PWA Icon โ
The dashboard includes a full favicon suite for crisp display across all platforms:
| File | Size | Used for |
|---|---|---|
favicon-16.png | 16ร16 | Browser tab icon |
favicon-32.png | 32ร32 | High-DPI browser tabs |
favicon-192.png | 192ร192 | Android home screen |
favicon-512.png | 512ร512 | PWA splash screen |
apple-touch-icon.png | 180ร180 | iOS home screen bookmark |
The browser chrome (address bar on Android/Chrome) uses #0f172a as the theme color, matching the dark navy dashboard background.
TIP
If the favicon doesn't update after redeployment, do a hard refresh: Cmd+Shift+R (Mac) or Ctrl+Shift+R (Windows). Browsers cache favicons aggressively.
Architecture โ
The dashboard is a single-page React application:
| Component | File | Description |
|---|---|---|
| Main App | dashboard/src/App.tsx | All tabs and views (~2450 lines) |
| WhatsApp Security | dashboard/src/components/WhatsAppSecurity.tsx | Channel config + LID mapping UI |
| Email Settings | dashboard/src/components/EmailSettings.tsx | Email notification config |
| Voice Settings | dashboard/src/components/VoiceSettings.tsx | ElevenLabs voice config |
| Agent Flow Graph | dashboard/src/components/AgentFlowGraph.tsx | Mermaid flow visualization |
| Usage View | dashboard/src/components/UsageView.tsx | Token usage analytics |
Real-time Updates โ
The dashboard connects to the server via WebSocket for:
- Agent chat messages
- Agent flow events (task_start, task_complete)
- System log streaming
- Chat response notifications (typing indicators)
API Endpoints โ
| Endpoint | Method | Description |
|---|---|---|
/api/health | GET | System health, version, uptime, component status |
/api/config | GET | Current LLM provider and connection status |
/api/chat/history | GET | Chat message history |
/api/agents | GET | Agent configurations |
/api/skills | GET | Available skills |
/api/usage | GET | Token usage data |
/api/cron | GET | Cron job configurations |
/api/processes | GET | Running processes |
/api/whatsapp/config | GET | WhatsApp security config |
/api/whatsapp/lid-mappings | GET | All LIDโphone mappings |
/api/whatsapp/lid-pending | GET | Unmapped pending LIDs |
/api/whatsapp/lid-map | POST | Add a LIDโphone mapping |
/api/whatsapp/lid-map/:lid | DELETE | Remove a LID mapping |
/api/email/config | GET | Email notification settings |
/api/email/config | POST | Save email notification settings |
/api/voice/config | GET | Voice response config |
Build & Serve โ
In production, the dashboard is pre-built and served as static files:
cd dashboard && npm run build # Builds to dashboard/dist/The Express server serves dashboard/dist/ automatically.
In development, run the Vite dev server with hot-reload:
cd dashboard && npm run dev # Usually http://localhost:5173