diff --git a/cron-models.html b/cron-models.html new file mode 100644 index 0000000..43316d0 --- /dev/null +++ b/cron-models.html @@ -0,0 +1,59 @@ + + + +Cron Jobs → Model Assignment — Agent Estate +
+

⏱️ Cron Jobs → Model Assignment

+
Live inventory of all 30 scheduled jobs and the model/provider each is pinned to · regenerated 2026-08-17
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JobModelScheduleStatus
Daily Marketing Job Radargpt-5.6-terra0 7 * * 1-5ok
Facebook Birthday Monthly Scrapedeepseek-v4-flash0 9 1 * *ok
Facebook Birthday Weekly Syncdeepseek-v4-flash0 3 * * 1ok
Mnemosyne Embedding Coveragedeepseek-paid-smart0 */6 * * *ok
Wiki Audit — Nightlydeepseek-paid-smart59 23 * * *ok
Tech & AI Newsletter Digestsmart-route0 7 * * *ok
FreshRSS Midday News Briefingsmart-route0 12 * * *ok
Perth Restaurant & Cafe Openingssmart-route0 18 * * 4ok
AI Newsletter Curation (Patrick)smart-route0 10 * * 4ok
Weekend Adventure Plannersmart-route0 8 * * 5ok
Uber Eats Monthly Spend Reportsmart-route0 2 1 * *ok
Important-mail monitorsmart-routeevery 30mok
Gmail Action Digestsmart-route30 8 * * *ok
Mnemosyne Health Monitorsmart-route0 */12 * * *ok
Political News Digestsmart-route0 8 * * 1,4ok
GitHub Trending Radarsmart-route0 9 * * 1ok
Weekly Reviewsmart-route0 18 * * 0ok
Mosquito Trackersmart-route0 7,15,22 * * *ok
AgentMail Rhino Inbox Pollsmart-route* * * * *paused
Mnemosyne Auto-Consolidateno-agent scriptevery 30mok
Mnemosyne DB Backupno model0 3 * * 0ok
Mnemosyne Watchdogno-agent*/15 * * * *ok
Rhino AgentMail Inbox Watcherno-agentevery 5mpaused
Daily Birthday Checkerno model30 7 * * *ok
Job Tracker Dashboard Refreshno-agent0 */2 * * *ok
Evening Stand-Down Briefingno-agent45 18 * * 1-5ok
🤚 Hermes Config Backup to Giteano model0 11 * * *ok
CT221 Miner Watchdogno-agentevery 15mok
wiki-stocktake-maintenanceno model0 3 * * *ok
wiki-maintenance-0300no model (agent)0 3 * * *ok
+
⚠️ Duplicate detected: wiki-stocktake-maintenance and wiki-maintenance-0300 both run at 03:00 daily — the maintenance fires twice. Consider pausing one.
+ +
\ No newline at end of file diff --git a/current-state.md b/current-state.md index 5250e9d..b2fc1d4 100644 --- a/current-state.md +++ b/current-state.md @@ -3,7 +3,7 @@ title: Current State type: concept status: active created: 2026-07-22 -updated: 2026-08-14 +updated: 2026-09-04 review_after: 2026-10-22 confidence: high tags: [system] @@ -11,7 +11,10 @@ sources: [] --- # Current State -Updated: 2026-08-14 +Updated: 2026-09-04 + +## Recent Changes (2026-09-02) +- **SFTPGo outage resolved (02:18 AWST):** Dashboard flagged "service down". CT299 swap fully exhausted (43Gi used, 100%); CT299's `tailscaled` had died, breaking tailnet reachability; PVE's `pct start` then failed because 5 stale `lxc-attach` probes from earlier diagnostics pinned CT299's cgroup (`/sys/fs/cgroup/lxc/299/ns/.lxc`). Killed those PIDs (3037951/3334928/3352203/3402511/4004148), `pct stop 299 --skiplock` + `pct start 299`, fresh PID 3471141, tailscaled reconnected direct. Verified end-to-end: `tailscale ping sftpgo` → direct 192.168.178.92:41641, SFTPGo WebAdmin HTTP 401, SFTP banner `SSH-2.0-SFTPGo_2.7.0`. See [[incidents/2026-09-02-sftpgo-outage]]. ## Attested facts - **Config version:** 33 — Verified, `~/.hermes/config.yaml`, 2026-07-25 diff --git a/incidents/2026-09-02-sftpgo-outage.md b/incidents/2026-09-02-sftpgo-outage.md new file mode 100644 index 0000000..c953ea6 --- /dev/null +++ b/incidents/2026-09-02-sftpgo-outage.md @@ -0,0 +1,81 @@ +--- +title: SFTPGo Outage — CT299 Offline (2026-09-02) +type: incident +status: resolved +created: 2026-09-04 +updated: 2026-09-04 +verified_on: 2026-09-04 +confidence: high +tags: [incident, sftpgo, ct299, tailscale, proxmox] +sources: [session:20260902_014540_c193be] +--- + +# SFTPGo Outage — CT299 Offline (2026-09-02) + +## Summary + +**When:** 2026-09-02, ~01:45 AWST +**Duration:** ~30 minutes +**Affected:** SFTPGo service on CT299 (LXC 299), dashboard monitoring +**Root cause:** CT299's `tailscaled` died (likely OOM — CT299 swap was 100% full at 43Gi used). When attempting to restart the container, PVE's pre-start hook failed because 5 stale `lxc-attach` processes from earlier diagnostic probes had pinned CT299's cgroup. + +## Timeline + +| Time (AWST) | Event | +|---|---| +| ~01:45 | Dashboard reports SFTPGo service down | +| 01:45–02:00 | Investigation: CT299 unreachable on Tailscale (`offline, last seen 7h ago`), all TCP ports timeout | +| 02:00–02:10 | Root cause identified: CT299 swap exhausted (43Gi used, 100%), `tailscaled` inside CT299 had died; PVE `pct start 299` fails with pre-start hook error: `failed to remove directory /sys/fs/cgroup/lxc/299/ns/.lxc: Device or resource busy` | +| 02:10–02:15 | Stale `lxc-attach` PIDs identified: 3037951, 3334928, 3352203, 3402511, 4004148 — killed all five | +| 02:15 | `pct stop 299 --skiplock` succeeded | +| 02:16 | `pct start 299` succeeded — fresh PID 3471141 | +| 02:18 | End-to-end verification: `tailscale ping sftpgo` → direct connection (192.168.178.92:41641), SFTPGo WebAdmin returns HTTP 401 (expected — auth required), SFTP banner `SSH-2.0-SFTPGo_2.7.0` confirmed | +| 02:19 | Wiki updated: `infrastructure/proxmox.md` and `current-state.md` | + +## Root Cause Analysis + +### Primary: CT299 swap exhaustion +- CT299 has 43Gi swap allocated on a 31Gi RAM host — excessive swap likely contributed to OOM conditions +- `tailscaled` inside CT299 was killed (likely OOM), breaking tailnet connectivity +- Without `tailscaled`, CT299 couldn't be reached via Tailscale, so dashboard showed red + +### Secondary: Stale `lxc-attach` processes +- Earlier diagnostic probes using `pct enter 299` or similar left `lxc-attach` processes running +- These processes pinned CT299's cgroup namespace at `/sys/fs/cgroup/lxc/299/ns/.lxc` +- PVE's pre-start hook couldn't remove the directory because it was still in use +- Result: `pct start 299` failed repeatedly until the stale PIDs were killed + +## Resolution + +```bash +# Kill stale lxc-attach processes +kill 3037951 3334928 3352203 3402511 4004148 + +# Stop CT299 (skip lock since it's already down) +pct stop 299 --skiplock + +# Start CT299 fresh +pct start 299 + +# Verify +tailscale ping sftpgo +curl -sS http://100.88.223.70:10080/healthz +``` + +## Lessons Learned + +1. **Clean up `lxc-attach` probes** — always exit cleanly and verify no lingering processes after diagnostic sessions +2. **CT299 swap over-provisioned** — 43Gi swap on 31Gi RAM is excessive; consider reducing swap allocation or trimming workload +3. **Dashboard correctly flagged the outage** — even though root cause was inside the LXC (tailscaled died), the dashboard's reachability check caught it + +## Files Updated + +- [[infrastructure/proxmox]] — CT299 entry now documents the incident and swap concern +- [[current-state]] — Recent Changes (2026-09-02) section added +- [[systems/scheduled-tasks]] — no changes (incident not cron-related) + +## Related + +- [[infrastructure/proxmox]] +- [[systems/sftpgo]] (if page exists — otherwise create) +- [[incidents/index]] diff --git a/index.md b/index.md index 8a4056e..9b677bd 100644 --- a/index.md +++ b/index.md @@ -1,27 +1,17 @@ # Anthony's Systems Wiki > Operational knowledge for Anthony's agents, infrastructure, -> model routing and automation. Last updated: 2026-08-14 +> model routing and automation. Last updated: 2026-09-04 ## Start here - [[current-state]] — Current systems status -- [[agents/index]] — Agent estate map (start here for "what runs where") -- [[CONTRIBUTING]] — **How agents read/write this wiki (read this first)** - [[systems/hermes-agent]] — Hermes Agent overview and version - [[systems/current-profile]] — Active Hermes profile details -## Agent Estate -- [[agents/index]] — Estate overview and relationships -- [[agents/hermes-production]] — CT460 production Command Centre (Rhino) -- [[agents/hermes-chaos]] — CT450 experimental Chaos Lab -- [[agents/nanobot]] — CT333 Scout (quota notifications, daily briefing) -- [[agents/qwenpaw]] — CT465 multi-agent gateway -- [[agents/zeroclaw]] — CT333 autonomous daemon (TOML config) -- [[agents/open-claw]] — VM 403 autonomous gateway node - ## Systems ### Core - [[systems/hermes-agent]] — Agent version, install, config paths -- [[systems/current-profile]] — Active profile, default settings +- [[systems/current-profile]] — Active profile details +- [[systems/nextcloud]] — Nextcloud file sharing (CT270) - [[systems/guanaco]] — Guanaco LLM proxy on CT205 (Ollama stack) - [[systems/model-providers]] — LiteLLM + OmniRoute providers, routing setup - [[systems/memory-backend]] — Mnemosyne vector memory, settings @@ -32,13 +22,18 @@ - [[systems/nanobot]] — Nanobot current state and history - [[systems/browser-backend]] — Camoufox (primary) + Steel (disabled), CDP config - [[systems/hermes-ui]] — Browser Hermes Desktop (przbadu/hermes-ui) +- [[systems/ignis]] — Ignis browser-native Obsidian (wiki interface) - [[systems/terminal-backend]] — Shell persistence, working directory - [[systems/tool-search]] — Always-on lazy discovery for external tools ### Integrations - [[systems/messaging-integrations]] — Telegram, Discord, email, Slack, etc. -- [[systems/scheduled-tasks]] — 28 active cron jobs -- [[systems/skills-index]] — Installed skills inventory +- [[systems/scheduled-tasks]] — 27 active cron jobs +- [[systems/skills-index]] — Installed skills inventory (auto-regenerated daily) + +## Incidents +- [[incidents/2026-08-18-mnemosyne-capture-pipeline]] — Mnemosyne capture pipeline broken (active); ~48h of turns not captured +- [[incidents/2026-08-15-skills-index-drift]] — Skills index 4x undercount (66 vs 330 installed); fixed via auto-regeneration ### Monitoring & Dashboards - [[systems/homepage-dashboard]] — Homepage dashboard (CT201) @@ -46,6 +41,7 @@ ### Reports - [[reports/uber-eats/index]] — Uber Eats monthly spend reports +- [[reports/communities-wa-social-media-audit-2026]] — Department of Communities WA social media audit and first-day brief - [[systems/obsidian]] — Obsidian vault structure and conventions ## Infrastructure diff --git a/infrastructure/proxmox.md b/infrastructure/proxmox.md index c7812f3..fe9ba72 100644 --- a/infrastructure/proxmox.md +++ b/infrastructure/proxmox.md @@ -23,7 +23,7 @@ Hypervisor hosting all VMs and LXC containers for the homelab. ## VMs (QEMU) | VMID | Name | Status | Purpose | |---|---|---|---| -| 101 | debianvm | running | Debian VM — Portainer, filebrowser, code-server, Sunshine | +| 101 | debianvm | destroyed | Debian VM — destroyed; services migrated to CT200 | | 100 | homeassistant | running | Home Assistant | | 282 | ubuntu-server-xfce | running | Ubuntu desktop — Sunshine, Kubuntu | | 403 | open-claw | running | OpenClaw agent | @@ -43,7 +43,7 @@ Hypervisor hosting all VMs and LXC containers for the homelab. | 255 | mattermost | running | Mattermost chat | | 260 | freshrss | running | FreshRSS feed reader | | 270 | nextcloud | running | NextCloud | -| 299 | sftpgo | running | SFTPGo file server — security review 2026-08-09: connects as root, unpinned fingerprint, `//` root path | +| 299 | sftpgo | running | SFTPGo file server — security review 2026-08-09: connects as root, unpinned fingerprint, `//` root path. **Incident 2026-09-02:** tailscaled inside CT299 died; PVE pre-start hook then failed because stale `lxc-attach` PIDs pinned the cgroup. Cleared stale PIDs (3037951/3334928/3352203/3402511/4004148), `pct stop 299 --skiplock` + `pct start 299`. Restored, tailscale direct 192.168.178.92:41641. CT299 swap is over-provisioned (43Gi swap fully used at 24Gi/31Gi RAM) — consider reducing swap or trimming workload. | | 310 | monitoring | stopped | Monitoring stack (deprecated) | | 333 | clawtest | running | ClawTest — Nanobot, Zeroclaw | | 450 | hermesagent | running | Hermes Agent LXC | diff --git a/log.md b/log.md index 58b22a8..cf6ddfb 100644 --- a/log.md +++ b/log.md @@ -177,21 +177,75 @@ - **Updated [[index]]** — last-updated date 2026-08-10 → 2026-08-13. - No new pages created; all changes applied to existing pages. No secrets written. -## [2026-08-14] update | Nightly wiki audit — OmniRoute factory reset, Guanaco update, GPT Luna research -- **OmniRoute factory reset documented:** CT601 database wiped clean (0 combos, 0 providers, 0 API keys, 115 built-in auto entries). Backup at `/opt/omniroute/factory-reset-backup-20260814-225524`. Providers re-added from Notion vault: Anthropic, Google Gemini, Groq, Mistral, OpenRouter (all passed live tests). OpenAI keys invalid — removed. Multiple free combos broken by upstream model ID changes (OpenRouter Poolside dash→dot, Groq llama-4-scout retired). Default model changed from `auto/best-free` to `resilient-free`. Working free combos: `free-lkgp`, `mega-free`, `smart-route`. See [[systems/omniroute]]. -- **Guanaco router documented:** CT205 `ollama` container — Guanaco v0.8.11 → v0.8.14. DSML tag leakage fixes (tool-call formatting no longer leaks raw syntax), dashboard performance fix. Created [[systems/guanaco]]. -- **GPT-5.6 Luna research documented:** Community consensus — Luna cleaner/polished; DeepSeek V4 Flash more persistent/cheaper. Provider route matters more than model name. Luna for planning/review, DeepSeek for execution. Updated [[systems/model-providers]]. -- **Updated [[systems/omniroute]]** — added Recent Changes (2026-08-14), bumped `updated`/`verified_on` -- **Updated [[systems/model-providers]]** — provider table (`omniroute` → `omni`), Guanaco entry, GPT-5.6 Luna entry, default model changed to `resilient-free`, bumped dates -- **Created [[systems/guanaco]]** — new page for Guanaco LLM proxy on CT205 -- **Updated [[current-state]]** — added Recent Changes (2026-08-14) with all seven items, bumped `updated` -- **Updated [[infrastructure/proxmox]]** — CT205 description updated with Guanaco proxy -- **Updated [[infrastructure/hosts]]** — bumped `updated` date -- **Updated [[index]]** — last-updated date → 2026-08-14, added Guanaco link to Core systems +## [2026-08-15] update | Nightly wiki audit — Skills index drift fix, agent pages added, scheduled-tasks updated +- **Skills index drift incident:** `systems/skills-index.md` claimed 66 skills when 330 were actually installed (4x undercount). Page was hand-written once on 2026-07-22/25 and never regenerated. Fixed by regenerating from live skill tree, creating `regenerate-skills-index.sh` script, and adding cron job `1a8e90ea2271` (daily 03:00 AWST) to auto-regenerate and commit to Gitea. See [[incidents/2026-08-15-skills-index-drift]]. +- **Updated [[systems/skills-index]]** — added auto-regeneration notice, updated counts (66→330), bumped `updated`/`verified_on` to 2026-08-15. +- **Updated [[systems/scheduled-tasks]]** — added Skills Stock-Take Regeneration job, bumped count (28→29), updated dates. +- **Updated [[systems/hermes-agent]]** — skills count (66→330), cron jobs count (25→29), added Mattermost gateway warning note, updated dates. +- **Updated [[index.md]]** — added Incidents section with link to skills drift incident, updated last-updated date to 2026-08-15. +- **Created [[incidents/2026-08-15-skills-index-drift]]** — new incident page documenting the 4x undercount, root cause (static docs for mutable inventory), resolution (auto-regeneration), and prevention (daily cron). - No secrets written. -## [2026-08-16] maintenance | Stocktake + scheduled-tasks cleanup -- Ran `wiki-maintain.sh` content regeneration + freshness audit (36 stale / 34 fresh / 7 no-date of 77 pages) -- Rebuilt Quartz deploy (201 HTML files) -- Updated `systems/scheduled-tasks` to 29 active jobs after verifying live `hermes cron list` and adding wiki-stocktake-maintenance -- Cleaned duplicate rows from the scheduled-tasks table +## [2026-08-17] update | Nightly wiki audit — Nextcloud ncdownloader crash +- **New page:** `systems/nextcloud.md` — documented Nextcloud CT270: version 33.0.2.2, apps inventory, ncdownloader incompatibility incident, access details, related pages. +- **Updated [[current-state]]** — added Recent Changes (2026-08-17) section with ncdownloader fix details. +- **Updated [[infrastructure/proxmox]]** — CT270 entry now shows Nextcloud version and ncdownloader status. +- **Updated [[index.md]]** — added Nextcloud link to Core systems, bumped last-updated to 2026-08-17. +- No secrets written. + +## [2026-08-16] update | Nightly wiki audit — OmniRoute capacity pressure, Agent Zero sluggishness, Hermes verification quirk +- **OmniRoute upstream capacity pressure documented:** `ServiceUnavailableError: Structurally heavy chat request capacity is busy` reported across agents via OmniRoute. Root cause: upstream OpenAI capacity pressure (recent incident Aug 11, now resolved). OmniRoute's context compression not always applied before sending oversized requests, amplifying the issue. Diagnostic requirements recorded. +- **Agent Zero sluggishness confirmed as orchestration overhead:** GPT-5.6 Luna is fast — the latency comes from Agent Zero's orchestration layer (large system prompts, multi-step reasoning, memory lookups, sub-agent spawning). GPT-5.6 Luna confirmed as real model (lightweight/fast tier, launched Jul 9, 2026). +- **Hermes model verification quirk documented:** Custom endpoint verification can fail with "could not reach" when the endpoint returns HTTP 402 (auth required) during unauthenticated transient checks. Config `http://omni:20128/v1` is correct — `/v1` is required. +- **Updated [[systems/omniroute]]** — added Recent Changes (2026-08-16) section, bumped `updated`/`verified_on` to 2026-08-16. +- **Updated [[current-state]]** — added Recent Changes (2026-08-16) section, bumped `updated` to 2026-08-16. +- **Updated [[index.md]]** — bumped last-updated date to 2026-08-16. +- No new pages created. No secrets written. + +## [2026-08-18] incident | Mnemosyne capture pipeline broken (active) +- **New page:** `incidents/2026-08-18-mnemosyne-capture-pipeline` — working memory capture (`sync_turn`) stopped functioning after 2026-08-16 23:15:39, ~48 hours of conversation turns not captured. Root cause: silent guard conditions in `run_agent.py:_sync_external_memory_for_turn()`. MEMDEBUG logging recommended. Config verified clean (native YAML types). Still active as of verification. +- **Updated [[systems/mnemosyne]]** — added 2026-08-18 incident to History and Evidence, bumped `updated`/`verified_on` to 2026-08-18, added cross-reference to Related. +- **Updated [[current-state]]** — added Recent Changes (2026-08-18) section with capture pipeline incident, bumped `updated` to 2026-08-18. +- **Updated [[index.md]]** — added 2026-08-18 incident to Incidents section, bumped last-updated to 2026-08-18. +- **Marked [[incidents/2026-08-01-mnemosyne-capture-failure]]** — status changed from `active` to `resolved` (that earlier incident was fixed). +- No secrets written. + +## [2026-08-23] update | Nightly wiki audit — Cron failures, wiki-stocktake drift, Mnemosyne watchdog history +- **Cron job failures documented (Weekly Review session):** Three distinct failure patterns identified in past 7 days: + - `wiki-stocktake-maintenance` (1a8e90ea2271) failing ×4 (Aug 20–23) — config drift skip: model changed from `cx/gpt-5.6-luna` → `go-cheap`/`opencode-go/gpt-5.6-luna`, job unpinned. Requires explicit provider/model pinning. + - CT221 gitea miner watchdog (d5516d0a5147) failing ×6+ (Aug 19) — SSH to PVE (root@100.96.100.82) failed repeatedly; CT 221 status = UNKNOWN, never inspected. + - Mnemosyne Watchdog (96eb95ce12f2) major incident (Aug 19 early AM) — no consolidation for 36–41.5+ hours (last seen Aug 17 07:15). Watchdog cycled for ~2 hours before stopping. +- **Updated [[systems/scheduled-tasks]]** — added Known Issues section with cron failure patterns, bumped `updated`/`verified_on` to 2026-08-23. +- **Updated [[systems/mnemosyne]]** — added Mnemosyne Watchdog Aug 19 incident to History section, bumped `updated`/`verified_on` to 2026-08-23. +- **Updated [[current-state]]** — added Recent Changes (2026-08-23) section with cron failures summary. +- **Updated [[index.md]]** — bumped last-updated date to 2026-08-23. +- No secrets written. + +## [2026-08-19] update | Nightly wiki audit — Ignis deployment, Command Code provider, Tavili search status +- **New page:** `systems/ignis.md` — documented Ignis browser-native Obsidian (Docker `ignis-subpath:0.8.9`, port 8080, Tailscale Serve at `hermes.kangaroo-eel.ts.net/ignis`). Volume mount: `/home/hermes/wiki/agent-estate-wiki:/vaults/wiki`. Verified live: container running, Tailscale route active. +- **Updated [[systems/model-providers]]** — added `command-code` provider (`https://api.commandcode.ai/provider/v1`) to Current Provider Stack. Bumped `updated`/`verified_on` to 2026-08-19. +- **Updated [[systems/omniroute]]** — added Recent Changes (2026-08-19) section documenting Command Code provider, `deepseek-flash-mix` combo, and Tavili search proxy status. Bumped `updated`/`verified_on` to 2026-08-19. +- **Updated [[infrastructure/docker-services]]** — added Ignis compose file and service definition. +- **Updated [[infrastructure/hosts]]** — added Ignis to CT460 row. +- **Updated [[systems/obsidian]]** — added Ignis as browser interface, corrected vault path to `agent-estate-wiki/`, added Quartz static site reference. +- **Updated [[current-state]]** — added Recent Changes (2026-08-19) section with Ignis deployment, Command Code provider, and Tavili search status. +- **Updated [[index.md]]** — added Ignis link to Core systems, bumped last-updated to 2026-08-19. +- No secrets written. +## [2026-08-26] update | Nightly wiki audit — Cron job reconciliation +- **Updated [[systems/scheduled-tasks]]** — reconciled live `hermes cron list` (27 jobs) against wiki table (29 entries). Removed: `Workday start reminder` (no longer in live list), `CT 221 Miner Watchdog` (job `d5516d0a5147` removed; CT221 status unknown), `Review Agent Estate Phase One` (one-time job completed 2026-08-08). Added: `weekly-save-restricted-bot-restart` (`0 3 * * 0`, local, no-agent). Updated count from 29 to 27. +- **Updated [[current-state]]** — added Recent Changes (2026-08-26) section documenting cron reconciliation and wiki-stocktake-maintenance drift persistence. +- **Updated [[index.md]]** — bumped last-updated to 2026-08-26, corrected job count reference (29 → 27). +- **Known Issues cleanup** — removed stale CT221 miner watchdog SSH failure entry (job no longer exists). +- No secrets written. + +## [2026-09-02] incident | SFTPGo outage on CT299 +- **New page:** `incidents/2026-09-02-sftpgo-outage.md` — documented CT299 SFTPGo outage (02:18 AWST). Root cause: CT299 swap exhausted (43Gi used, 100%), `tailscaled` died; PVE `pct start` failed due to 5 stale `lxc-attach` processes pinning cgroup. Killed PIDs 3037951/3334928/3352203/3402511/4004148, `pct stop 299 --skiplock` + `pct start 299`. Verified end-to-end: direct Tailscale connection, SFTPGo WebAdmin HTTP 401, SFTP banner `SSH-2.0-SFTPGo_2.7.0`. +- **Updated [[current-state]]** — added Recent Changes (2026-09-02) section, bumped `updated`/`verified_on` to 2026-09-04. +- **Updated [[infrastructure/proxmox]]** — CT299 entry already documented incident; no change needed. +- No secrets written. + +## [2026-08-28] update | Department of Communities role and social-media audit +- **New page:** `reports/communities-wa-social-media-audit-2026` — durable strategic summary of Anthony's supplied public-source audit for his Department of Communities Social Media Officer role. +- **Updated [[systems/current-profile]]** — recorded current employment context and linked the report. +- **Updated [[index.md]]** — added the report to the Reports section and refreshed the last-updated date. +- No secrets written. diff --git a/raw/stocktake/freshness-20260817.txt b/raw/stocktake/freshness-20260817.txt new file mode 100644 index 0000000..b6fc167 --- /dev/null +++ b/raw/stocktake/freshness-20260817.txt @@ -0,0 +1,90 @@ +# Wiki freshness audit — 2026-08-17 +Threshold: >21 days since `updated` + +## STALE (38) + +- [ 26d] comparisons/camoufox-vs-chrome.md (updated 2026-07-22) +- [ 26d] comparisons/hermes-vs-nanobot.md (updated 2026-07-22) +- [ 26d] concepts/agent-memory.md (updated 2026-07-22) +- [ 26d] concepts/model-routing.md (updated 2026-07-22) +- [ 26d] concepts/persistent-shells.md (updated 2026-07-22) +- [ 26d] concepts/tool-calling.md (updated 2026-07-22) +- [ 26d] decisions/index.md (updated 2026-07-22) +- [ 26d] decisions/keep-openrouter-as-fallback.md (updated 2026-07-22) +- [ 26d] decisions/persistent-shell-enabled.md (updated 2026-07-22) +- [ 26d] experiments/index.md (updated 2026-07-22) +- [ 26d] infrastructure/backups.md (updated 2026-07-22) +- [ 26d] infrastructure/credentials-map.md (updated 2026-07-22) +- [ 26d] infrastructure/docker-services.md (updated 2026-07-22) +- [ 26d] infrastructure/domains-and-tunnels.md (updated 2026-07-22) +- [ 26d] infrastructure/network-map.md (updated 2026-07-22) +- [ 26d] queries/retained-research-answers.md (updated 2026-07-22) +- [ 26d] runbooks/backup-wiki.md (updated 2026-07-22) +- [ 26d] runbooks/diagnose-docker.md (updated 2026-07-22) +- [ 26d] runbooks/provider-health.md (updated 2026-07-22) +- [ 26d] runbooks/recover-docker-service.md (updated 2026-07-22) +- [ 26d] runbooks/restart-browser.md (updated 2026-07-22) +- [ 26d] runbooks/restart-hermes.md (updated 2026-07-22) +- [ 26d] runbooks/restore-openrouter.md (updated 2026-07-22) +- [ 26d] runbooks/test-openrouter.md (updated 2026-07-22) +- [ 26d] runbooks/troubleshoot-tool-loop.md (updated 2026-07-22) +- [ 26d] runbooks/update-hermes-safely.md (updated 2026-07-22) +- [ 26d] systems/cloudflare-tunnel.md (updated 2026-07-22) +- [ 26d] systems/current-profile.md (updated 2026-07-22) +- [ 26d] systems/headless-server.md (updated 2026-07-22) +- [ 26d] systems/home-assistant.md (updated 2026-07-22) +- [ 26d] systems/messaging-integrations.md (updated 2026-07-22) +- [ 26d] systems/openrouter.md (updated 2026-07-22) +- [ 26d] systems/terminal-backend.md (updated 2026-07-22) +- [ 23d] runbooks/gateway-resource-resilience.md (updated 2026-07-25) +- [ 23d] systems/hermes-agent.md (updated 2026-07-25) +- [ 23d] systems/tool-search.md (updated 2026-07-25) +- [ 22d] systems/homepage-dashboard.md (updated 2026-07-26) +- [ 22d] systems/obsidian.md (updated 2026-07-26) + +## FRESH (32) + +- [ 1d] CONTRIBUTING.md +- [ 2d] agents/hermes-chaos.md +- [ 2d] agents/hermes-production.md +- [ 2d] agents/index.md +- [ 2d] agents/nanobot.md +- [ 2d] agents/open-claw.md +- [ 2d] agents/qwenpaw.md +- [ 2d] agents/zeroclaw.md +- [ 5d] comparisons/memory-backends.md +- [ 5d] comparisons/model-routers.md +- [ 15d] comparisons/steel-vs-camoufox.md +- [ 15d] concepts/browser-automation.md +- [ 3d] current-state.md +- [ 15d] decisions/rollback-steel-to-camofox.md +- [ 16d] incidents/2026-08-01-mnemosyne-capture-failure.md +- [ 3d] infrastructure/hosts.md +- [ 4d] infrastructure/proxmox.md +- [ 1d] infrastructure/tailscale.md +- [ 15d] reports/uber-eats/index.md +- [ 20d] runbooks/job-radar.md +- [ 20d] runbooks/multiplexer-setup.md +- [ 15d] systems/browser-backend.md +- [ 3d] systems/guanaco.md +- [ 18d] systems/hermes-ui.md +- [ 16d] systems/memory-backend.md +- [ 15d] systems/mnemosyne.md +- [ 3d] systems/model-providers.md +- [ 10d] systems/nanobot.md +- [ 3d] systems/omniroute.md +- [ 19d] systems/opencode-go.md +- [ 1d] systems/scheduled-tasks.md +- [ 0d] systems/skills-index.md + +## NO updated DATE (7) + +- SCHEMA.md +- experiments/active/example.md +- incidents/2026-07-29-mnemosyne-relay.md +- incidents/2026-08-04-omniroute-free-deepseek-silent-stops.md +- index.md +- log.md +- reports/uber-eats/2026-07.md + +TOTAL: 38 stale, 32 fresh, 7 no-date of 77 pages \ No newline at end of file diff --git a/reports/communities-wa-social-media-audit-2026.md b/reports/communities-wa-social-media-audit-2026.md new file mode 100644 index 0000000..a422494 --- /dev/null +++ b/reports/communities-wa-social-media-audit-2026.md @@ -0,0 +1,69 @@ +--- +title: Department of Communities WA Social Media Audit and First-Day Brief +type: report +status: active +created: 2026-08-28 +updated: 2026-08-28 +review_after: 2026-11-26 +confidence: medium +tags: [content, research, department-of-communities, social-media] +sources: [/home/hermes/.hermes/cache/documents/doc_3cc87da4957f_deep-research-report.md] +--- + +# Department of Communities WA Social Media Audit and First-Day Brief + +## Context + +Anthony Martin commenced as Social Media Officer managing communications for the Western Australian Department of Communities in August 2026. This page records the durable strategic findings from the public-source audit supplied on 2026-08-28. It is a public baseline, not a substitute for native platform analytics. + +## Strategic baseline + +- The Department's current remit spans child protection, community services, homelessness, prevention of family and domestic violence, disability services, early childhood education and care regulation, women's interests, youth, seniors and ageing, carers, and volunteering. +- Housing moved to the Department of Housing and Works in July 2025. Corporate social profiles must be checked for legacy housing descriptions and other obsolete metadata. +- Official corporate channels identified: Facebook, Instagram, LinkedIn and X. WA Seniors Card has a separate identified Facebook presence. The audit did not establish a need for ten additional portfolio accounts. +- LinkedIn is the largest visible audience asset at approximately 46,143 followers; Instagram was approximately 2,515 followers at the time of audit. Public data cannot support reliable twelve-month follower-growth, reach, impressions, paid-spend or sentiment claims. +- Public examples indicate that human, tangible-outcome and social-native video content materially outperforms routine administrative or consultation posts. Youth Week creative is the clearest benchmark. + +## Recommended channel roles + +| Channel | Primary role | Starting cadence | +|---|---|---:| +| LinkedIn | Institutional reputation, workforce, sector and policy | 4–5 posts/week | +| Facebook | Broad community utility, human stories and conversation | 4–6 posts/week | +| Instagram | Visual participation, Reels, explainers and younger audiences | 3–4 feed/Reel posts/week | +| X | Fast news, regulatory updates, media and issue response | Need-driven | +| WA Seniors Card | Service-specific older-audience communication | Analytics-led | + +## Priority operating recommendations + +1. Obtain thirteen months of native platform, advertising and website analytics before increasing posting volume. +2. Tag every post by portfolio, audience, objective, format, campaign and organic/paid/partner distribution. +3. Measure service outcomes—applications, enquiries, bookings, submissions and completions—not only likes or follower growth. +4. Build channel-native versions of major announcements rather than copying one post across every platform. +5. Scale recurring human-first and co-designed formats, with informed consent and trauma-informed safeguards. +6. Separate organic owned, boosted owned, paid dark/standalone and partner/earned distribution in reporting. +7. Establish an escalation matrix for safeguarding disclosures, sensitive personal information, emergencies, misinformation and media issues. +8. Make captions, alt text, readable graphics, plain English, translations, Easy Read and other accessibility requirements publishing gates. + +## Key campaign benchmarks + +- 16 Days in WA: strong integrated owned, partner, event, sponsor and earned campaign architecture. +- Coercive Control / “A Story That's Not Ours”: strongest example of culturally specific co-design and multilingual adaptation. +- Youth Week WA: strongest public evidence for social-native, youth-participatory creative. +- Working with Children Check: treat as an ongoing behaviour-change program with action KPIs, not disconnected regulatory notices. +- Carers, volunteering, disability and seniors programs: extend personal stories and measure the relevant service or participation funnel. + +## Immediate first-week checklist + +- Confirm administrator access and ownership for all corporate and paid accounts. +- Export or request Meta, LinkedIn, X, advertising and website data for 1 July 2025–28 August 2026. +- Correct legacy Housing references across profiles, banners, pinned posts, links and automated responses. +- Obtain the current moderation, safeguarding and after-hours escalation procedure. +- Map the forward campaign calendar against the eleven content pillars. +- Create a 90-day plan in which every item has an owner, approval status, accessibility status, CTA and KPI. + +## Related + +- [[systems/current-profile]] +- [[current-state]] +- [[queries/retained-research-answers]] diff --git a/serve.py b/serve.py index 22adeae..9e0eaf8 100644 --- a/serve.py +++ b/serve.py @@ -27,6 +27,11 @@ class CleanURLHandler(http.server.SimpleHTTPRequestHandler): self.send_header('Access-Control-Allow-Origin', '*') super().end_headers() +class CleanURLServer(socketserver.TCPServer): + allow_reuse_address = True # set BEFORE bind: permits instant rebind on restart + # (TIME-WAIT of prior instance would otherwise + # cause OSError 98 "Address already in use") + if __name__ == '__main__': import argparse parser = argparse.ArgumentParser() @@ -39,6 +44,6 @@ if __name__ == '__main__': CleanURLHandler.directory = str(directory) os.chdir(directory) - with socketserver.TCPServer((args.bind, args.port), CleanURLHandler) as httpd: + with CleanURLServer((args.bind, args.port), CleanURLHandler) as httpd: print(f"Serving {directory} at http://{args.bind}:{args.port}") httpd.serve_forever() diff --git a/systems/current-profile.md b/systems/current-profile.md index 689e517..3b1d7a6 100644 --- a/systems/current-profile.md +++ b/systems/current-profile.md @@ -3,8 +3,8 @@ title: Current Hermes Profile type: system status: active created: 2026-07-22 -updated: 2026-07-22 -verified_on: 2026-07-22 +updated: 2026-08-28 +verified_on: 2026-08-28 confidence: high tags: [system, hermes, profile] sources: [raw/configs/hermes-config-sanitized.txt] @@ -33,6 +33,11 @@ sources: [raw/configs/hermes-config-sanitized.txt] - Install: `~/.hermes/hermes-agent/` - Bin: `~/.local/bin/hermes` +## Current Employment Context +- **Role:** Social Media Officer, Western Australian Department of Communities +- **Started:** August 2026 +- **Relevant working document:** [[reports/communities-wa-social-media-audit-2026]] + ## Related - [[systems/hermes-agent]] - [[model-providers]] \ No newline at end of file diff --git a/systems/model-providers.md b/systems/model-providers.md index 7941b24..9e2f654 100644 --- a/systems/model-providers.md +++ b/systems/model-providers.md @@ -3,8 +3,8 @@ title: Model Providers type: system status: active created: 2026-07-22 -updated: 2026-08-14 -verified_on: 2026-08-14 +updated: 2026-08-20 +verified_on: 2026-08-20 confidence: high tags: [model, provider, inference, routing] sources: [live-probe, config, web-search] @@ -21,6 +21,7 @@ Inference providers available to Hermes, their routing paths, and notable model | `custom:litellm` | `http://litellm:4000/v1` | Main inference (slower path, 6–26s/call) | | `custom:omni` | `http://omni:20128/v1` | Auxiliary roles (vision, skills, approval, mcp, web_extract, compression) — factory-reset 2026-08-14 | | `opencode-zen` | (internal) | Free-tier model access for cron jobs | +| `charm-hyper` | `hyper.charm.land/v1` | Coding-focused inference (Charmbracelet) — passthrough models, free tier 100 credits/mo | | Guanaco | `ollama:11434` | LLM proxy/router on CT205 (Ollama stack) | ## Default Model @@ -30,6 +31,15 @@ Inference providers available to Hermes, their routing paths, and notable model ## Notable Model Updates +### HyperCharm (Charmbracelet) — Provider Research (2026-08-20) +- **What:** Hyper (hyper.charm.land) is Charmbracelet's LLM inference service, purpose-built for agentic coding models +- **OmniRoute integration:** Already merged — PR #5961 (2026-07-03) added as `charm-hyper` provider with passthrough models from `hyper.charm.land/v1/models` +- **Free plan:** 100 Hypercredits/month (~$5 value), no rollover — use it or lose it monthly +- **Credit mechanics:** 1 Hypercredit = $0.05; balance queryable via `GET /v1/credits` (returns `{"balance": 100}`) +- **Catalog pricing (cheap models):** deepseek-v4-flash $0.20/$0.40 per 1M in/out, qwen3.7-flash $0.20/$0.80, gemma-4-26b $0.12/$0.42 +- **No config changes made** — research only; `charm-hyper` is available but not wired as a Hermes default +- **Status:** Candidate for free-tier OmniRoute combo; passthrough model import means zero maintenance + ### GPT-5.6 Luna — Model Research (2026-08-14) - **Community consensus:** Luna is cleaner/more polished; DeepSeek V4 Flash is more persistent/cheaper - **Luna strengths:** visual/UI work, final code review, bounded high-stakes tasks, cleaner structured output diff --git a/systems/skills-index.md b/systems/skills-index.md index c8ea38d..5674657 100644 --- a/systems/skills-index.md +++ b/systems/skills-index.md @@ -3,8 +3,8 @@ title: Installed Skills type: system status: active created: 2026-07-22 -updated: 2026-08-16 -verified_on: 2026-08-16 +updated: 2026-08-17 +verified_on: 2026-08-17 confidence: high tags: [skills, hermes] sources: [] @@ -12,7 +12,7 @@ sources: [] # Installed Skills -**Total installed: 331 skills** in `~/.hermes/skills/`. +**Total installed: 332 skills** in `~/.hermes/skills/`. This page is auto-regenerated from the live skill inventory. Do not hand-edit. @@ -22,412 +22,413 @@ This page is auto-regenerated from the live skill inventory. Do not hand-edit. ## Autonomous Ai Agents (8) -- `antigravity-cli` -- `claude-code` -- `codex` -- `computer-use` -- `hermes-agent` -- `merge-reconciler` -- `opencode` -- `openhands` +- `antigravity-cli` — Operate the Antigravity CLI (agy): plugins, auth, sandbox. +- `claude-code` — Delegate coding to Claude Code CLI (features, PRs). +- `codex` — Delegate coding to OpenAI Codex CLI (features, PRs). +- `computer-use` — Drive the desktop in the background without stealing focus. +- `hermes-agent` — Use, configure, theme, extend, and orchestrate Hermes Agent. +- `merge-reconciler` — Neutral third-party resolution of agent merge conflicts. +- `opencode` — Delegate coding to OpenCode CLI (features, PR review). +- `openhands` — Delegate coding to OpenHands CLI (model-agnostic, LiteLLM). ## Hermes (5) -- `hermes-personality-soulmd` -- `hermes-telegram-miniapp` -- `hermes-tts-configuration` -- `hermes-ui-ops` -- `soul-md-design` +- `hermes-personality-soulmd` — Edit and verify Hermes Agent's core personality/identity file (SOUL.md). Use when the user wants to change 'who Hermes i +- `hermes-telegram-miniapp` — Deploy and operate the standalone Hermes Telegram Mini App repo onto a Hermes Agent LXC/VM. Covers the full CT460 workfl +- `hermes-tts-configuration` — Set up Hermes TTS: providers, voice, persona, config edits. +- `hermes-ui-ops` — Operate Hermes desktop UI — Vite, HTTPS, mic, systemd. +- `soul-md-design` — Research SOUL.md patterns for structured agent personas. ## Devops (127) -- `abyss-ios-pairing` -- `agent-extension-audit` -- `agent-observability` -- `agent-stack-weekly-review` -- `agentmail-webhook-tailscale` -- `anthropic-spend-forensics` -- `browser-automation-recovery` -- `browser-backend-verification` -- `browser-tab-lifecycle-and-recovery` -- `camofox-browser-automation` -- `camofox-pitfalls` -- `camoufox-remote-websocket` -- `chat4000-ops` -- `cloudflare-ops` -- `codex-via-cliproxy` -- `container-cpu-forensics` -- `crawlee-batch-scrape` -- `cron-job-maintenance` -- `cron-prompt-service-integration` -- `cronjob-prompt-hardening` -- `cross-profile-session-handoff` -- `cua-computer-use` -- `cua-driver-lifecycle` -- `cua-driver-linux-accessibility` -- `custom-dashboard-ops` -- `dashboard-server-ops` -- `docker-management` -- `external-auth-script-integration` -- `external-skill-integration` -- `free-web-tools` -- `freshrss-intelligence-filter` -- `gcp-vertex-ai-provider` -- `gmail-imap-email-monitor` -- `google-apis` -- `google-contacts-birthday-sync` -- `guanaco-ops` -- `hermes-agent-install` -- `hermes-agent-ops` -- `hermes-api-vault` -- `hermes-config-backup` -- `hermes-config-diagnostics` -- `hermes-cron-operations` -- `hermes-cron-patterns` -- `hermes-gateway-config-loading` -- `hermes-gateway-ops` -- `hermes-instance-migration` -- `hermes-mattermost-integration` -- `hermes-memory-systems` -- `hermes-multi-agent` -- `hermes-multiplex-telegram-ops` -- `hermes-plugin-live-verification` -- `hermes-plugin-ops` -- `hermes-profile-ops` -- `hermes-profile-scoped-platform-troubleshooting` -- `hermes-provider-configuration` -- `hermes-routing-and-domains` -- `hermes-self-diagnosis` -- `hermes-session-context-ops` -- `hermes-soul-forge` -- `hermes-web-tools` -- `hermes-webui-ops` -- `hindsight-docs` -- `hindsight-import-mnemosyne` -- `hindsight-ops` -- `hindsight-selfhost` -- `homarr-dashboard-management` -- `homarr-dashboard-ops` -- `homelab-docker-update` -- `homelab-instance-migration` -- `homelab-service-management` -- `homelab-virtual-desktop` -- `job-board-scraping-reference` -- `jobs-dashboard-server-ops` -- `kanban-orchestrator` -- `kanban-worker` -- `linux-systemd-desktop` -- `litellm-openrouter-key-pooling` -- `litellm-proxy-ops` -- `llm-model-diagnostics` -- `llm-proxy-streaming` -- `mattermost-ops` -- `mattermost-platform-ops` -- `mcp-agent-integration` -- `media-download-ops` -- `memory-governance` -- `mnemosyne-operations` -- `multi-agent-git-ops` -- `nanobot-omniroute-skills` -- `nanobot-ops` -- `nextcloud-ops` -- `obsidian-ops` -- `omniroute-combo-troubleshooting` -- `omniroute-context-tuning` -- `omniroute-mcp-portal-cloudflare-auth` -- `omniroute-ops` -- `omniroute-skill-caller` -- `omniroute-skill-execution` -- `openclaw-ops` -- `pre-flight-investigation` -- `pve-lxc-intrusion-detection` -- `pve-ops` -- `qwenpaw-agent-operations` -- `radar-jobs-dashboard` -- `readlater-ops` -- `runtipi-container-management` -- `sdlc-review` -- `security-incident-response` -- `self-hosted-app-deploy` -- `self-hosted-dashboard-deployment-verification` -- `session-verification` -- `solutions-first-agent-conduct` -- `tailscale-cert-for-docker-https` -- `tailscale-ops` -- `tailscale-serve-route-management` -- `tailscale-serve-routes` -- `task-approach` -- `telegram-create-forum-topic` -- `tmux-config` -- `tool-ecosystem-evaluation` -- `uber-eats-monitor` -- `versioning-live-services` -- `vision-model-validation` -- `watchers` -- `web-content-extraction` -- `weekly-comms-tracker` -- `wiki-maintenance` -- `zeroclaw-ops` +- `abyss-ios-pairing` — Pair an iPhone with this Hermes instance via The Abyss iOS app — Tailscale Funnel/Serve + API key + QR. Detects host OS +- `agent-extension-audit` — > +- `agent-observability` — Observability and evaluation for Hermes agent tasks: event logging, memory attribution, repair-memory tracking, failure +- `agent-stack-weekly-review` — Weekly health review for the Hermes+Mnemosyne agent stack: read-only data collection from governance, observability, Mne +- `agentmail-webhook-tailscale` — Real-time AgentMail webhooks via Tailscale funnel push. +- `anthropic-spend-forensics` — Use when unexplained Anthropic spend needs attribution. +- `browser-automation-recovery` — > +- `browser-backend-verification` — Verify active browser backend and CDP connectivity. +- `browser-tab-lifecycle-and-recovery` — >- +- `camofox-browser-automation` — Operate the Camofox headless browser service for authenticated scraping, periodic data extraction, and browser automatio +- `camofox-pitfalls` — Runtime pitfalls and edible fixes for the Camofox browser REST API on Anthony's homelab. Complements camofox-browser-aut +- `camoufox-remote-websocket` — Expose Camoufox as a remote Playwright WebSocket server for cross-host browser automation. Use when another agent needs +- `chat4000-ops` — Operate, diagnose, and pair the chat4000 Hermes plugin — the native iPhone/Mac app for Hermes. Covers CLI commands, devi +- `cloudflare-ops` — Operate Cloudflare services — DNS, Tunnels, R2 Object Storage (S3-compatible), API authentication, and domain management +- `codex-via-cliproxy` — Run the OpenAI Codex CLI (codex) on a machine where chatgpt.com/backend-api is geo-blocked (HTTP 451) or the stored OAut +- `container-cpu-forensics` — Find idle-CPU vampires: cgroup truth, crash loops. +- `crawlee-batch-scrape` — Lightweight batch URL scraping with Crawlee. Extracts markdown/text from multiple URLs in parallel. Low resource footpri +- `cron-job-maintenance` — Debug, fix, and harden Hermes cron jobs — particularly multi-step autonomous jobs where models skip or incompletely exec +- `cron-prompt-service-integration` — Authed-API cron prompts: wrap calls in helper scripts. +- `cronjob-prompt-hardening` — Use when hardening cronjob prompts against fabrication. +- `cross-profile-session-handoff` — Continue work from a dead or stuck Hermes specialist profile in the default/supervisor profile. Covers session dump insp +- `cua-computer-use` — Set up and operate cua-driver for GUI automation on headless Linux servers. Covers virtual display setup (Xtigervnc/Xvfb +- `cua-driver-lifecycle` — Manage cua-driver processes on Hermes VMs — diagnose runaway instances, implement idle-timeout wrappers, and configure H +- `cua-driver-linux-accessibility` — Fix AT-SPI bridge when computer_use returns 0x0 on Linux. +- `custom-dashboard-ops` — Operate or deploy the custom-dashboard on CT201. +- `dashboard-server-ops` — Operate, extend, and troubleshoot self-hosted Python HTTP API servers serving SPAs. Covers http.server-based dashboards, +- `docker-management` — Manage Docker containers, images, volumes, and Compose. +- `external-auth-script-integration` — Fix broken script authentication by redirecting to local helper scripts, preserving module APIs during rewrites, and ver +- `external-skill-integration` — Bring external skills, standalone CLI tools, and MCP server binaries from GitHub repos into Hermes — for Hermes skills u +- `free-web-tools` — >- +- `freshrss-intelligence-filter` — Intelligence-filter upgrade for FreshRSS midday cron: clusters articles by topic, flags urgent items, adds 'why this mat +- `gcp-vertex-ai-provider` — Configure Google Cloud Vertex AI as an inference provider in the homelab – save service account credentials, test connec +- `gmail-imap-email-monitor` — Cron-friendly Gmail IMAP pattern for Hermes Agent: find new messages by UID range, parse headers robustly, detect urgenc +- `google-apis` — Google Gmail, Calendar, Drive, Docs, Sheets tools. +- `google-contacts-birthday-sync` — Sync Facebook birthdays to contacts services (Google Contacts, iCloud). Cross-references Facebook birthday data with Goo +- `guanaco-ops` — Operate Guanaco LLM proxy on CT205. +- `hermes-agent-install` — Install, reinstall, upgrade, and diagnose Hermes Agent installations. Covers the official installer (scripts/install.sh) +- `hermes-agent-ops` — Diagnose and fix problems with Hermes Agent's OWN runtime — the web UI (port 8787), the memory-ui dashboard plugin ('Hin +- `hermes-api-vault` — Manage Hermes plugin/agent API credentials stored in a Notion vault — query the vault, map entries to ~/.hermes/.env var +- `hermes-config-backup` — Use when Hermes' Gitea config backup is stale or missing. +- `hermes-config-diagnostics` — >- +- `hermes-cron-operations` — Operate, diagnose, and fix Hermes Agent scheduled cron jobs — list jobs, inspect configs, debug failures, manage scripts +- `hermes-cron-patterns` — Reliable cron job patterns for Hermes Agent. Covers prompt hardening, step enforcement, verification loops, subagent del +- `hermes-gateway-config-loading` — >- +- `hermes-gateway-ops` — Operate, diagnose, and troubleshoot the Hermes Agent messaging gateway — platform connections, config management, servic +- `hermes-instance-migration` — Audit one Hermes Agent instance's skills/state and port a curated subset (skills, scripts, data, cookies) to another ins +- `hermes-mattermost-integration` — Configure/troubleshoot Mattermost adapter for Hermes. +- `hermes-memory-systems` — Evaluate, configure, migrate, and troubleshoot Hermes Agent memory providers. Covers all 9 official providers (Hindsight +- `hermes-multi-agent` — Design, configure, and troubleshoot multi-agent Hermes setups using profiles, delegate_task, Kanban, and Telegram bot se +- `hermes-multiplex-telegram-ops` — Diagnose Hermes profile Telegram silence under multiplex. +- `hermes-plugin-live-verification` — Verify Hermes plugin enablement, hook registration, live event emission, dual-write consistency, and fallback evidence p +- `hermes-plugin-ops` — Install, configure, optimize, and troubleshoot Hermes Agent plugins — covers plugin installation via CLI, provider/routi +- `hermes-profile-ops` — Audit, diagnose, and optimize Hermes agent profiles. Covers systematic inspection of config.yaml, profile.yaml, SOUL.md, +- `hermes-profile-scoped-platform-troubleshooting` — Repair platform adapter mismatches across Hermes profiles. +- `hermes-provider-configuration` — Configure Hermes Agent inference providers and custom OpenAI-compatible endpoints. Use when the user asks to add/switch +- `hermes-routing-and-domains` — Route requests correctly across Hermes CT460's multi-service architecture. Covers Tailscale Serve, Cloudflare Tunnel, do +- `hermes-self-diagnosis` — >- +- `hermes-session-context-ops` — Use when Hermes desktop chats lose or blend context. +- `hermes-soul-forge` — Operate the Soul Forge plugin — manage community souls, import profile SOUL.md files from repos, verify profile sync, an +- `hermes-web-tools` — Use the web search + content-extraction capability already installed on this Hermes instance. Covers the built-in web_ex +- `hermes-webui-ops` — Operate, restart, and verify the standalone Hermes WebUI on port 8787 (NOT the official control UI — that's on 9119). Co +- `hindsight-docs` — Complete Hindsight documentation for AI agents. Use this to learn about Hindsight architecture, APIs, configuration, and +- `hindsight-import-mnemosyne` — Import memories from a Mnemosyne SQLite DB into self-hosted Hindsight (:8888). 6,658 chunks (episodic+gists+working+fact +- `hindsight-ops` — Hindsight memory system — self-hosted LIVE on :8888 (systemd hindsight.service; OmniRoute free-IA LLM + Google/Gemini em +- `hindsight-selfhost` — Self-host Hindsight bare-metal (no Docker) + official Control Plane dashboard. hindsight-all-slim + embedded pg0 + hybri +- `homarr-dashboard-management` — Manage Homarr v1 dashboard on runtipi — multi-board setup, permissions, schema validation, PVE integration, and master b +- `homarr-dashboard-ops` — >- +- `homelab-docker-update` — Audit, update, and maintain Docker containers running inside homelab LXCs/VMs — across runtipi, bare Docker hosts, and a +- `homelab-instance-migration` — Audit and migrate a Hermes Agent instance from a source (old/bloated) box to a target (lean) box. Covers skill auditing, +- `homelab-service-management` — Deploy, update, and troubleshoot services running as Docker containers or bare-metal on Anthony's homelab Tailscale node +- `homelab-virtual-desktop` — Build, persist, expose, and debug a viewable virtual desktop (TigerVNC + websockify + Tailscale serve + systemd) on the +- `job-board-scraping-reference` — Platform-specific scraping behaviors for Australian job boards (SEEK, Indeed, LinkedIn) including access patterns, salar +- `jobs-dashboard-server-ops` — Operate, debug, and extend the Notion-sourced job tracker dashboard (port 9099). Covers API routes, cover letter serving +- `kanban-orchestrator` — Decomposition playbook + anti-temptation rules for an orchestrator profile routing work through Kanban. The "don't do th +- `kanban-worker` — Pitfalls, examples, and edge cases for Hermes Kanban workers. The lifecycle itself is auto-injected into every worker's +- `linux-systemd-desktop` — | +- `litellm-openrouter-key-pooling` — Add additional OpenRouter API keys to a LiteLLM proxy setup as a pool, without replacing the existing key. Use when the +- `litellm-proxy-ops` — Manage a running LiteLLM proxy instance via its REST admin API — add/remove models, register new providers, update proxy +- `llm-model-diagnostics` — Diagnose LLM model quality issues: why a model feels 'dumb', responses get truncated, reasoning models return empty cont +- `llm-proxy-streaming` — Use when an agent surfaces raw SSE chunks as errors. +- `mattermost-ops` — Operate, diagnose, and maintain a self-hosted Mattermost server (native or LXC). Covers plugin management, Agents plugin +- `mattermost-platform-ops` — Debug Hermes Mattermost adapter: typing, delivery, auth. +- `mcp-agent-integration` — Install and wire local stdio MCP servers (e.g. SearXNG AI Kit) into the user's coding agents — Claude Code, Goose, OpenC +- `media-download-ops` — Operate homelab torrent clients via Web API. +- `memory-governance` — Govern durable memory writes for Hermes + Mnemosyne: audit admissions, lifecycle metadata, duplicate/contradiction check +- `mnemosyne-operations` — Operate, diagnose, and maintain Hermes Agent's native Mnemosyne memory system. Covers health checks, dream cycle consoli +- `multi-agent-git-ops` — Git push, rebase, and merge workflows for repos where multiple agents (Hermes, Nanobot, coding agents) commit. Covers Gi +- `nanobot-omniroute-skills` — Give Nanobot (CT333) access to OmniRoute's skills + tools via MCP. Approach A = add OmniRoute's streamable-HTTP MCP serv +- `nanobot-ops` — Operate, diagnose, and recover the Nanobot gateway service on Proxmox CT333 (clawtest). IP: 192.168.178.66. Access via P +- `nextcloud-ops` — Operate and recover Anthony's self-hosted Nextcloud (CT270, NextCloudPi). Covers the 503/outage diagnosis (maintenance m +- `obsidian-ops` — Operate, diagnose, and troubleshoot Anthony's Obsidian vault. For basic note read/write/search and evidence-based resear +- `omniroute-combo-troubleshooting` — Diagnose and fix OmniRoute model combos that disappear from the /v1/models catalog (and thus from the Hermes /model pick +- `omniroute-context-tuning` — > +- `omniroute-mcp-portal-cloudflare-auth` — Reference for authenticating Hermes to mcp-portal.martinwa.org/mcp via Cloudflare Access headers, plus Nando's config lo +- `omniroute-ops` — Operate, diagnose, and configure OmniRoute — Anthony's AI routing proxy. Covers database access, alias/routing diagnosti +- `omniroute-skill-caller` — Call any skill installed on the OmniRoute MCP server by NAME (e.g. "mattermost", "nanobot", "hermes-agent-framework") wi +- `omniroute-skill-execution` — Execute skills on an OmniRoute MCP server (the composure_statistic_module / omniroute endpoint). Covers the streamable-H +- `openclaw-ops` — Operate, diagnose, and configure the Open-Claw VM — Anthony's autonomous AI agent gateway node (QEMU VM 403). Covers con +- `pre-flight-investigation` — Check the target and this box before installing anything. +- `pve-lxc-intrusion-detection` — Detect cryptominers on a Proxmox LXC via pct exec. +- `pve-ops` — Proxmox VE operations via REST API and SSH. Covers guest management, disk reports, diagnostics, and credential-based API +- `qwenpaw-agent-operations` — Troubleshoot QwenPaw agents and model routing. +- `radar-jobs-dashboard` — Use when operating or extending the RADAR jobs dashboard. +- `readlater-ops` — Operate, deploy, and fix Anthony's self-hosted ReadLater app (Tony0410/readlater) — Next.js + SQLite in Docker on debian +- `runtipi-container-management` — Update, clean up, and troubleshoot Docker containers inside a Runtipi LXC running on a Proxmox VE host. Covers inventory +- `sdlc-review` — Review Kanban handoffs and route verified outcomes. +- `security-incident-response` — Investigate and remediate homelab security incidents. +- `self-hosted-app-deploy` — Deploy, update, and troubleshoot self-hosted Docker applications on Tailscale-connected homelab VMs. Covers the full lif +- `self-hosted-dashboard-deployment-verification` — Use when verifying dashboard deployments. +- `session-verification` — Verify session claims — check DB, not memory. +- `solutions-first-agent-conduct` — How this agent must behave when a task hits a wall or a tool fails — lead with the attempt and the fix, not the limitati +- `tailscale-cert-for-docker-https` — Fix tailnet HTTPS cert errors with trusted Tailscale certs. +- `tailscale-ops` — Operate and manage Tailscale configuration — Serve routes, Funnel, DNS, ACLs, and debugging. Covers adding/removing serv +- `tailscale-serve-route-management` — Manage Tailscale Serve routes on CT460 — the `--set-path` replaces-all-rules pitfall, the full route inventory, and the +- `tailscale-serve-routes` — Manage Tailscale Serve routes on CT460 atomically. Use when routes need adding, fixing, or verifying. +- `task-approach` — How the agent should approach any task given by Anthony — pre-work, skill loading, quality gates, and delivery standards +- `telegram-create-forum-topic` — Create a Telegram forum topic (thread) in a group/supergroup that has topics enabled. Wraps the Telegram Bot API's creat +- `tmux-config` — Configure and troubleshoot tmux — fix scroll/scrollback (mouse mode, history-limit, wheel bindings) and live-apply confi +- `tool-ecosystem-evaluation` — Evaluate external tools, plugins, skills, and integrations for Hermes Agent and Nanobot. Use when auditing free add-ons, +- `uber-eats-monitor` — Monitor an Uber Eats order and announce via Sonos when delivery is imminent. Supports timer-based tracking (confidence) +- `versioning-live-services` — Use when versioning a live service dir into a private repo. +- `vision-model-validation` — Validate and select free vision-capable models via OmniRoute for Hermes auxiliary.vision tool. +- `watchers` — Poll RSS, JSON APIs, and GitHub with watermark dedup. +- `web-content-extraction` — >- +- `weekly-comms-tracker` — Track all weekly communications sent to Anthony to prevent repetition across weeks. SQLite-backed with content hashing f +- `wiki-maintenance` — Maintain the systems wiki for staleness and drift. +- `zeroclaw-ops` — Operate, diagnose, and configure ZeroClaw — Anthony's autonomous AI daemon on Proxmox CT333. Covers config editing (TOML ## Productivity (29) -- `airtable` -- `box` -- `briefing-visualization` -- `cover-letter-generation` -- `custom-pet-authoring` -- `decision-briefing-dashboards` -- `document-to-action-items` -- `docx` -- `google-workspace` -- `maps` -- `meeting-action-items` -- `nano-pdf` -- `notion` -- `notion-database-dedup` -- `obsidian-git-sync` -- `obsidian-git-sync` -- `ocr-and-documents` -- `pdf` -- `petdex` -- `petdex-custom` -- `powerpoint` -- `product-price-monitor` -- `session-librarian` -- `stratos-command-centre` -- `teams-meeting-pipeline` -- `telegram-cron-table-formatting` -- `tui-widgets` -- `weekly-review-planning` -- `xlsx` +- `airtable` — Airtable REST API via curl. Records CRUD, filters, upserts. +- `box` — Box manages cloud files, sharing, search, and metadata. +- `briefing-visualization` — Research text → HTML briefing + PPTX deck. +- `cover-letter-generation` — Draft, render, and deliver styled cover letters for Anthony's job applications. Covers content, format selection, PDF/DO +- `custom-pet-authoring` — Create custom animated pet spritesheets for Hermes' petdex system. Covers the pet format spec, Pillow-based spritesheet +- `decision-briefing-dashboards` — Use when advice needs an offline decision dashboard. +- `document-to-action-items` — Extract cited obligations, deadlines, tasks from documents. +- `docx` — Create, read, edit, template, and review Word .docx files. +- `google-workspace` — Gmail, Calendar, Drive, Docs, Sheets via gws CLI or Python. +- `maps` — Geocode, POIs, routes, timezones via OpenStreetMap/OSRM. +- `meeting-action-items` — Turn meeting notes into cited decisions, owners, tickets. +- `nano-pdf` — Edit text in existing PDFs via natural-language prompts. +- `notion` — Notion API + ntn CLI: pages, databases, markdown, Workers. +- `notion-database-dedup` — Clean duplicates from Notion databases with quality scoring. Fetch all pages with pagination, compare by URL/company+rol +- `obsidian-git-sync` — > +- `obsidian-git-sync` — > +- `ocr-and-documents` — Extract text from PDFs/scans (pymupdf, marker-pdf). +- `pdf` — Create, read, merge, fill, and secure PDF files. +- `petdex` — Install and select animated petdex mascots for Hermes. +- `petdex-custom` — Create custom Hermes petdex pets by composing AI-generated or imported character art into spec-correct spritesheets. Com +- `powerpoint` — Create, read, edit .pptx decks with python-pptx. +- `product-price-monitor` — Watch product, flight, or listing prices; alert on target. +- `session-librarian` — Organize sessions by prompt: find, rename, archive, prune. +- `stratos-command-centre` — Run, verify, extend, and diagnose the Stratos command-centre dashboard and its backend. +- `teams-meeting-pipeline` — Teams meeting summaries, job replay, Graph subscriptions. +- `telegram-cron-table-formatting` — How to deliver tables/structured data to Telegram from a Hermes cron job (deliver='telegram') or regular chat message so +- `tui-widgets` — Author live widget apps for the Hermes TUI dock. +- `weekly-review-planning` — Weekly reset: commitments, stalled work, next-week plan. +- `xlsx` — Create, read, edit Excel .xlsx workbooks and CSVs. ## Creative (18) -- `architecture-diagram` -- `ascii-art` -- `ascii-video` -- `baoyu-infographic` -- `claude-design` -- `comfyui` -- `creative-ideation` -- `design-md` -- `excalidraw` -- `humanizer` -- `hyperframes` -- `manim-video` -- `p5js` -- `popular-web-designs` -- `pretext` -- `sketch` -- `songwriting-and-ai-music` -- `touchdesigner-mcp` +- `architecture-diagram` — Dark-themed SVG architecture/cloud/infra diagrams as HTML. +- `ascii-art` — ASCII art: pyfiglet, cowsay, boxes, image-to-ascii. +- `ascii-video` — ASCII video: convert video/audio to colored ASCII MP4/GIF. +- `baoyu-infographic` — Infographics: 21 layouts x 21 styles (信息图, 可视化). +- `claude-design` — Design one-off HTML artifacts (landing, deck, prototype). +- `comfyui` — Generate images, video, and audio via diffusion workflows. +- `creative-ideation` — Generate ideas via named methods from creative practice. +- `design-md` — Author/validate/export Google's DESIGN.md token spec files. +- `excalidraw` — Hand-drawn Excalidraw JSON diagrams (arch, flow, seq). +- `humanizer` — Humanize text: strip AI-isms and add real voice. +- `hyperframes` — Render MP4/WebM videos from HTML compositions. +- `manim-video` — Manim CE animations: 3Blue1Brown math/algo videos. +- `p5js` — p5.js sketches: gen art, shaders, interactive, 3D. +- `popular-web-designs` — 54 real design systems (Stripe, Linear, Vercel) as HTML/CSS. +- `pretext` — Build creative browser demos with DOM-free text layout. +- `sketch` — Throwaway HTML mockups: 2-3 design variants to compare. +- `songwriting-and-ai-music` — Songwriting craft and Suno AI music prompts. +- `touchdesigner-mcp` — Control TouchDesigner via twozero MCP. ## Software Development (18) -- `code-wiki` -- `coding-router` -- `dogfood` -- `hermes-agent-skill-authoring` -- `in-repo-documentation` -- `inspecting-hermes-desktop-dom` -- `live-application-verification` -- `node-inspect-debugger` -- `plan` -- `python-debugpy` -- `requesting-code-review` -- `rest-graphql-debug` -- `self-hosted-personal-dashboard` -- `simplify-code` -- `spike` -- `subagent-driven-development` -- `systematic-debugging` -- `test-driven-development` +- `code-wiki` — Generate wiki docs + Mermaid diagrams for any codebase. +- `coding-router` — Routes substantial software-development tasks to OpenCode CLI by default and Codex CLI as fallback, while Hermes remains +- `dogfood` — Exploratory QA of web apps: find bugs, evidence, reports. +- `hermes-agent-skill-authoring` — Author in-repo SKILL.md files: frontmatter and structure. +- `in-repo-documentation` — Use for README and in-repository wiki documentation. +- `inspecting-hermes-desktop-dom` — Read the live Hermes desktop DOM/CSS over CDP. +- `live-application-verification` — Use when verifying a web change reaches the user's live app. +- `node-inspect-debugger` — Debug Node.js via --inspect + Chrome DevTools Protocol CLI. +- `plan` — Write a markdown plan to .hermes/plans/; no execution. +- `python-debugpy` — Debug Python: pdb REPL + debugpy remote (DAP). +- `requesting-code-review` — Pre-commit review: security scan, quality gates, auto-fix. +- `rest-graphql-debug` — Debug REST/GraphQL APIs: status codes, auth, schemas, repro. +- `self-hosted-personal-dashboard` — > +- `simplify-code` — Parallel 4-agent cleanup of recent code changes. +- `spike` — Throwaway experiments to validate an idea before build. +- `subagent-driven-development` — Execute plans via delegate_task subagents (2-stage review). +- `systematic-debugging` — 4-phase root cause debugging: understand bugs before fixing. +- `test-driven-development` — TDD: enforce RED-GREEN-REFACTOR, tests before code. ## Research (16) -- `arxiv` -- `blocked-page-recovery` -- `blogwatcher` -- `chat-export-parsing` -- `competitor-news-monitor` -- `grounded-citations` -- `llm-wiki` -- `local-dining-scene-monitor` -- `model-provider-comparison-research` -- `operations-wiki` -- `polymarket` -- `research-paper-writing` -- `scrapling` -- `searxng-search` -- `social-web-sentiment-research` -- `wikilink-audit` +- `arxiv` — Search arXiv papers by keyword, author, category, or ID. +- `blocked-page-recovery` — Recover blocked/paywalled/WAF'd pages via fallbacks. +- `blogwatcher` — Monitor blogs and RSS/Atom feeds via blogwatcher-cli tool. +- `chat-export-parsing` — Parse chat/messaging-platform export files (Telegram MTProto message.json, WhatsApp exports, Slack/Discord JSON) into re +- `competitor-news-monitor` — Watch named companies for material news; cited digests. +- `grounded-citations` — Ground answers and documents in cited, verifiable sources. +- `llm-wiki` — Karpathy's LLM Wiki: build/query interlinked markdown KB. +- `local-dining-scene-monitor` — Monitor city restaurant openings weekly with dedup. +- `model-provider-comparison-research` — Use when comparing models inside an agent harness. +- `operations-wiki` — Operational wiki for personal AI agents, self-hosted infrastructure, model routing and automation. +- `polymarket` — Query Polymarket: markets, prices, orderbooks, history. +- `research-paper-writing` — Write ML papers for NeurIPS/ICML/ICLR: design→submit. +- `scrapling` — Scrape sites with stealth browsing and Cloudflare bypass. +- `searxng-search` — Free keyless meta-search aggregating 70+ engines. +- `social-web-sentiment-research` — Use for current social/web sentiment scans. +- `wikilink-audit` — Scan and fix broken [[wikilinks]] in an Obsidian vault or markdown knowledge base. Finds orphans, broken links, and temp ## Email (16) -- `agent-email-patterns` -- `agentmail` -- `agentmail-check-email` -- `agentmail-cli` -- `agentmail-manage-inboxes` -- `agentmail-mcp` -- `agentmail-rest-fallback` -- `agentmail-sdk` -- `agentmail-send-email` -- `agentmail-toolkit` -- `cron-email-briefing` -- `email-for-ai-agents` -- `email-inbox-triage` -- `gmail-readonly-fetch` -- `himalaya` -- `realtime-email-monitor` +- `agent-email-patterns` — Architecture patterns for AI agents that communicate over email -- why agents need dedicated inboxes rather than human e +- `agentmail` — Give the agent its own inbox: send and receive email. +- `agentmail-check-email` — Read, search, summarize, and triage AgentMail inboxes through the connected MCP server. Use for ANY request to look at, +- `agentmail-cli` — Operate AgentMail from a shell with the official CLI. Use when the user wants commands for listing or creating inboxes, +- `agentmail-manage-inboxes` — Create, list, inspect, update, or delete AgentMail inboxes through the connected MCP server. Use for ANY inbox lifecycle +- `agentmail-mcp` — Configure or troubleshoot the hosted AgentMail MCP server for Codex, Claude Code, Cursor, or another Streamable HTTP MCP +- `agentmail-rest-fallback` — AgentMail REST API operations for reading messages and downloading attachments when MCP tools are unavailable. Covers th +- `agentmail-sdk` — Deprecated alias of the agentmail skill, kept so existing installs and pinned URLs keep resolving. Prefer installing age +- `agentmail-send-email` — Draft, send, reply to, or forward email through the connected AgentMail MCP server. Use for ANY request to send, reply t +- `agentmail-toolkit` — Add AgentMail tools to agent frameworks with the TypeScript or Python AgentMail Toolkit. Use for Vercel AI SDK, LangChai +- `cron-email-briefing` — Produce structured email briefings from a cron job using IMAP (himalaya CLI). Covers the fallback workflow when no pre-i +- `email-for-ai-agents` — Deprecated alias of the agent-email-patterns skill, kept so existing installs and pinned URLs keep resolving. Prefer ins +- `email-inbox-triage` — Triage an inbox: prioritize threads, draft replies safely. +- `gmail-readonly-fetch` — Read-only email fetching from large Gmail inboxes via himalaya CLI or Python imaplib — cron-safe, paginated, with LLM ha +- `himalaya` — Himalaya CLI: IMAP/SMTP email from terminal. +- `realtime-email-monitor` — >- ## Mlops (10) -- `chroma` -- `clip` -- `evaluation` -- `evaluation` -- `huggingface-hub` -- `inference` -- `inference` -- `models` -- `models` -- `qdrant` +- `chroma` — Embedding database for RAG and semantic search. +- `clip` — Zero-shot image classification and image-text search. +- `evaluation` — W&B: log ML experiments, sweeps, model registry, dashboards. +- `evaluation` — lm-eval-harness: benchmark LLMs (MMLU, GSM8K, etc.). +- `huggingface-hub` — HuggingFace hf CLI: search/download/upload models, datasets. +- `inference` — llama.cpp local GGUF inference + HF Hub model discovery. +- `inference` — vLLM: high-throughput LLM serving, OpenAI API, quantization. +- `models` — AudioCraft: MusicGen text-to-music, AudioGen text-to-sound. +- `models` — SAM: zero-shot image segmentation via points, boxes, masks. +- `qdrant` — Vector search engine for production RAG systems. ## Github (7) -- `codebase-inspection` -- `github-auth` -- `github-code-review` -- `github-issue-to-pr` -- `github-issues` -- `github-pr-workflow` -- `github-repo-management` +- `codebase-inspection` — Inspect codebases w/ pygount: LOC, languages, ratios. +- `github-auth` — GitHub auth setup: HTTPS tokens, SSH keys, gh CLI login. +- `github-code-review` — Review PRs: diffs, inline comments via gh or REST. +- `github-issue-to-pr` — Carry a GitHub issue to a verified PR with honest CI state. +- `github-issues` — Create, triage, label, assign GitHub issues via gh or REST. +- `github-pr-workflow` — GitHub PR lifecycle: branch, commit, open, CI, merge. +- `github-repo-management` — Clone/create/fork repos; manage remotes, releases. ## Apple (4) -- `apple-notes` -- `apple-reminders` -- `findmy` -- `imessage` +- `apple-notes` — Manage Apple Notes via memo CLI: create, search, edit. +- `apple-reminders` — Apple Reminders via remindctl: add, list, complete. +- `findmy` — Track Apple devices/AirTags via FindMy.app on macOS. +- `imessage` — Send and receive iMessages/SMS via the imsg CLI on macOS. ## Frontend (4) -- `design-alignment` -- `impeccable` -- `landing-dashboard-reference` -- `pixel-perfect-iteration` +- `design-alignment` — >- +- `impeccable` — Use when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, +- `landing-dashboard-reference` — > +- `pixel-perfect-iteration` — >- ## Media (4) -- `gif-search` -- `heartmula` -- `songsee` -- `youtube-content` +- `gif-search` — Search/download GIFs from Tenor via curl + jq. +- `heartmula` — HeartMuLa: Suno-like song generation from lyrics + tags. +- `songsee` — Audio spectrograms/features (mel, chroma, MFCC) via CLI. +- `youtube-content` — YouTube transcripts to summaries, threads, blogs. ## Note Taking (3) -- `multi-agent-estate-knowledge` -- `obsidian-vault-from-git` -- `obsidian-vault-manager` +- `multi-agent-estate-knowledge` — Use for shared docs across multiple agent instances. +- `obsidian-vault-from-git` — Clone, initialise, or integrate a pre-existing Obsidian vault stored on Gitea or GitHub. Covers credential retrieval, gi +- `obsidian-vault-manager` — Manage Obsidian vaults — vault discovery, git sync, .obsidian/ state files, plugin config, rename safety, and troublesho ## Web Development (2) -- `interactive-html-pages` -- `page-agent` +- `interactive-html-pages` — Build self-contained interactive HTML pages served from a local HTTP server. Covers single-file pages, fetching JSON fro +- `page-agent` — Embed an in-page natural-language GUI copilot in web apps. ## Smart Home (2) -- `openhue` -- `sonos` +- `openhue` — Control Philips Hue lights, scenes, rooms via OpenHue CLI. +- `sonos` — > ## Mcp (2) -- `fastmcp` -- `mcporter` +- `fastmcp` — Build, test, and deploy Python MCP servers. +- `mcporter` — List, auth, and call MCP servers/tools from the terminal. -## Uncategorized (48) +## Uncategorized (49) -- `chromadb` -- `chromadb-preflight` -- `chromadb-skills-rag` -- `clean-architecture` -- `clean-code` -- `cloudflare-tunnel-ops` -- `cookie-jar-import` -- `ddia-systems` +- `chromadb` — >- +- `chromadb-preflight` — > +- `chromadb-skills-rag` — > +- `clean-architecture` — Structure software around the Dependency Rule: source code dependencies point inward from frameworks to use cases to ent +- `clean-code` — Write readable, maintainable code through disciplined naming, small functions, and clean error handling. Use when the us +- `cloudflare-tunnel-ops` — Operate Cloudflare Tunnels to expose internal services through public domains, bypassing network restrictions (e.g. work +- `cookie-jar-import` — Import browser cookies into Camofox for auth sessions. +- `ddia-systems` — Design data systems by understanding storage engines, replication, partitioning, transactions, and consistency models. U - `devops` -- `devops-homelab-architecture-live-probe` -- `devops-proxmox-operations` -- `devops-service-management` -- `devops-tailscale-web-routing` -- `devops-telegram-bot-api-self-hosted` -- `domain-driven-design` -- `email-himalaya` -- `groktocrawl-deployment` -- `hermes-api-vault` -- `hermes-desktop-plugins` -- `hermes-gateway-troubleshooting` -- `hermes-mcp-troubleshooting` -- `hermes-themes` -- `interactive-reference-pages` -- `ios-hig-design` -- `job-hunting` -- `job-hunting-assistance` -- `job-search-automation` -- `job-tracker-enrichment` +- `devops-homelab-architecture-live-probe` — Build an accurate homelab architecture diagram by probing live infrastructure first, especially Proxmox VE and Tailscale +- `devops-proxmox-operations` — Use when operating Proxmox VE hosts, LXCs, VMs, storage, API tokens, noVNC consoles, DNS/hosts overrides, offline disk e +- `devops-service-management` — Umbrella for miscellaneous service operations skills — event logistics automation, Tailscale Serve, virtual desktop/X11, +- `devops-tailscale-web-routing` — Use when deploying or repairing self-hosted web apps behind Tailscale Serve/Funnel, especially path-prefix routing, stat +- `devops-telegram-bot-api-self-hosted` — | +- `domain-driven-design` — Model software around the business domain using bounded contexts, aggregates, and ubiquitous language. Use when the user +- `email-himalaya` — Himalaya CLI: IMAP/SMTP email from terminal. Covers configuration, cron automation, urgency assessment, and Gmail quirks +- `groktocrawl-deployment` — Self-hosted deployment guide for GroktoCrawl as a Firecrawl v2 replacement — resource requirements, port configuration, +- `hermes-api-vault` — Manage Hermes plugin/agent API credentials stored in a Notion vault — query the vault, map entries to ~/.hermes/.env var +- `hermes-desktop-plugins` — Write desktop app plugins that add UI panes and commands. +- `hermes-gateway-troubleshooting` — Gateway process management, MCP fleet debugging, post-migration verification, and config hardening for Hermes Agent LXC/ +- `hermes-mcp-troubleshooting` — Diagnose and fix Hermes Agent MCP server connection issues, config corruption, startup banner false negatives, and relat +- `hermes-themes` — Author a Hermes color theme that skins every surface. +- `homelab-migration-planning` — Plan homelab service migrations across Proxmox hosts. +- `interactive-reference-pages` — Build clean, mobile-first, interactive HTML reference and checklist pages with proper dark-theme contrast, localStorage +- `ios-hig-design` — Design native iOS interfaces following Apple Human Interface Guidelines. Use when the user mentions "iPhone app", "iPad +- `job-hunting` — Comprehensive career transition coaching — research the user's background, discover opportunities, automate daily job-ra +- `job-hunting-assistance` — End-to-end job hunting support for a professional: research the user's background from available sources, locate existin +- `job-search-automation` — Operate, debug, and extend an autonomous job-board scraping pipeline (cron -> web_search_plus/web_extract_plus -> Camofo +- `job-tracker-enrichment` — Maintain and enrich Anthony's Notion "Job Opportunities 2026" Perth marketing/communications job tracker. Covers the bro - `litprog` -- `markdown-to-anywhere` -- `officecli` -- `pragmatic-programmer` -- `proxmox-operations` -- `rclone-mount-ops` -- `refactoring-patterns` -- `refactoring-ui` -- `restaurant-menu-extraction` -- `software-design-philosophy` -- `system-design` -- `tailscale-serve-ops` -- `tech-ai-newsletter-digest` -- `ux-heuristics` -- `video-translation-dubbing` -- `web-design-reviewer` -- `web-typography` -- `weekly-review` -- `working-with-legacy-code` -- `yuanbao` +- `markdown-to-anywhere` — On-demand cross-posting service: Anthony tells me to post a .md file to a platform, I format it appropriately and delive +- `officecli` — Create, analyze, proofread, and modify Office documents (.docx, .xlsx, .pptx) using the officecli CLI tool. Use when the +- `pragmatic-programmer` — Apply meta-principles of software craftsmanship: DRY, orthogonality, tracer bullets, and design by contract. Use when th +- `proxmox-operations` — Use when operating Proxmox VE hosts, LXCs, VMs, storage, API tokens, noVNC consoles, DNS/hosts overrides, offline disk e +- `rclone-mount-ops` — Fix rclone FUSE mount recursion and CPU issues on PVE. +- `refactoring-patterns` — Apply named refactoring transformations to improve code structure without changing behavior. Use when the user mentions +- `refactoring-ui` — Audit and fix visual hierarchy, spacing, color, and depth in web UIs. Use when the user mentions "my UI looks off" (or a +- `restaurant-menu-extraction` — Extract structured menu data (items, prices, ratings, delivery info) from food delivery sites like Uber Eats using Camof +- `software-design-philosophy` — Manage software complexity through deep modules, information hiding, and strategic programming. Use when the user mentio +- `system-design` — Design scalable distributed systems using structured approaches for load balancing, caching, database scaling, and messa +- `tailscale-serve-ops` — Operate Tailscale Serve to expose local web content through the tailnet. Covers route setup, backend management, path-pr +- `tech-ai-newsletter-digest` — Process and analyze tech/AI newsletter emails from Anthony's inbox using `himalaya` CLI, synthesizing key stories into s +- `ux-heuristics` — Evaluate and improve interface usability using heuristic analysis. Use when the user mentions "usability audit", "users +- `video-translation-dubbing` — Translate and dub video audio to another language. +- `web-design-reviewer` — This skill enables visual inspection of websites running locally or remotely to identify and fix design issues. Triggers +- `web-typography` — Select, pair, and implement typefaces for web projects. Use when the user mentions "font pairing", "which typeface", "li +- `weekly-review` — Sunday 18:00 AWST cron that compiles a weekly review: job application stats from Notion, cron health from SQLite executi +- `working-with-legacy-code` — Safely change and test untested codebases using Feathers'' "Working Effectively with Legacy Code". Use when the user men +- `yuanbao` — Yuanbao (元宝) groups: @mention users, query info/members. ## Conduct (1) -- `simple-directives-execution` +- `simple-directives-execution` — Execute now when told 'just do X' — no investigation. ## Cron (1) -- `cron-digest-formatting` +- `cron-digest-formatting` — Use when formatting cron Telegram news digests for Anthony. ## Data Science (1) -- `jupyter-live-kernel` +- `jupyter-live-kernel` — Iterative Python via live Jupyter kernel (hamelnb). ## Finance (1) -- `3-statement-model` +- `3-statement-model` — Build integrated IS/BS/CF financial workbooks in Excel. ## Job Hunting (1) -- `seek-extraction-patterns` +- `seek-extraction-patterns` — Extract salary, closing dates, and job details from SEEK (au.seek.com) listings at scale. Use when enriching a batch of ## Omniroute (1) -- `omniroute-skills` +- `omniroute-skills` — Interact with OmniRoute's Skills framework — list, install, enable, execute, and debug skills via REST API and MCP tools ## Social Media (1) -- `xurl` +- `xurl` — X/Twitter via xurl CLI: raw post search, posting, DM, media. ## Web (1) -- `wiki-web-hosting` +- `wiki-web-hosting` — Publish Markdown wikis as Quartz sites over Tailscale. ## Related - [[systems/hermes-agent]] diff --git a/wiki-maintain.sh b/wiki-maintain.sh deleted file mode 100644 index 5237985..0000000 --- a/wiki-maintain.sh +++ /dev/null @@ -1,134 +0,0 @@ -#!/bin/bash -# wiki-maintain.sh — General Agent Estate Wiki freshness maintenance. -# Regenerates machine-derivable pages from live state, audits every page for -# staleness, rebuilds the Quartz site, and deploys. Run on a schedule so the -# wiki never silently drifts from reality. -# -# Usage: ./wiki-maintain.sh [--no-build] -# --no-build regenerate content + audit but skip quartz build/deploy -set -euo pipefail - -WIKI="/home/hermes/workspace/agent-estate-wiki" -QUARTZ="/home/hermes/workspace/quartz-temp" -SKILLS="/home/hermes/.hermes/skills" -STALE_DAYS=21 -NO_BUILD=false -[[ "${1:-}" == "--no-build" ]] && NO_BUILD=true - -mkdir -p "$WIKI/raw/stocktake" -REPORT="$WIKI/raw/stocktake/freshness-$(date +%Y%m%d).txt" - -echo "[$(date -Is)] Agent Estate Wiki maintenance start" -echo " wiki=${WIKI}" -echo " stale-threshold=${STALE_DAYS}d" - -# ── 1. Regenerate skills-index from live skill tree ──────────────────────── -python3 - "$SKILLS" "$WIKI/systems/skills-index.md" <<'PY' -import sys, re -from collections import defaultdict -from pathlib import Path -from datetime import date -skills_root = Path(sys.argv[1]); out = Path(sys.argv[2]) -files = sorted(skills_root.rglob('SKILL.md')) -skills = defaultdict(list) -for f in files: - rel = f.relative_to(skills_root); parts = rel.parts - if len(parts) >= 3: cat, name = parts[0], parts[1] - elif len(parts) == 2: cat, name = 'uncategorized', parts[0] - else: continue - desc = '' - try: - m = re.search(r'^description:\s*(.+)$', f.read_text(errors='ignore')[:2000], re.M) - if m: desc = m.group(1).strip().strip('"').strip("'")[:120] - except Exception: pass - skills[cat].append((name, desc)) -total = sum(len(v) for v in skills.values()) -L = ['---','title: Installed Skills','type: system','status: active', - 'created: 2026-07-22', f'updated: {date.today().isoformat()}', - f'verified_on: {date.today().isoformat()}','confidence: high', - 'tags: [skills, hermes]','sources: []','---','','# Installed Skills','', - f'**Total installed: {total} skills** in `~/.hermes/skills/`.','', - 'This page is auto-regenerated from the live skill inventory. Do not hand-edit.','', - '## Stock-take notes','- Category = directory structure under `~/.hermes/skills/` (`category/skill/SKILL.md`).', - '- Skills directly under `~/.hermes/skills/` group under `uncategorized`.',''] -priority = ['core-hermes','autonomous-ai-agents','hermes','devops','productivity','creative', - 'software-development','research','email','mlops','github','apple','frontend','media', - 'note-taking','web-development','smart-home','mcp','uncategorized'] -def order(c): - try: return priority.index(c) - except ValueError: return 100+len(priority) -for cat, items in sorted(skills.items(), key=lambda x:(order(x[0]),-len(x[1]))): - L.append(f'## {cat.replace("-"," ").title()} ({len(items)})'); L.append('') - for name, desc in sorted(items): - L.append(f'- `{name}` — {desc}' if desc else f'- `{name}`') - L.append('') -L += ['## Related','- [[systems/hermes-agent]]','- [[systems/omniroute]]',''] -out.write_text('\n'.join(L)) -print(f"[1/3] skills: {total} across {len(skills)} categories -> {out}") -PY - -# ── 2. Audit every page for staleness ──────────────────────────────────────── -python3 - "$WIKI" "$REPORT" "$STALE_DAYS" <<'PY' -import sys, re -from pathlib import Path -from datetime import date -wiki = Path(sys.argv[1]); report = Path(sys.argv[2]); threshold = int(sys.argv[3]) -today = date.today() -stale, fresh, nodate = [], [], [] -for f in sorted(wiki.rglob('*.md')): - rel = f.relative_to(wiki) - if str(rel).startswith('raw/'): continue - content = f.read_text(errors='ignore') - upd = re.search(r'^updated:\s*(\S+)', content[:800], re.M) - if not upd: - nodate.append(str(rel)); continue - try: d = date.fromisoformat(upd.group(1)) - except ValueError: nodate.append(str(rel)); continue - age = (today - d).days - (stale if age > threshold else fresh).append((str(rel), age, upd.group(1))) -stale.sort(key=lambda x:-x[1]) -lines = [f"# Wiki freshness audit — {today.isoformat()}", - f"Threshold: >{threshold} days since `updated`", - f"", f"## STALE ({len(stale)})", ""] -for rel, age, d in stale: - lines.append(f"- [{age:>3}d] {rel} (updated {d})") -lines += [f"", f"## FRESH ({len(fresh)})", ""] -for rel, age, d in fresh: - lines.append(f"- [{age:>3}d] {rel}") -lines += [f"", f"## NO updated DATE ({len(nodate)})", ""] -for rel in nodate: - lines.append(f"- {rel}") -lines += ["", f"TOTAL: {len(stale)} stale, {len(fresh)} fresh, {len(nodate)} no-date of {len(stale)+len(fresh)+len(nodate)} pages"] -report.write_text('\n'.join(lines)) -print(f"[2/3] audit: {len(stale)} stale (>={threshold}d), {len(fresh)} fresh, {len(nodate)} no-date -> {report}") -PY - -# ── 3. Sync content, build, deploy ───────────────────────────────────────── -if $NO_BUILD; then - echo "[3/3] --no-build: content + audit done, skipping quartz build" - exit 0 -fi -rm -rf "$QUARTZ/content" "$QUARTZ/public" -mkdir -p "$QUARTZ/content" -python3 - "$WIKI" "$QUARTZ/content" <<'PY' -import shutil, sys -from pathlib import Path -src = Path(sys.argv[1]); dst = Path(sys.argv[2]) -skip = {'.git','public','node_modules','quartz-site','serve.py','.gitignore', - 'package.json','package-lock.json','.codewiki-state.json','regenerate-skills-index.sh', - 'wiki-maintain.sh','raw'} -for item in src.iterdir(): - if item.name in skip: continue - if item.is_dir(): shutil.copytree(item, dst/item.name, dirs_exist_ok=True) - elif item.suffix == '.md': shutil.copy2(item, dst/item.name) -PY -cd "$QUARTZ" -npx quartz build >/tmp/quartz-build.log 2>&1 || { echo "Quartz build FAILED"; tail -20 /tmp/quartz-build.log; exit 1; } -rm -rf "$WIKI/public" -mkdir -p "$WIKI/public" -cp -a "$QUARTZ/public/." "$WIKI/public/" -echo "[3/3] build+deploy: $(find "$WIKI/public" -name '*.html' | wc -l) html files" -echo "[$(date -Is)] Wiki maintenance complete" -echo "" -echo "=== Freshness summary ===" -grep -E '^TOTAL:' "$REPORT" || true