Files
oikos/knowledge/wiki/containers/archive/123-claudio-bot.md
dtoro 8a6422bd7d docs: move narrative wiki under knowledge/wiki/ (phase 3)
Problem: node and cross-cutting narratives lived at the repo root
(containers/, vms/, infrastructure/, host .md files), interleaved with the
machine-readable substrate.

Change:
- Move containers/ -> knowledge/wiki/containers/, vms/ -> knowledge/wiki/vms/,
  infrastructure/ -> knowledge/wiki/infrastructure/, hosts/{hubris,strong}.md ->
  knowledge/wiki/hosts/, infrastructure/references/ -> knowledge/sources/references/,
  GLOSSARY.md -> knowledge/GLOSSARY.md.
- Add knowledge/{index.md,log.md,sources/index.md} scaffolding.
- Rewrite all relative links repo-wide via a path-resolving mapper (inbound +
  outbound + between-moved-files), including .hermes/, runbooks, operations,
  investigations, plans, README, AGENTS.
- Repoint inventory.yaml doc_page fields and regenerate hosts/*.yaml (which
  embed doc_page); update oikos/gen-topology.py output path, candidate doc
  paths, and footer links; update code-comment doc paths.

Substrate untouched in place: inventory.yaml, hosts/*.yaml (regenerated,
idempotent), oikos/ code, mcp/, secrets/, bin/.

Verification:
- Logical broken-link set identical to pre-move baseline (net 128 -> 127; the
  topology regen fixed one, introduced none). Remaining are pre-existing refs
  to destroyed/archived nodes, out of scope for this move.
- gen-topology.py --check exit 0 (in sync); cards carry knowledge/wiki/ doc paths.
- build_host_files.py idempotent; all inventory doc_page targets resolve.
- MCP contract verified: get_page/search_docs/get_changelog resolve moved pages.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 14:35:23 +02:00

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-health skill + 15-min Hermes cronjob. Repos dtoro/claudio-bot and dtoro/claudio-monitor archived (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.yaml
  • matrix.token
  • anthropic.key
  • lmstudio.key
  • ipc.token

Deploy git creds at /etc/claudio-deploy/git-credentials.

LLM backend (pluggable)

llm.backend in config.yaml:

  • anthropic — Claude API via anthropic.key
  • lmstudio — OpenAI-compat HTTP via lmstudio.key (bearer)

Currently set to lmstudiogoogle/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:

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:

  • systemping, help, status, list_plugins
  • backup — ingests /notify from the backup wrapper (currently silent — backups disabled)
  • monitor/monitor status, /monitor history [N], /monitor clear <key>. Tools: get_alerts, get_monitor_history for 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.

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: lmstudiogoogle/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.