Dashboard
The WASP web dashboard provides a browser-based interface for chatting with the agent, managing goals and agents, browsing memory, monitoring health, and configuring integrations.
Access
The dashboard is available at https://your-domain.com and requires authentication.
Login: Use the password set in DASHBOARD_SECRET (minimum 16 characters).
Sessions are persistent (24-hour TTL by default). CSRF protection is enforced on all state-changing endpoints.
Pages
Chat (/chat)
Real-time streaming chat with the agent:
- SSE streaming — responses appear word-by-word as the LLM generates them
- Skill progress indicator — shows active skill calls in real-time
- Image upload — drag and drop or paste images for vision analysis
- Session history — stored in
sessionStoragefor the current browser session - Markdown rendering — code blocks, lists, tables rendered correctly
Goals (/goals)
Manage autonomous goal execution:
- List all goals with status, progress, and priority
- Create new goals with objective and priority
- Cancel or replan active goals
- View task graph and execution history per goal
- Set autonomy mode (full/semi/assist)
Agents (/agents)
Multi-agent management:
- List all active and archived agents
- Create new agents with objectives
- Pause, resume, and archive agents
- View current goal per agent
- Monitor agent resource usage
Memory (/memory)
Browse and search the agent's memory:
- Search episodic and semantic memories by keyword
- View memory type (episodic, semantic, procedural, visual)
- Filter by date range and chat ID
- Delete individual memories
- View knowledge graph nodes and relations
Scheduler (/scheduler)
Monitor background jobs:
- List all registered jobs with next run time
- View last run time and duration
- See success/failure counts per job
- Manual trigger for any job
Integrations (/integrations)
Configure third-party connectors:
- List all 33 available connectors
- Configure credentials (stored in SecretVault)
- Set autonomy policy per integration (assist/semi/full)
- View circuit breaker status
- Test connector connectivity
Cognitive (/cognitive)
Real-time cognitive monitoring:
- CPI Banner — Cognitive Pressure Index (0-100), shown when >80
- Epistemic State — Domain confidence levels
- Self-Model — Skill success rates, strengths, known failures
- Integrity Report — Self-integrity monitor findings
- Dream State — Last dream mode run, status
Health (/health)
System health dashboard:
- Redis, PostgreSQL, Ollama connectivity
- Disk usage, RAM usage, CPU percentage
- Health score (0-100)
- Self-healer action log
- Recent error summary
API Endpoints
The dashboard exposes a REST API used by the frontend:
| Method | Endpoint | Description |
|---|---|---|
GET | /api/skills | List all registered skills |
GET | /api/goals | List goals |
POST | /api/goals | Create goal |
DELETE | /api/goals/{id} | Delete goal |
GET | /api/agents | List agents |
POST | /api/agents | Create agent |
GET | /api/memory/search?q=... | Search memories |
GET | /api/scheduler/jobs | List scheduler jobs |
POST | /api/scheduler/run/{job} | Trigger job manually |
GET | /api/integrations | List integrations |
POST | /api/integrations/{id}/configure | Configure integration |
GET | /health | Health check (no auth) |
Streaming Chat
The chat endpoint uses Server-Sent Events for real-time streaming:
const response = await fetch('/chat/stream', {
method: 'POST',
headers: {'Content-Type': 'application/json', 'X-CSRF-Token': csrfToken},
body: JSON.stringify({message: userInput}),
});
const reader = response.body.getReader();
// Read chunks as they arrive
Authentication
- Session-based authentication with
itsdangeroussigned cookies - CSRF tokens bound to session ID (not just generated randomly)
- Login rate limiting (5 attempts/minute)
DASHBOARD_SECRETmust be at least 16 characters (enforced at startup)
Running Locally
The dashboard runs on port 8080 inside the container, proxied by nginx to port 443. For local development without SSL:
# Access dashboard directly (bypasses nginx)
ssh -L 8080:localhost:8080 your-server
# Then open http://localhost:8080 in browser