diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index e226bcd..7641c13 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -13,12 +13,12 @@ "state": { "type": "markdown", "state": { - "file": "300 areas/350 AI/Pi Agent Extensions & Skills.md", + "file": "300 areas/360 Dev-Ops Network Computers/Home Network Map Overview.md", "mode": "preview", "source": true }, "icon": "lucide-file", - "title": "Pi Agent Extensions & Skills" + "title": "Home Network Map Overview" } } ] @@ -181,10 +181,10 @@ "state": { "type": "file-properties", "state": { - "file": "300 areas/350 AI/Pi Agent Extensions & Skills.md" + "file": "300 areas/360 Dev-Ops Network Computers/Home Network Map Overview.md" }, "icon": "lucide-info", - "title": "File properties for Pi Agent Extensions & Skills" + "title": "File properties for Home Network Map Overview" } } ], @@ -207,12 +207,12 @@ "templater-obsidian:Templater": false } }, - "active": "29ff3dd1c6bfd474", + "active": "7066c9273c6fb936", "lastOpenFiles": [ + "300 areas/350 AI/Pi Agent Extensions & Skills.md", "300 areas/350 AI/Ai memory management.md", "300 areas/350 AI/Ai planning flow control tools.md", "300 areas/360 Dev-Ops Network Computers/Home Network Map Overview.md", - "300 areas/350 AI/Pi Agent Extensions & Skills.md", "300 areas/360 Dev-Ops Network Computers/Local Wep Apps.md", "300 areas/350 AI/AI Tools to try.md", "300 areas/360 Dev-Ops Network Computers/Pi Neovim Coding Harness.md", diff --git a/300 areas/350 AI/Pi Agent Extensions & Skills.md b/300 areas/350 AI/Pi Agent Extensions & Skills.md index e74164b..18430fb 100644 --- a/300 areas/350 AI/Pi Agent Extensions & Skills.md +++ b/300 areas/350 AI/Pi Agent Extensions & Skills.md @@ -46,7 +46,7 @@ OmniRoute is the central LLM routing proxy running on .13 (port 20128/20129). Al | Sync | `/omni sync` (re-fetch model list) | | Access (local) | `http://192.168.20.13:20129/v1` | | Access (via Caddy) | `https://omniroute.lab.audasmedia.com.au/v1` | -| API key | `sk-fff5c0d55c0bc0bf-b58ed0-76da5716` (stored in `~/.config/environment.d/10-secrets.conf` on .27/.51, hardcoded in settings.json on .13) | +| API key | `sk-fff5c0d55c0bc0bf-b58ed0-76da5716` (stored in `~/.config/environment.d/10-secrets.conf` on .27/.51; on .13 in `~/.pi/agent/settings.json` — `chmod 600`, outside any git repo). ⚠️ This key is also written in this doc — rotate/move to a vault secret if this file ever syncs outside the vault | --- @@ -81,11 +81,13 @@ pi → omni provider → POST /v1/chat/completions { model: "default-opencode-go ### Per-machine setup state -| Machine | Package installed | Provider config | `/omni setup` done | Models synced | -|---------|-----------------|-----------------|-------------------|--------------| -| .27 | ✅ In home.nix | ✅ `omni` | ✅ | ✅ | -| .13 | ✅ pi install | ✅ `omni` | ✅ | ✅ | -| .51 | ✅ pi install | ✅ `omni` | ✅ | ✅ | +pi is **Nix-managed on all three** — the nixpkgs **`pi-coding-agent`** package (v0.82.1) in `home.packages` (npx wrapper removed 2026-08-05). Version uniform on all machines (matches all three flake locks). Updates = nixpkgs flake bump + rebuild. Global settings also include **pi-tool-display** (see below). + +| Machine | pi package | pi version | Provider config | `/omni setup` done | Models synced | +|---------|-----------|-----------|-----------------|-------------------|--------------| +| .27 | `pi-coding-agent` (home.nix) | 0.82.1 | ✅ `omni` | ✅ | ✅ | +| .13 | `pi-coding-agent` (home.nix) | 0.82.1 | ✅ `omni` | ✅ | ✅ | +| .51 | `pi-coding-agent` (home.nix) | 0.82.1 | ✅ `omni` | ✅ | ✅ | --- @@ -110,8 +112,35 @@ pi → omni provider → POST /v1/chat/completions { model: "default-opencode-go | **gentle-engram** | `~/.agents` | Memory service connecting to engram via ENGRAM_URL. Replaces memory-vault. Session capture, compaction recovery | | **headroom-bridge** | `~/.agents` | `compress_for_agent` tool — compresses >20K chars via Headroom Docker on .13:8787. 60-95% token reduction | | **pi-langfuse** | `~/.agents` (vendored from npm 1.5.8, commit `bc91a15`) | Langfuse LLM observability for pi — one trace per conversation, grouped by pi session, with tokens + cost. Activate per project via `/config-add ext pi-langfuse`. See [[#pi-langfuse — LLM Observability for Pi]] | +| **pi-tool-display** | `~/.agents` (vendored npm 0.5.0, commit `41cc33d`) | OpenCode-style compact tool rendering, adaptive edit/write diffs, pending-edit previews, thinking labels. **Global** — 0 tools / 0 token cost (added via home.nix settings). `/tool-display` presets: opencode / balanced / verbose | +| **pi-lsp-extension** | `~/.agents` (vendored npm 1.3.0, commit `41cc33d`) | LSP diagnostics, hover, definition, references, symbols, rename, completions, code_actions + tree-sitter `code_overview`/`ast_search`/`code_rewrite`. **Per-project** via `/config-add ext pi-lsp-extension` (10 tools — token-lean). Commands: `/lsp`, `/lsp-config`, `/lsp-restart`, `/lsp-lombok` | +### pi-tool-display + +OpenCode-style tool rendering for pi (vendored from npm `pi-tool-display@0.5.0`, by MasuRii, commit `41cc33d`). + +| Aspect | Detail | +|---|---| +| **What it does** | Compact built-in tool rendering (read/grep/find/ls/bash/edit/write), adaptive split/unified edit diffs, workspace-scoped pending edit/write previews while streaming, thinking labels, optional native user message box | +| **Placement** | **Global** — registers 0 tools (pure TUI renderer), so no token cost. Added to the Gitea package `extensions` list in home.nix global settings (`extensions/pi-tool-display/index.ts`) on all three machines | +| **Presets** | `/tool-display` → opencode / balanced / verbose | +| **Token note** | Compacts/truncates tool output = saves context. Does NOT remove blocks from the transcript (that's `pi-foldable-tools`, deliberately skipped — overlapping renderer, no persistent token gain) | +| **Compat** | peer range `^0.74–0.80` — verified working on pi 0.82.1 | + +### pi-lsp-extension + +LSP integration for pi (vendored from npm `pi-lsp-extension@1.3.0`, by samfoy, commit `41cc33d`). + +| Aspect | Detail | +|---|---| +| **Tools (11)** | `lsp_diagnostics`, `lsp_hover`, `lsp_definition`, `lsp_references`, `lsp_symbols`, `lsp_rename`, `lsp_completions`, `lsp_code_actions`, `code_overview`, `ast_search`, `code_rewrite` | +| **Commands** | `/lsp` (server status), `/lsp-config [args]`, `/lsp-restart `, `/lsp-lombok` | +| **Placement** | **Per-project** via `/config-add ext pi-lsp-extension` (10+ tool defs — token-lean). Same on all machines | +| **Language servers** | Installed via home.nix: `vtsls` (TS/JS/React — use `/lsp-config typescript vtsls stdio`), `pyright` (Python), `gopls` (Go), `clang-tools` (C/C++/Arduino), `yaml-language-server`, `bash-language-server`, `vscode-langservers-extracted` (JSON/HTML/CSS), `lua-language-server`, `emmet-ls`, `intelephense` (PHP — paid; free alt `phpactor`), `nixd` (Nix), `marksman` (Markdown), `lemminx` (XML). Rust later → `rust-analyzer` | +| **Auto-diagnostics** | After `edit`/`write`, appends compile errors for the changed file when a server is running (configurable via `.pi-lsp.json` in workspace root) | +| **⚠️ Vendoring pitfall** | The published package imports `vscode-languageserver-protocol/node.js` — the `.js` subpath was dropped from v3.18's `exports` map, which crashes the whole extension at load (no commands appear). Fixed in our vendor (commit `57c5cd2`): import `/node` instead. **Re-apply if re-vendoring from npm** | + ### pi-subagents (@tintinweb) v0.10.2, installed globally. 18 custom agent types in `~/.pi/agent/agents/` → `~/.agents/agents/`. Tools: `Agent()`, `get_subagent_result()`, `steer_subagent()`. `/agents` command for interactive management. Features: background agents with concurrency (4 default), mid-run steering, session resume, worktree isolation, scheduling, persistent widget showing live agent status. Cross-extension RPC event bus. Patched: 24h agent survival (was 10min), clearDisabled on session start. See [[Pi Subagent]] for full documentation. diff --git a/300 areas/360 Dev-Ops Network Computers/Home Network Map Overview.md b/300 areas/360 Dev-Ops Network Computers/Home Network Map Overview.md index 7b90fcb..7afe59f 100644 --- a/300 areas/360 Dev-Ops Network Computers/Home Network Map Overview.md +++ b/300 areas/360 Dev-Ops Network Computers/Home Network Map Overview.md @@ -113,6 +113,7 @@ See [[Docker Containers]] for full container list. | **SSH** | ✅ `sam@192.168.20.35` | | **Tailscale** | Not installed | | **Role** | Caddy reverse proxy. Runs ~50 Docker containers (apps, dashboards, media, monitoring). | +| **Gitea** | Git hosting: `gitea-server-1` + `gitea-db-1` (Docker). Web: `.35:3001` ("Gitea: Audas Media"), SSH: `.35:2222`. Key repo: `sam/pi-config` (pi agent assets — every machine clones it) | **Proxied domains:** | Domain | Proxied to | @@ -121,6 +122,8 @@ See [[Docker Containers]] for full container list. | `omniroute.home.lab` | `.13:20129` | | `worldmonitor.lab.audasmedia.com.au` | `.13:3002` | | `worldmonitor.home.lab` | `.13:3002` | +| `gitea.lab.audasmedia.com.au` | `.35:3001` (web) / `.35:2222` (SSH) | +| `gitea.home.lab` | `.35:3001` | See [[Docker Containers]] for full container list on .35. @@ -136,6 +139,16 @@ See [[Docker Containers]] for full container list on .35. --- +## Web Deploy Sync (.27 → .13) + +Web sites sync via **manual lsyncd** on .27 → rsync+ssh to .13 `/var/www/`: +- Config: `/home/sam/.config/lsyncd/lsyncd.conf.lua` +- Sites: `sprinklers`, `sam-developer`, `sam-devops` (+ any added in config) +- New folder on .13: `sudo chown -R sam:users /var/www/` (NixOS `users` group) +- Secrets env: `~/.config/environment.d/10-secrets.conf` (git-safe on NixOS) + +--- + ## SSH Access Matrix | From ↓ / To → | .27 desktop | .13 server | .51 laptop | .35 caddy | .150 phone | @@ -175,6 +188,8 @@ Host phone | `254` | Secondary Router admin | Router (192.168.20.1) | | `3000` | Open WebUI | .13 | | `3001` | Langfuse | .13 | +| `2222` | Gitea SSH (git remotes) | .35 | +| `3001` | Gitea web UI | .35 | | `3090` | Archon | .27 | | `8001` | Supabase Kong | .27 | | `8001` | ai-resume-backend | .13 | @@ -285,3 +300,5 @@ Account: `samuelrolfe@gmail.com` | `omniroute.lab.audasmedia.com.au` | `.35`→`.13:20129` | ✅ Caddy proxied | | `worldmonitor.home.lab` | `.13:3002` | ❌ Needs Pi-hole record | | `worldmonitor.lab.audasmedia.com.au` | `.35`→`.13:3002` | ❌ Needs DNS + Caddy done | +| `gitea.home.lab` | `.35:3001` | ✅ Pi-hole → .35 | +| `gitea.lab.audasmedia.com.au` | public `144.6.86.11` → router → `.35` (web `.35:3001`, SSH `.35:2222`) | ✅ External DNS (used by git remotes) |