# Pi Dashboard — Diagrams

Architecture artifacts for pi-dashboard, generated by the `project-diagramming-mermaid` + `project-diagramming-archify` skills (per-project `docs/` convention).

## Overview

- **Source of truth**: [`pi-dashboard.mmd`](./pi-dashboard.mmd)
- **Rendered** (via `mmdc`, mermaid-cli 11.16.0):
  - [`diagrams/pi-dashboard.png`](./diagrams/pi-dashboard.png) (@2x, white bg)
  - [`diagrams/pi-dashboard.svg`](./diagrams/pi-dashboard.svg) (vector)
- **Interactive map** (Archify, 9/9 showcase checks): [`pi-dashboard-map.html`](./pi-dashboard-map.html) — open in a browser for pan/zoom, search, theme toggle, route tracing
- **Archify spec** (JSON IR): [`archify/pi-dashboard.architecture.json`](./archify/pi-dashboard.architecture.json)

## Diagram (Mermaid)

Renders natively in Obsidian; shows as ASCII in pi via the `pi-mermaid` extension.

```mermaid
flowchart LR
  EXT["dashboard.ts pi extension"] -->|"writes JSON"| SF[("state files ~/.pi/agent/dashboard")]
  REM["remote machines .13 .51"] -->|"ssh cat *.json, 5s timeout + cooldown"| ST["state.go"]
  SF -->|"readLocalStates"| ST
  ST -->|"AgentState"| MAIN["main.go bubbletea TUI"]
  CFG["pi-dashboard.yaml"] -->|"loadConfig"| MAIN
  MAIN -->|"2s poll tick"| ST
  MAIN -->|"table + detail"| UI["Table + Detail panes"]
  UI -->|"Enter"| AT["tmux / zellij attach"]
  UI -->|"d"| HK["hunk diff"]
  UI -->|"Tab"| TX["tuxedo todo.txt"]
  UI -->|"Del"| SF
```

## Regenerate

```bash
# update the source
vim pi-dashboard.mmd
# re-render images
mmdc -i pi-dashboard.mmd -o diagrams/pi-dashboard.png --scale 2 -b white
mmdc -i pi-dashboard.mmd -o diagrams/pi-dashboard.svg
# update the Archify map (JSON IR in archify/, then):
node ~/.agents/skills/archify/bin/archify.mjs validate architecture archify/pi-dashboard.architecture.json --quality showcase --json
node ~/.agents/skills/archify/bin/archify.mjs deliver architecture archify/pi-dashboard.architecture.json pi-dashboard-map.html --quality showcase --json
```