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

8.1 KiB
Raw Blame History

created, modified, type, tags, aliases
created modified type tags aliases
2026-09-09 2026-09-09 project
ai
ai-agents
ai-resume
dev-ops
pi
showcase
tools
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

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.
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