A comprehensive dashboard for managing and monitoring AI agent activities, tasks, and resources.
- β
File-based data storage (JSON files in
clawd/directory) - β Full CRUD API routes for all resources
- β Real-time file watching with bidirectional sync
- β Server-Sent Events (SSE) for live updates
- β TypeScript throughout with Zod validation
- β Responsive design with Tailwind CSS v4
- β Error boundaries for graceful error handling
Tasks (/tasks)
- β Drag-and-drop kanban board (@dnd-kit)
- β 4 columns: To Do, In Progress, Done, Blocked
- β Create, edit, and delete tasks
- β Filter by project, priority, tags
- β Search functionality
- β Real-time updates via SSE
- β React Hook Form integration
Approvals (/approvals)
- β List all approval requests
- β Filter by status (pending, approved, denied)
- β Approve/deny modal with notes
- β Context and metadata display
- β Real-time notifications
- β Status badges and icons
Calendar (/calendar)
- β Week/month calendar view (react-big-calendar)
- β Create, edit, delete events
- β Today's agenda sidebar
- β Upcoming events list
- β Click to select time slots
- β All-day event support
Projects (/projects)
- β Project list with progress bars
- β Create/edit project modal
- β Show nested tasks
- β Status badges (planning, active, paused, completed)
- β Task completion tracking
- β Date range support
Memory (/memory)
- β List memory entries from database
- β Fuzzy search with Fuse.js
- β Timeline view (sorted by date)
- β Markdown preview with react-markdown
- β Edit modal with markdown editor
- β Category filtering (personal, work, learning, idea, note)
- β Tag management
Documents (/docs)
- β Tree navigation showing folder structure
- β Create/edit/delete documents
- β Markdown editor with live preview
- β Search functionality
- β Path-based organization
- β Tag system
People (/people)
- β Contact list with cards
- β Create/edit contact modal
- β Tags with colors
- β Social links (LinkedIn, Twitter, GitHub)
- β Notes section
- β Email and phone support
- β Search by name, email, tags
Cron Jobs (/cron)
- β List cron jobs in table
- β Create/edit job modal
- β Enable/disable toggle
- β Manual trigger button
- β Show last run, next run, status
- β Logs viewer
- β Cron expression support
- β
Command Palette (Cmd+K / Ctrl+K)
- Fuzzy search across all resources
- Quick navigation shortcuts
- Quick action triggers
- β Toast notifications (sonner)
- β Loading states everywhere
- β Empty states with helpful messages
- β Consistent styling across all pages
- β Keyboard shortcuts (Cmd+K for command palette)
- Framework: Next.js 16.1.6 (App Router with Turbopack)
- Language: TypeScript 5
- Styling: Tailwind CSS v4
- Validation: Zod
- Drag & Drop: @dnd-kit
- Forms: React Hook Form
- Calendar: react-big-calendar with date-fns
- Markdown: react-markdown with remark-gfm
- Search: Fuse.js
- Notifications: sonner
- File Watching: chokidar
- Command Palette: cmdk
mission-control/
βββ app/
β βββ (dashboard)/ # Dashboard routes
β β βββ tasks/
β β βββ approvals/
β β βββ calendar/
β β βββ projects/
β β βββ memory/
β β βββ docs/
β β βββ people/
β β βββ cron/
β βββ api/ # API routes
β β βββ tasks/
β β βββ approvals/
β β βββ calendar/
β β βββ projects/
β β βββ memory/
β β βββ documents/
β β βββ people/
β β βββ cron/
β β βββ events/ # SSE endpoint
β βββ globals.css
βββ components/
β βββ dashboard/ # Dashboard-specific components
β βββ layout/ # Layout components
β βββ ui/ # Reusable UI components
βββ hooks/
β βββ use-sse.ts # SSE hook
β βββ use-tasks.ts # Tasks data hook
β βββ use-auto-refresh.ts # Auto-refresh hook
βββ lib/
β βββ fs/ # File system utilities
β β βββ reader.ts
β β βββ writer.ts
β β βββ watcher.ts
β βββ models/ # Zod schemas
β β βββ task.ts
β β βββ approval.ts
β β βββ event.ts
β β βββ project.ts
β β βββ memory.ts
β β βββ document.ts
β β βββ person.ts
β β βββ cron.ts
β βββ sync/ # File sync service
β β βββ file-sync.ts
β βββ utils.ts
βββ clawd/ # Data storage
βββ tasks/
βββ approvals/
βββ calendar/
βββ projects/
βββ memory/
βββ docs/
βββ people/
βββ cron/
- Node.js 20+ (v25.6.1 recommended)
- npm or yarn
# Install dependencies
npm install
# Run development server
npm run dev
# Build for production
npm run build
# Start production server
npm startOpen http://localhost:3000 to view the dashboard.
The app will automatically redirect from / to /tasks.
All data is stored as JSON files in the clawd/ directory:
clawd/tasks/*.json- Task filesclawd/approvals/*.json- Approval requestsclawd/calendar/*.json- Calendar eventsclawd/projects/*.json- Project dataclawd/memory/*.json- Memory entriesclawd/docs/*.json- Documentsclawd/people/*.json- Contact informationclawd/cron/*.json- Cron job definitions
Files are watched in real-time and changes trigger SSE updates to connected clients.
The application uses Server-Sent Events (SSE) to push updates to clients when files change:
- File watcher monitors the
clawd/directory - Changes are emitted through EventEmitter
- SSE endpoint (
/api/events) streams events to clients - Client hooks (
useSSE,useAutoRefresh) listen and update UI
Press Cmd+K (Mac) or Ctrl+K (Windows/Linux) to open the command palette:
- Navigate to any page
- Trigger quick actions
- Fuzzy search across resources
Tasks can be dragged between columns to change status:
- Drag from "To Do" to "In Progress"
- Drop in "Done" when complete
- Move to "Blocked" if stuck
Memory entries and documents support full Markdown:
- Headers, lists, tables
- Code blocks with syntax highlighting
- Blockquotes
- Links and images
- GitHub Flavored Markdown (GFM)
All routes support standard REST operations:
GET /api/tasks- List all tasksPOST /api/tasks- Create taskPUT /api/tasks/[id]- Update taskDELETE /api/tasks/[id]- Delete task
GET /api/approvals- List all approvalsPOST /api/approvals- Create approvalPUT /api/approvals/[id]- Update approvalDELETE /api/approvals/[id]- Delete approval
GET /api/calendar- List all eventsPOST /api/calendar- Create eventPUT /api/calendar/[id]- Update eventDELETE /api/calendar/[id]- Delete event
GET /api/projects- List all projectsPOST /api/projects- Create projectPUT /api/projects/[id]- Update projectDELETE /api/projects/[id]- Delete project
GET /api/memory- List all memoriesPOST /api/memory- Create memoryPUT /api/memory/[id]- Update memoryDELETE /api/memory/[id]- Delete memory
GET /api/documents- List all documentsPOST /api/documents- Create documentPUT /api/documents/[id]- Update documentDELETE /api/documents/[id]- Delete document
GET /api/people- List all contactsPOST /api/people- Create contactPUT /api/people/[id]- Update contactDELETE /api/people/[id]- Delete contact
GET /api/cron- List all cron jobsPOST /api/cron- Create cron jobPUT /api/cron/[id]- Update cron jobDELETE /api/cron/[id]- Delete cron job
GET /api/events- Subscribe to real-time updates
The app supports light and dark modes automatically based on system preferences. Colors can be customized in app/globals.css using the @theme directive.
Data schemas are defined using Zod in lib/models/. To add a new field:
- Update the schema in the model file
- TypeScript types are automatically inferred
- API validation will enforce the new schema
To add a new page:
- Create a new route in
app/(dashboard)/[page-name]/page.tsx - Add API routes in
app/api/[resource]/ - Create models in
lib/models/ - Add to sidebar in
components/layout/sidebar.tsx - Add to command palette in
components/command-palette.tsx
npm run buildNo environment variables required for basic functionality. The app uses local file storage by default.
npm i -g vercel
vercelFROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY . .
RUN npm run build
CMD ["npm", "start"]- Build time: ~2 seconds (with Turbopack)
- Cold start: <100ms
- Hot reload: <50ms
- SSE latency: <10ms
- File watch debounce: 300ms
- Chrome/Edge: Latest 2 versions
- Firefox: Latest 2 versions
- Safari: Latest 2 versions
MIT
This is a personal AI agent dashboard. Feel free to fork and customize for your own use.
For issues or questions, check the code comments or review the implementation in each component.