8.1 KiB
created, modified, type, tags, aliases
| created | modified | type | tags | aliases | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-09-09 | 2026-09-09 | project |
|
|
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 → Tools Software WebUI
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:
- Console — Pi Dashboard: live view of every pi session on every machine (what's running, where, status). The "what's working / running where" answer.
- LLM routing — OmniRoute: one proxy on .13 that all machines' pi requests flow through, with prioritized "combo" fallback chains.
- Automation — n8n + Prefect (+ LangChain): visual workflows, code pipelines, and the Python glue that powers the portal, chat, and tool services.
- AI toolkit — pi + extensions + MCP: sub-agent orchestration, tasks, memory, LSP, dashboards,
and a per-folder
.pimodel to control context bloat.
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 <host> 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/<session>.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 →
omniprovider → OmniRoute on.13:20129; default model is the combodefault-opencode-go-ds-flash. Secrets only in.env/ secrets store — never commit. - Pi assets: edit in
~/.agents→ push to Giteapi-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 viapublish-maps.sh→ maps.lab. - Gitea Actions (roadmap): auto-sync
~/.agentsclones across machines on push topi-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 projectTools Software WebUI· Vikunja projectTools Software WebUI