2026-06-17 13:19:42 +02:00
# 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**
2026-06-17 13:52:42 +02:00
>
2026-06-17 13:19:42 +02:00
> ```sh
> cd ~/layered-soul
> python3 scripts/verify_facts_probe.py --os --hardware --storage --network --text
> ```
2026-06-17 13:52:42 +02:00
>
2026-06-17 13:19:42 +02:00
> Copy the verified values into the tables below, set `Probed` to 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.
2026-06-17 17:01:51 +02:00
>
> **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.
2026-06-17 13:19:42 +02:00
---
## 1. Agent placement (who runs where)
2026-06-17 21:39:29 +02:00
| Agent | Host | OS / Isolation | Harness | Role | Bot / channel | Status |
| ----------- | ------- | --------------------------- | ---------------------------- | -------------------------------- | --------------------- | ----------------------------- |
| Hermes | debby | Debian 13 / Docker | Hermes Agent (upstream) | Orchestrator, soul backup | @hermes_samob_bot | LIVE |
| Zot | debby | Debian 13 / Docker | Zot RPC | Coding, media workflows | @zot_samob_bot | LIVE |
| Claude | domedog | Ubuntu 24.04 / Docker | Claude Code | Verification, review | — (CLI) | LIVE |
2026-06-17 22:05:57 +02:00
| **Mevy** | osa | FreeBSD 15 / host | Hermes Agent (upstream, CLI) | **Consolidated into hermes-osa** | @zleht_bot (Žleht) | **LIVE — under hermes-osa** |
| **hermes-osa** | osa | FreeBSD 15 / host | Hermes Agent (FreeBSD fork) | **Native FreeBSD Hermes: chat + gateway** | @zleht_bot (Žleht) | **LIVE — chat + Telegram** |
2026-06-17 21:39:29 +02:00
| Codex | osa | FreeBSD 15 / jail | Codex CLI | ISO builds, validation | — (CLI) | LIVE |
2026-06-17 22:05:57 +02:00
> **Mevy vs hermes-osa distinction**: Mevy (@zleht_bot / Žleht) has been consolidated into hermes-osa as of 2026-06-17. The Telegram bot token was migrated from the old backup .env. hermes-osa now runs both the local CLI chat and the Telegram gateway (polling mode, tmux session `hermes-gateway`).
2026-06-17 21:39:29 +02:00
>
> **Status key**: `LIVE` = running and validated right now. `INSTALLED` = binary present, not yet validated in role. `PLANNED` = not yet set up. No guessing.
2026-06-17 13:19:42 +02:00
> Notes:
2026-06-17 13:52:42 +02:00
>
2026-06-17 13:19:42 +02:00
> - 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.
2026-06-17 21:35:22 +02:00
> - **Current vs Designed**: Colibri has a capability matcher for agent routing, but today it
> works for local daemon/agent pools. Cross-host routing across debby/domedog/osa is the
> next wiring step — not live yet. `verify_facts_probe.py` is a required discipline/tool,
> not an automatic startup hook — agents run it when grounding host facts, and HOST-MATRIX
> records the result. OS/hardware facts come from probes and the matrix, not from SOUL.md
> (which carries identity and values).
2026-06-17 13:19:42 +02:00
---
## 2. Host hardware & facts (one row per host)
2026-06-17 13:52:42 +02:00
| 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 |
2026-06-17 17:47:32 +02:00
| **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 |
2026-06-17 13:19:42 +02:00
2026-06-17 17:01:51 +02:00
### 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) or
`zfs 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:** `debby` runs ~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.
2026-06-17 13:19:42 +02:00
---
## 3. Per-host detail (expand as needed)
### domedog (Claude / verification) — probed 2026-06-17 by Claude
2026-06-17 13:52:42 +02:00
2026-06-17 13:19:42 +02:00
- **Identity**: hostname `domedog.pro` , Tailscale `100.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/sda1` 96 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.
2026-06-17 13:24:46 +02:00
### debby (Hermes orchestrator + Zot) — probed 2026-06-17 by Hermes
2026-06-17 13:52:42 +02:00
2026-06-17 13:24:46 +02:00
- **Identity**: hostname `debby` , Tailscale `100.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/nvme0n1p2` 453 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
2026-06-17 13:19:42 +02:00
2026-06-17 21:39:29 +02:00
### osa (FreeBSD: Mevy + hermes-osa + Codex) — probed 2026-06-17 by hermes-osa
2026-06-17 13:52:42 +02:00
- **Identity**: hostname `osa.smilepowered.org` , Tailscale `100.72.229.63`
- **OS**: FreeBSD `15.0-RELEASE-p10` , kernel `FreeBSD osa.smilepowered.org 15.0-RELEASE-p10 FreeBSD 15.0-RELEASE-p10 releng/15.0-n281064-98258a339269 GENERIC amd64`
- **CPU**: Intel Core Processor (Haswell, no TSX), 6 vCPU
2026-06-17 21:39:29 +02:00
- **Memory**: 11 GiB RAM
- **Storage**: ZFS pool `zroot` , 98.5G ONLINE, 23.4G available
- **Jails**: `cms` and `worker` (Bastille jails); Docker not installed
- **Agents on host**:
2026-06-17 22:05:57 +02:00
- **hermes-osa** — Hermes Agent v0.16.0 (`hermes-bsd` clean-room MIT fork), FreeBSD local CLI runtime + Telegram gateway. **Status: LIVE — validated local chat + Telegram.** Default provider: DeepSeek direct (`provider: deepseek` , `default: deepseek-chat` ). OpenRouter available as fallback/manual lane. Telegram/gateway: LIVE — @zleht_bot (Mevy/Žleht), polling mode, tmux session `hermes-gateway` on osa. Daemon/rc.d: deferred (Track A).
- **Mevy** — @zleht_bot (Žleht) — now consolidated under hermes-osa gateway. Token migrated from old backup .env.
2026-06-17 21:39:29 +02:00
- **Codex** — `codex-cli 0.117.0` , ISO builds and validation. Runs in a Bastille jail.
- **Claude Code** — installed (path: `/home/clawdie/.npm-global/bin/claude` ), no dedicated role yet.
- **Provider stack** (hermes-osa):
```yaml
provider: deepseek # primary — direct credits, proven DEEPSEEK_OK
default: deepseek-chat
fallback: openrouter # available manually, not auto-fallback configured yet
```
- **Z.AI**: deferred (not configured for hermes-osa; available via OpenRouter if needed)
2026-06-17 22:05:57 +02:00
- **Telegram**: LIVE — @zleht_bot , polling mode, connected 2026-06-17
- **Gateway**: LIVE — running in tmux session `hermes-gateway` , manual start (no rc.d yet)
2026-06-17 21:39:29 +02:00
- **Launch command**:
2026-06-17 17:14:43 +02:00
```sh
2026-06-17 21:39:29 +02:00
tmux new -s hermes-osa
2026-06-17 17:48:57 +02:00
cd /home/clawdie/ai/hermes-bsd
2026-06-17 21:39:29 +02:00
export HERMES_HOME=/home/clawdie/.hermes
source venv/bin/activate # or: .venv/bin/activate
hermes chat
2026-06-17 17:14:43 +02:00
```
2026-06-17 21:39:29 +02:00
- **Layered soul**: commit `c9c88fd` , 10 skills, 7 curated memories
- **Future tracks (separate, none blocking)**:
- Track A: daemon/rc.d promotion (hermes_daemon service, dedicated user)
2026-06-17 22:05:57 +02:00
- Track B: ~~Telegram/gateway integration~~ DONE (2026-06-17) — gateway daemonization (rc.d) still deferred
2026-06-17 21:39:29 +02:00
- Track C: Colibri cross-host routing (see CAPABILITY-ROUTING.md)
- Track D: old clawdie_glass cleanup
2026-06-17 13:19:42 +02:00
_See [`../AGENTS.md` ](../AGENTS.md ) for the canonical agent matrix and operating rules._