Reconcile the HERMES_HOME path: /home/clawdie/.hermes is authoritative for first validation; /home/clawdie/clawdie-ai (an earlier target) is the old orphaned runtime and off-limits. Align agents here before install. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
11 KiB
Host & Agent Matrix (shared, fill-as-you-go)
A living inventory of who runs where and what each host actually is. Any agent on any host fills in its own row. Source of truth for facts is the probe — not memory.
How to fill your row
cd ~/layered-soul python3 scripts/verify_facts_probe.py --os --hardware --storage --network --textCopy the verified values into the tables below, set
Probedto today's UTC date, and commit. Never guess hardware, OS, or IPs — paste what the probe reports. On FreeBSD the probe synthesizes an OS-specific command map; trust its output over Linux habits.Disk before action: before installing a toolchain or starting a build, check real free space (
df -h /, or the probe's--storage) — never estimate. Keep the Disk (free) column current and flag any host past ~85%. See Disk discipline below.
1. Agent placement (who runs where)
| Agent | Host | OS / Isolation | Harness | Role | Bot / channel | Status |
|---|---|---|---|---|---|---|
| Hermes | debby | Debian 13 / Docker | Hermes Agent (upstream) | Orchestrator, soul backup | @hermes_samob_bot (Telegram) | live |
| Zot | debby | Debian 13 / Docker | Zot RPC | Coding, media workflows | @zot_samob_bot (Telegram) | live |
| Claude | domedog | Ubuntu 24.04 / Docker | Claude Code | Verification, review | — (CLI) | live |
| Mevy | osa | FreeBSD 15 / jail | Hermes Agent | Operator bot (current) | Mevy (Telegram) | live |
| Codex | osa | FreeBSD 15 / jail | Codex CLI | ISO builds, validation | — | installed (probe) |
| hermes-osa | osa | FreeBSD 15 / host service first | Hermes Agent (FreeBSD) | Native FreeBSD Hermes | (planned) | planned; not installed |
Notes:
- Provider per agent (DeepSeek / OpenRouter / Z.AI / local) — fill in the per-host table.
- One Telegram token per running service. Never share a token across instances.
2. Host hardware & facts (one row per host)
| Host | Tailscale IP | OS / Kernel | Virt | CPU | vCPU | RAM | Swap | Disk (free) | GPU | Probed | By |
|---|---|---|---|---|---|---|---|---|---|---|---|
| domedog | 100.103.255.41 | Ubuntu 24.04.4 / 6.8.0-117 | KVM | AMD EPYC 7543P (32-core host) | 2 | 7.8 GiB | 2.0 GiB | 100 GB QEMU (51G free) | none (headless) | 2026-06-17 | Claude |
| debby | 100.66.193.10 | Debian 13 / 6.12.90+deb13.1-amd64 | bare metal | AMD Ryzen 7 5700U (8-core) | 16 | 15 GiB | 15 GiB | nvme0n1p2 453G (23G free) | Radeon Graphics (iGPU) | 2026-06-17 | Hermes |
| osa | 100.72.229.63 | FreeBSD 15.0-RELEASE-p10 / GENERIC | not reported by probe | Intel Core Processor (Haswell, no TSX) | 6 | 11 GiB | not reported by probe | ZFS pool: zroot (23.4G free) | not reported by probe | 2026-06-17 | Pi |
Disk discipline (check, don't guess)
Disk is a first-class fact, same as OS or CPU — measure it before you act, don't estimate.
- Before installing a toolchain or starting a build, run
df -h /(Linux) orzfs list/df -h(FreeBSD), or the probe's--storage. Confirm the headroom is really there. - Keep the
Disk (free)column above current when you add or remove anything large. - Flag any host past ~85% used. Reference footprints to budget with: Go SDK ≈ 290 MB,
Rust toolchain (
~/.rustup+~/.cargo) ≈ 1.8 GB, a Node version ≈ 150 MB; build/module caches grow on top of these. - Standing watch:
debbyruns ~95% full (23 GB free). Treat new installs/builds there as a deliberate decision, not a default — prefer the host with real headroom.
This is the survivability principle applied to storage: a host that silently fills up is a host that fails. What you guess will be wrong; what you probe will be right.
3. Per-host detail (expand as needed)
domedog (Claude / verification) — probed 2026-06-17 by Claude
- Identity: hostname
domedog.pro, Tailscale100.103.255.41 - OS: Ubuntu 24.04.4 LTS, kernel
6.8.0-117-generic, x86_64, KVM guest - CPU: AMD EPYC 7543P 32-Core (2 vCPU exposed to guest)
- Memory: 7.8 GiB RAM, 2.0 GiB swap
- Storage:
/dev/sda196 GB ext4 root, 51 GB free (QEMU HARDDISK). No ZFS. - GPU: none (headless VM)
- Uptime at probe: ~3.5 weeks
- Role here: Claude Code — verification & review lane. No Telegram bot.
debby (Hermes orchestrator + Zot) — probed 2026-06-17 by Hermes
- Identity: hostname
debby, Tailscale100.66.193.10 - OS: Debian 13 (Trixie), kernel
6.12.90+deb13.1-amd64, bare metal (KDE Plasma desktop) - CPU: AMD Ryzen 7 5700U with Radeon Graphics, 8 physical cores, 16 threads
- Memory: 15 GiB RAM, 15 GiB swap
- Storage:
/dev/nvme0n1p2453 GB ext4 root, 23 GB free (95% full). No ZFS. - GPU: AMD Radeon Graphics (integrated, Lucienne)
- Containers: Docker 29.5.3 installed (daemon not currently running)
- Hermes Agent: v0.16.0 (upstream f9c8d95e), DeepSeek v4 Pro primary provider, OpenRouter for vision/fallback, Z.AI/GLM available
- Zot RPC: Go binary at
~/.local/bin/zot, GLM-5.1 model - Telegram: @hermes_samob_bot + @zot_samob_bot in "My Debby" group
- Layered soul: commit
817624c, 6 curated memories, 9 cross-harness skills
osa (FreeBSD: Mevy + Codex + hermes-osa) — probed 2026-06-17 by Mevy
- Identity: hostname
osa.smilepowered.org, Tailscale100.72.229.63 - OS: FreeBSD
15.0-RELEASE-p10, kernelFreeBSD osa.smilepowered.org 15.0-RELEASE-p10 FreeBSD 15.0-RELEASE-p10 releng/15.0-n281064-98258a339269 GENERIC amd64 - Virt: not reported by probe
- CPU: Intel Core Processor (Haswell, no TSX), 6 vCPU
- Memory: 11 GiB RAM, swap not reported by probe
- Storage: ZFS pool
zroot, 98.5G, ONLINE; latest storage probe reports 23.4G available - GPU: not reported by probe (
lspcireturned usage text) - Jails / containers: FreeBSD jails
cmsandworker; Docker not installed - Agents reported by probe: Codex CLI
/usr/local/bin/codex(codex-cli 0.117.0); Claude Code/home/clawdie/.npm-global/bin/claude - Mevy Telegram / provider: not reported by probe; do not guess token ownership or provider
- hermes-osa (FreeBSD-native Hermes): not installed yet — see install note below
- Layered soul: commit
3ee2888, 7 curated memories, 10 cross-harness skills
hermes-osa install note (corrected)
The osa FreeBSD-native Hermes is the clean-room MIT hermes-bsd codebase — not
"Autolycus" (an LGPL upstream dependency the layer explicitly avoids; the old codename is
retired). Grounded in the actual code:
- Service:
hermes_daemon(packaging/freebsd/hermes_daemon.in→/usr/local/etc/rc.d/hermes_daemon,sysrc hermes_daemon_enable=YES). Distinct from the oldclawdie/clawdie_hostdrc.d entries, so it won't collide during validation. - State home: the app reads
HERMES_HOME(get_hermes_home()). Do not setAUTOLYCUS_HOMEfor hermes-osa. - Canonical first-validation state home:
HERMES_HOME=/home/clawdie/.hermes— not/home/clawdie/clawdie-ai(an earlier target that is the old orphaned runtime; see below). This value is authoritative; any agent planning a different path should align to it here first. For source-proof validation, run the checkout-local setup path, not the PyPI/system installer:cd /home/clawdie/ai/hermes-bsd HERMES_HOME=/home/clawdie/.hermes ./setup-hermes.sh HERMES_HOME=/home/clawdie/.hermes hermes setup # Telegram off, no secrets firstscripts/install-freebsd.shis useful later for package-style installs, but it currently installs the publishedhermes-agentpackage rather than proving this checkout's patches. - Service home: the rc.d template defaults
hermes_daemon_hometo/var/db/hermesunder the dedicatedhermesservice user. After local validation, either seed/var/db/hermesdeliberately or setsysrc hermes_daemon_home=/home/clawdie/.hermesdeliberately; do not let local and daemon state diverge by accident. - Do not use
/home/clawdie/clawdie-aias Hermes state. Preserve/retire the old Clawdie runtime path as a separate step after local Hermes validation. - Install source is
hermes-bsdmain at912e697d(includes the Python 3.12 setup baseline).
FreeBSD prereqs & first-run checklist (verified blind spots before committing):
- Install prereqs via pkg first.
setup-hermes.shonly auto-provisions on Linux/Termux/macOS; on FreeBSD it falls through to manual-instruction messages. Run:pkg install -y bash uv git curl. Prefer pkguvover the script's astralcurl | shfallback (unreliable on FreeBSD). bashmust be installed. The script is bash. Its shebang is now portable#!/usr/bin/env bash(hermes-bsd PR #3,fix(freebsd): portable bash shebang), so it resolves FreeBSD's/usr/local/bin/bash— but bash itself must be present (step 1). Until PR #3 is merged on the checkout, invoke asbash setup-hermes.sh.- Run attended. The script prompts (optional packages, setup wizard). Do not run
it unattended/agent-driven — it will hang on the
readprompts. - Core-only for first validation. Decline optional extras initially. Several
(
matrix→libolm,voice/tts→audio) are native builds that may not compile on FreeBSD 15; the installer degrades rather than hard-failing, but a minimal install gives a clean CLI proof. Add extras deliberately later. - The rc.d service step is a separate re-setup, not a flip.
setup-hermes.shsymlinks thehermesbinary into~/.local/binfor the invoking user, buthermes_daemonexpects it at/usr/local/bin/hermesunder a dedicatedhermesuser with state at/var/db/hermes. Validation state at/home/clawdie/.hermeswill not migrate — re-run setup as the service user when promoting to rc.d.
See ../AGENTS.md for the canonical agent matrix and operating rules.