Experimental Research fork — APIs and behaviour may change without notice. Read disclaimer →

Picobot has two dashboards: a terminal-based TUI and a web-based interface. Both are read-only observers of the same data files the agent writes — they add zero coupling to the agent loop.

TUI Dashboard

A live-updating terminal interface built with Textual.

picobot dashboard

Panels

Panel Content Refresh
Status Header Daemon status (running/stopped, PID) 5s
Sub-agents Registry table with status, depth, timestamps 5s
Cron Jobs Job list with schedule, next run, status 10s
Activity Log Recent tool calls from JSONL logs 2s
KB Tree Topic directories with entry counts 10s
TODO Current TODO.md content 5s

Keyboard Shortcuts

Key Action
q Quit
r Force refresh all panels
? Toggle help
Tab Cycle between panels

When to Use

The TUI is useful for: - Monitoring agent activity during long-running tasks - Watching sub-agent progress - Checking cron job status - Browsing the KB without leaving the terminal

It works over SSH, in tmux, and anywhere you have a terminal.

Web Dashboard

A browser-based interface built with FastAPI and HTMX.

picobot serve

Opens at http://localhost:8000 by default.

Features

The web dashboard has the same 6 panels as the TUI, rendered as HTML:

  • HTMX partials at /partials/* — each panel updates independently via HTMX polling
  • JSON API at /api/* — programmatic access to all data
  • SSE at /events — Server-Sent Events for real-time updates (every 2 seconds)

API Endpoints

Endpoint Method Returns
/ GET Full dashboard HTML
/api/subagents GET Sub-agent registry as JSON
/api/cron GET Cron jobs as JSON
/api/logs?n=50 GET Recent tool call logs
/api/kb GET KB tree structure
/api/status GET Daemon status
/api/todo GET TODO.md content
/partials/subagents GET Sub-agents HTML partial
/partials/cron GET Cron jobs HTML partial
/partials/logs GET Activity log HTML partial
/partials/kb GET KB tree HTML partial
/partials/status GET Status HTML partial
/partials/todo GET TODO HTML partial
/events GET SSE stream

When to Use

The web dashboard is useful for: - Monitoring from another device on the same network - Getting a richer visual layout than the terminal allows - Building integrations against the JSON API - Embedding agent status in other tools

Why HTMX?

HTMX (10KB) eliminates the JavaScript build toolchain. The entire web dashboard is Python backend + Jinja2 templates + 268 lines of CSS. No React, no Webpack, no node_modules. Each panel is a server-rendered HTML partial that HTMX swaps in on a polling interval.

Data Sources

Both dashboards read the same files:

Data Source File
Sub-agents ~/.picobot/data/subagents/registry.json
Cron jobs ~/.picobot/data/cron/jobs.json
Tool call logs ~/.picobot/data/logs/*.jsonl
KB tree ~/.picobot/workspace/knowledge/ (directory listing)
Daemon status ~/.picobot/data/daemon.pid (PID liveness check)
TODO ~/.picobot/workspace/TODO.md

The data readers handle missing files gracefully — if the agent hasn't created any data yet, panels show empty states.