Phase 1 — fix stale state after strong migration (Phase 1+2, 2026-07-05)
- README: corrected IPs (jellyfin 206→246, arriman 132→245, etc.),
added missing containers (128 trmnl, 129 house, 133 seanime, 134 romm,
124 authentik), updated last-refreshed date, added strong host context
- containers/101-jellyfin.md: IP 206→246, host hubris→strong, mount
/mnt/library→/mnt/media_local, GPU 760M→680M+RX7600, privilege→priv
- containers/118-elementsynapse.md: IP 239→242, added Host: strong
- containers/122-arriman.md: IP 132→245, mount→/mnt/media_local, added Host
- containers/129-house.md: IP 212→244, added Host: strong
- containers/130-grimmory.md: IP 213→247, mount→/mnt/media_local, added Host
- containers/121-caddy.md: fixed site list (books→grimmory, removed auth→VPS,
added house, roms, teddy, trmnl)
- hosts/strong.md: updated At-a-glance to reflect 7 LXCs hosted
- containers/123-claudio-bot.md, 127-mule-photos-new.md: archived to
containers/archive/ (were destroyed LXCs with living pages)
- inventory.yaml: verified correct — no changes needed
Phase 2 — structural cleanup
- infrastructure/index.md: one-page overview of all cross-cutting systems
- runbooks/: moved runbook-budget-from-csv.md and runbook-dpkg-interrupted.md
from operations/ with YAML frontmatter added
- plans/done/: moved 4 completed plans out of active view; updated index
- vms/index.md: added VM index page
Phase 3 — navigation & discoverability
- GLOSSARY.md: term definitions (Authentik, Caddy, LXC, VAAPI, etc.)
- README: added table of contents, links to glossary + infrastructure index
- investigations/: archived 2 resolved cases (crash-loop, authentik-migration)
to investigations/archive/; updated index with active vs archived sections
Phase 4 — ongoing discipline
- CONTRIBUTING.md: documented same-session update rule with explicit checklist
- README: replaced full LXC table with summary + link to containers/index.md
(single source of truth; de-duplication)
4.2 KiB
123 — claudio-bot (DEPRECATED — destroyed 2026-06-04)
This LXC was destroyed on 2026-06-04. Replaced by Hermes Agent on mac-mini. Monitoring migrated to
homelab-hardware-healthskill + 15-min Hermes cronjob. Reposdtoro/claudio-botanddtoro/claudio-monitorarchived (read-only) on Gitea. See deprecation plan for full details.
Matrix-resident control plane. Bot account @claudio:avispero joined to a private room; accepts slash commands and natural language; relays infra notifications.
At a glance
- Hostname:
claudio-bot - IP:
192.168.8.230 - Privilege: unprivileged
- Resources: 1 core / 512 MiB RAM / 8 GiB rootfs
- Mounts: none from
/mnt/library - Public hostname: none
Stack
Repo dtoro/claudio-bot, checkout at /opt/claudio-bot, systemd unit claudio-bot.service. Connects to Matrix at http://192.168.8.239:8008 (direct LAN to synapse (118), avoids hairpin-NAT TLS issue on matrix.hubris.network).
Room: !dEUVJArVKPorxHHJZK:avispero (invite-only, @dtoro:avispero allowed).
Configuration
Secrets at /etc/claudio-bot/ (mode 600):
config.yamlmatrix.tokenanthropic.keylmstudio.keyipc.token
Deploy git creds at /etc/claudio-deploy/git-credentials.
LLM backend (pluggable)
llm.backend in config.yaml:
anthropic— Claude API viaanthropic.keylmstudio— OpenAI-compat HTTP vialmstudio.key(bearer)
Currently set to lmstudio → google/gemma-4-e4b on the Mac mini at 192.168.8.174:1234 (since 2026-04-25). Switch back with backend: + systemctl restart claudio-bot. Original config saved at /etc/claudio-bot/config.yaml.bak. The LM Studio agent in bot_core/lmstudio.py translates Anthropic → OpenAI tool definitions.
IPC
http://192.168.8.230:9090/{notify,propose,status}. Header X-Bot-Token must match /etc/claudio-bot/ipc.token. Used by:
- claudio-monitor on hubris for edge-triggered alerts (token in
/etc/claudio-monitor/bot.token) - The (currently disabled) restic backup wrapper (token in
/etc/restic/bot.token)
Token files at the source side must hold the same value as
/etc/claudio-bot/ipc.token— rotate together.
Plugins
Module under plugins/<name>.py exposing a Plugin class; add <name> to plugins: in config.yaml. Plugins can register slash commands, Claude tools, and on_notify / on_proposal_response hooks.
Active plugins:
system—ping,help,status,list_pluginsbackup— ingests/notifyfrom the backup wrapper (currently silent — backups disabled)monitor—/monitor status,/monitor history [N],/monitor clear <key>. Tools:get_alerts,get_monitor_historyfor NL queries via Claude.
Auto-deploy
Push to dtoro/claudio-bot → gitea webhook → http://192.168.8.230:9797/deploy → pull + pip install + restart. Same shape as caddy-conf.
app.ini ALLOWED_HOST_LIST on gitea includes 192.168.8.230.
Related
Changelog
2026-06-04 — LXC destroyed; replaced by Hermes Agent
LXC 123 destroyed via pct destroy 123 --purge. Bot service stopped, systemd
units disabled. dtoro/claudio-bot and dtoro/claudio-monitor archived on
Gitea. Monitoring replaced by Hermes homelab-health-watchdog cron job.
@claudio:avispero Matrix account decommissioned.
2026-04-28 — wiki entry created
Initial documentation.
2026-04-25 — LLM backend switched to LM Studio
backend: lmstudio → google/gemma-4-e4b on the Mac mini. Anthropic key still present so the swap is reversible by flipping the config field.
2026-04-21 — monitor plugin added
Receives events from claudio-monitor. Slash commands + tools registered. See dtoro/claudio-bot commit e56da25.
2026-04-20 — claudio-bot deployed
LXC 123 provisioned. Repo, systemd unit, Matrix wiring, system + backup plugins, IPC server.