diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 3cc96c6..dd19817 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -210,8 +210,9 @@ "templater-obsidian:Templater": false } }, - "active": "8f0c8ae5063438f6", + "active": "8018aa52f0591df9", "lastOpenFiles": [ + "200 projects/Tools Software WebUI/Tools Software WebUI.md", "300 areas/360 Dev-Ops Network Computers/Home Network Map Overview.md", "300 areas/350 AI/Ai memory management.md", "300 areas/360 Dev-Ops Network Computers/Error Tracking.md", @@ -247,7 +248,6 @@ "kontra_content/content/config", "kontra_content/content", "300 areas/360 Dev-Ops Network Computers/Filesystem Drive Map.md", - "300 areas/360 Dev-Ops Network Computers/Docker Containers.md", "Untitled.canvas" ] } \ No newline at end of file diff --git a/200 projects/Tools Software WebUI/Tools Software WebUI.md b/200 projects/Tools Software WebUI/Tools Software WebUI.md new file mode 100644 index 0000000..2067927 --- /dev/null +++ b/200 projects/Tools Software WebUI/Tools Software WebUI.md @@ -0,0 +1,173 @@ +--- +created: 2026-09-09 +modified: 2026-09-09 +type: project +tags: + - ai + - ai-agents + - ai-resume + - dev-ops + - pi + - showcase + - tools +aliases: + - Tools Software WebUI + - Tool System +--- + +# Tools Software WebUI + +A self-hosted **tool system** on the home network: Web UIs, automation, an AI-agent console, and LLM +routing, all wrapped around **pi** (the coding agent). This note is the master overview and user +manual — and a resume showcase of how the pieces fit together. + +**Interactive architecture map:** `maps.lab.audasmedia.com.au/tools-software-webui/docs/…` *(published after the Archify build)* + +## What it is + +One coherent tool ecosystem that lets me **drive pi coding agents from anywhere**, watch what they +are doing across every machine, and automate around them — with a clean per-folder model that keeps +context lean. The four layers: + +1. **Console — Pi Dashboard**: live view of *every* pi session on every machine (what's running, + where, status). The "what's working / running where" answer. +2. **LLM routing — OmniRoute**: one proxy on .13 that all machines' pi requests flow through, with + prioritized "combo" fallback chains. +3. **Automation — n8n + Prefect (+ LangChain)**: visual workflows, code pipelines, and the Python + glue that powers the portal, chat, and tool services. +4. **AI toolkit — pi + extensions + MCP**: sub-agent orchestration, tasks, memory, LSP, dashboards, + and a per-folder `.pi` model to control context bloat. + +```mermaid +flowchart LR + subgraph CLIENTS["Clients"] + D27[".27 main dev"] + D51[".51 laptop"] + M[Mobile: Termux / Tailscale / KDE Connect] + end + subgraph LAB["Home lab (.lab.audasmedia.com.au)"] + C[Caddy proxy :35] + G[Gitea :35] + P[Pi-hole DNS :35] + end + subgraph WEB["Web-facing + Docker host (.13)"] + N[n8n :5678] + PR[Prefect :4200] + OR[OmniRoute :20129] + OW[Open WebUI :3000] + PORTAL[Console portal :8500] + DSH[dsh chat :3081-3084] + end + subgraph AGENTS["pi agents (per machine)"] + EXT[dashboard.ts ext] + SUB[@tintinweb/pi-subagents] + TASKS[pi-tasks] + MCP[MCP servers] + end + D27 -->|pi| AGENTS + D51 -->|pi| AGENTS + M -->|Tailscale/SSH| D27 + M -->|NTFY| AGENTS + AGENTS -->|state JSON| EXT + EXT -->|~/.pi/agent/dashboard| PORTAL + EXT -->|notify| M + AGENTS -->|LLM| OR + OR --> C + C --> G + N -.->|webhooks/triggers| AGENTS + PR -.->|pipelines| AGENTS +``` + +## Access — how to reach things + +| Target | How | Route | +|---|---|---| +| Any pi session | SSH from .27 / .51 / Termux | `ssh ` then `tmux attach` | +| Console (see agents everywhere) | Go TUI on .27/.13 | `pi-dashboard` | +| Live Pi-dashboard (web) | Portal Admin | `console.lab.audasmedia.com.au` (Caddy → .13:8500) | +| n8n | Browser | `n8n.home.lab` (LAN + auth) / Tailscale `100.114.62.46:5678` | +| Prefect | CLI/API from .27/.51 | `http://nixos-desktop:4200` | +| OmniRoute | API (OpenAI-compatible) | `http://192.168.20.13:20129/v1` · `https://omniroute.lab…/v1` | +| Open WebUI | Browser | `http://192.168.20.13:3000` | +| Gitea | Browser | `gitea.lab.audasmedia.com.au` (:3001) · SSH :2222 | +| Docs/Tasks | Browser | Outline :3000 · Vikunja | +| Phone | Tailscale app + KDE Connect + NTFY | notifications/files/remote | + +**Backbone:** Tailscale (mesh VPN) + Caddy (reverse proxy on .35) + Pi-hole (DNS). Phone channel = +Termux (SSH client) + KDE Connect (pairing/files/notifications) + NTFY (agent-complete alerts). + +## Where things live + +| Area | Location | +|---|---| +| Project source & Gitea | `home_network/custom_tools/…` → Gitea `sam/*` | +| Tool docs (Obsidian) | `200 projects/Tools Software WebUI/` + `300 areas/350 AI/` | +| Pi assets (source of truth) | `~/.agents` → Gitea `sam/pi-config` (per-machine clones) | +| Console portal + services | `.13` Docker (`/home/sam/Docker/Containers/…`) | +| Data | `/mnt/data/…` on .13 | +| Maps | `maps.lab.audasmedia.com.au` (Archify) | +| LLM routing | OmniRoute `.13:20129` | + +## Core components + +### Pi Dashboard — the console +Every pi session runs the **`dashboard.ts`** extension → writes `~/.pi/agent/dashboard/.json` +(heartbeat, cwd/folder, agent status, model, terminal, attach target). That state is **pulled/collected +on .13** and shown two ways: the **Go TUI** (`pi-dashboard`, Bubble Tea — attach / hunk / tuxedo from +one table) and the **Python portal** Admin view. Notifications via NTFY/Apprise. Tasks flow to +per-project `todo.txt` (shown by Tuxedo). *Full detail:* [[Pi Dashboard]]. + +### OmniRoute — LLM router +Docker proxy on `.13:20129` (Caddy-exposed). pi registers it as the `omni` provider; default model +`default-opencode-go-ds-flash` is a **combo** that falls back OpenCode-Go → OpenRouter → DeepSeek → +Gemini. 484 models. Extension: `omniroute-pi-ext-integration`; config `~/.pi/agent/models.json`. + +### Automation +- **n8n** (.13:5678) — visual workflows, 400+ integrations, webhooks/triggers. +- **Prefect 3** (.13:4200) — code-defined pipelines, scheduling, durability. +- **LangChain** — library embedded in the Python services (portal, dsh, agents); no separate server. + +### AI toolkit (pi + extensions) +Global packages: `pi-memctx` (memory), `pi-mcp-adapter` (MCP proxy), `@tintinweb/pi-subagents` +(18 agents, worktrees, scheduling), `@tintinweb/pi-tasks` (dependency-tracked tasks + subagents), +`pi-prompt-template-model`, `omniroute-pi-ext-integration`. Skills: `nixos-workflow`, `system-architect`, +`project-diagramming-mermaid`, `project-diagramming-archify`, `obsidian-cli`, `npm-security`, `openspec-*`, +`ste-writing`, `graphify`. MCP: `codebase-memory`, `code-review-graph`. **Per-folder `.pi/settings.json`** +keeps each project's context minimal (arrays replace, not merge). + +### Services on .13 (web-facing Docker host) +n8n · Prefect · OmniRoute · Outline (:3000) · family-home-lab portal (:8500) · dsh chat (:3081–3084) · +kontra (:8600) · worldmonitor (:3002) · garage S3 · media tools (GIMP/KdenLive/Audacity/LMMS) · +Jervis voice agent (:8501) · engram memory (:7437, SSH tunnel) · headroom compression (:8787). + +### Infrastructure +NixOS on .27/.13/.51 (pi is Nix-managed `pi-coding-agent` 0.82.1) · Ubuntu Docker host .35 +(Gitea/Caddy/Pi-hole) · Proxmox .28 · Tailscale mesh. + +## Config notes for future maintenance (no secrets) + +- **LLM routing:** pi → `omni` provider → OmniRoute on `.13:20129`; default model is the combo + `default-opencode-go-ds-flash`. Secrets only in `.env` / secrets store — never commit. +- **Pi assets:** edit in `~/.agents` → push to Gitea `pi-config` → **pull per machine** (`.27/.13/.51`); + a push does not auto-update the others. Activate per project via `/config-add`. +- **Pi is Nix-managed:** update = nixpkgs flake bump + `nixos-rebuild switch`; close sessions after. +- **Console:** dashboard state is collected on .13; the Go TUI + portal Admin render it. +- **Diagrams:** Mermaid source + Archify HTML live in the Gitea repo `docs/`; publish via + `publish-maps.sh` → maps.lab. +- **Gitea Actions** (roadmap): auto-sync `~/.agents` clones across machines on push to `pi-config`. + +## Evaluated & not selected (roadmap / decisions) + +| Tool | Decision | Why | +|---|---|---| +| **Paseo** | ⏸ defer (roadmap) | Cross-machine orchestration layer; current dashboard + portal already answer "what's running where" | +| **Pi Web UI** | ⏸ defer | Needs Pi ≥ 0.84 (Nix upgrade); current console suffices for now | +| **Windmill** | ❌ not needed | n8n covers the visual canvas; Prefect covers code pipelines | +| **Gitea Actions** | 🆕 recommended | First win: auto-sync pi-config clones; repo-event CI for deploys | + +## Related +- [[Pi Dashboard]] · [[Paseo Pi GUI Tool]] · [[Family Home Lab]] +- `300 areas/350 AI/Pi Agent Extensions & Skills.md` (full extension/skill/MCP inventory) +- `300 areas/360 Dev-Ops Network Computers/Dev-Ops Tooling — Mermaid, Archify, Vikunja & Outline.md` +- [[Home Network Map Overview]] · [[Docker Containers]] · [[Websites on Nixos-Dekstop 13]] +- Gitea: `sam/tools-software-webui` (public, resume showcase) · Outline project `Tools Software WebUI` · Vikunja project `Tools Software WebUI`