Skip to main content

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 sessionStorage for 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:

MethodEndpointDescription
GET/api/skillsList all registered skills
GET/api/goalsList goals
POST/api/goalsCreate goal
DELETE/api/goals/{id}Delete goal
GET/api/agentsList agents
POST/api/agentsCreate agent
GET/api/memory/search?q=...Search memories
GET/api/scheduler/jobsList scheduler jobs
POST/api/scheduler/run/{job}Trigger job manually
GET/api/integrationsList integrations
POST/api/integrations/{id}/configureConfigure integration
GET/healthHealth 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 itsdangerous signed cookies
  • CSRF tokens bound to session ID (not just generated randomly)
  • Login rate limiting (5 attempts/minute)
  • DASHBOARD_SECRET must 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