174 lines
8.1 KiB
Markdown
174 lines
8.1 KiB
Markdown
---
|
||
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 → Tools Software WebUI](https://maps.lab.audasmedia.com.au/tools-software-webui/docs/system-map.html)
|
||
|
||
## 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 <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 → `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`
|