Package: dashd/. Standalone read-only HTMX operator portal.
dashd serves an operator-facing web portal on DASH_PORT (default 8090). It opens the SQLite database in read-only mode (?mode=ro) and never writes to it. All views auto-refresh via HTMX polling.
dashd registers itself as a channel with receive_only: true. The /status gateway command routes to it via the routes table; dashd replies using the notify/ library to fan out status messages to tier-0 JIDs.
Included in generated docker-compose.yml as arizuko_dashd_<flavor>.
| Path | Name | Content |
|---|---|---|
/dash/ |
Portal | Tile grid overview of all views; 30-second auto-refresh |
/dash/status/ |
Status | Registered channels, active groups, running containers, queue depth, recent errors |
/dash/tasks/ |
Tasks | Scheduled tasks list with status, next run time, and run history |
/dash/activity/ |
Activity | Recent message flow, routing table, dispatch log |
/dash/groups/ |
Groups | Group hierarchy tree with tier, parent, and container config |
/dash/memory/ |
Memory | Per-group knowledge browser: diary entries, episodes, facts files |
/dash/ portal tile grid
/dash/<name>/ full page view
/dash/<name>/x/<fragment> HTMX partial (returned on polling requests)
/dash/<name>/api/<path> JSON API for the view
dashd uses JWT cookie auth via the auth library. Access requires a valid JWT with operator-level claims (groups: null). proxyd routes /dash/ to dashd after validating the JWT.
Each view includes an HTMX polling interval. The partial endpoints (/x/<fragment>) return only the changed section of HTML. The portal tile grid refreshes every 30 seconds. Individual view polling intervals vary by data freshness requirements.
dashd opens SQLite with ?mode=ro. It has no write paths, no form submissions, no mutation endpoints. All state changes go through the gateway or CLI.