Mission Control Dashboard
A JARVIS-inspired real-time dashboard for monitoring and interacting with your agent teams. Built with Next.js 16, React 19, Zustand, and Tailwind CSS v4.
Overview
The Mission Control dashboard provides seven core views for monitoring agent activity, exploring hierarchy, chatting with your orchestrator, tracking tasks, visualizing knowledge, inspecting agent memory, and managing scheduled jobs. It connects to the Maximus server via REST API (initial state sync) and WebSocket (real-time event streaming).
Layout
The shell consists of three regions:
Displays the Maximus branding, active agent count, running task count, and a WebSocket connection status indicator dot (green = connected, amber pulsing = reconnecting, red = disconnected). When reconnecting, a banner appears below the header.
A narrow 48px icon rail with seven navigation buttons: Operations, Org Chart, Chat, Tasks, Knowledge Graph, Agent Memory, and Jobs. The active view is highlighted with an accent color and a left-edge accent bar. Icons are sourced from lucide-react.
The active view fills the remaining space to the right of the sidebar and below the header. Client-side view routing is managed through Zustand state rather than URL routes.
Views 7 Views
Operations
Real-time activity feed of agent events displayed newest-first in a scrollable list. Each event is rendered as an EventCard showing a colored icon, agent name, event summary, and relative timestamp. Events arrive via WebSocket and are capped at 500 in the Zustand store.
Features: Filter by event type (toggle chips), filter by agent name (text input), expand any event card to see full JSON payload.
Event Types
Org Chart
Canvas-based visualization of your agent hierarchy as a top-down tree. The orchestrator sits at the top, managers below, and workers at the bottom.
session:start = active, session:end = idle, agent:error = error.Chat
Direct messaging interface to the orchestrator agent with SSE streaming responses.
reportsTo). Shift+Enter inserts a newline.data: lines. The message bubble glows during streaming with a pulsing cursor bar.react-markdown supporting code blocks, inline code, lists, and links.Tasks
Sortable, filterable table displaying all tasks. Columns: Task ID, Agent, Status, Trace ID, Created, Updated. Click any column header to toggle ascending/descending sort.
Filters: Filter by agent name (text input), trace ID (text input), or status (dropdown: All, created, assigned, in-progress, completed, failed).
Expandable rows: Click any row to see full prompt text, parent task ID, result or error, and token usage count.
Status Badges
Knowledge Graph
Force-directed graph visualization of entities and relationships extracted from agent sessions. Supports scope filtering (agent, team, global) to narrow the visible graph. Nodes represent entities and edges represent predicates between them.
Agent Memory
Split-panel view for inspecting agent memory. The left panel lists agents with memory enabled; the right panel displays episodes, knowledge graph entries, and performance trends for the selected agent. Episodes are shown newest-first with timestamps and distilled summaries.
Jobs
Full CRUD interface for managing scheduled jobs. Create, edit, and delete jobs with cron expressions. View run history with status indicators (success, failure, running) and timestamps. Jobs are persisted server-side and execute on the configured schedule.
Connection Handling
The dashboard manages the WebSocket connection automatically via the useWebSocket hook. No user action is required — the entire reconnection flow is fully automatic.
syncState function fetches the full agent list and task list from /api/org-chart and /api/tasks.While reconnecting, a banner reading "Reconnecting to server..." appears below the header with a warning color background. The event store (capped at 500 events) continues accumulating events once the connection is restored.
Running the Dashboard
The dashboard is served from the Maximus server on port 4100. Start the server and open http://localhost:4100 in your browser.
# Start the Maximus server (serves dashboard on port 4100) maximus server start # Or run in foreground maximus server start --foreground # Open in browser open http://localhost:4100
The dashboard defaults to the Operations view on load.
Configuration
The dashboard reads two environment variables at build time:
Set these in a .env.local file in packages/dashboard/ or export them before building.