Files
obsidian-vault/200 projects/Tools Software WebUI/Tools Software WebUI.md

174 lines
8.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 <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`