---
name: his
description: Home Infrastructure Specialist cheatsheet for mfritsche's home network. Invoke when you need quick reference on distcc hosts / DISTCC_HOSTS, waking data or pve1..pve4, /opt/herding/ tooling on hertz, lmcp endpoints, LXD container access, or how to reach *.fritz.box hosts. This is the lookup form — if you need a task delegated (take-over-and-do), use the `his` subagent instead.
version: 1.0.0
---

# HIS — Home Infrastructure Specialist (cheatsheet)

You are being given the home-infra runbook for Markus's network. Absorb and keep going — don't delegate, just use this as reference.

## Ground truth

Canonical host/container map: `/home/mfritsche/claude/CLAUDE.md` on **noether**. Deeper context: `/home/mfritsche/.claude/projects/-home-mfritsche-claude/memory/` (`MEMORY.md` is the index).

## distcc (most common lookup)

Two hand-curated workers. **Zeroconf broken in containers — hand-wire `DISTCC_HOSTS`.**

| Worker | Where | Cores | Wake? |
|--------|-------|-------|-------|
| tesla | LXD on hertz (Arch) | host cores | always on |
| CT108 `aarch64crosscompiler` | Proxmox on data | 14 | wake data first |

Example for aarch64 kernel:
```
DISTCC_HOSTS="localhost/4 192.168.88.208:3632/14,lzo,cpp tesla.lxd:3632/4,lzo,cpp"
```

CT108's toolchain needs periodic updates to not drift.

## Waking shared hardware

- **data** (Proxmox, .30): `sudo /opt/herding/bin/wake-data` on hertz — covers plug-off (BIOS AC-recovery) + plug-on (WoL). `--dry-run` to peek, `--no-wait` to fire & return.
- **pve1..pve4**: `sudo wake-pve <N>` on hertz (TR-064 WoL). IPs: pve1=.95 pve2=.96 pve3=.81 pve4=.54. Fallback: `wakeonlan <MAC>`.
- **higgs** (portable Pi CM5): VPN-only, often offline.

## `/opt/herding/` on hertz

Personal home-infra root, kept separate from LXD host / base OS:

```
/opt/herding/
├── bin/            symlink hub (absolute paths for now)
├── etc/
│   ├── fritz.conf       Fritz web-UI creds
│   ├── data.conf        data host facts
│   └── hertz-tools.conf lmcp Bearer token
├── fritz/fritz-pin      DHCP reservation via data.lua
└── power/wake-data      two-stage wake
```

New tooling → topic dir + symlink into `bin/`.

## lmcp endpoints (all `:8080/mcp`)

| Host | Auth | Notes |
|------|------|-------|
| hertz | Bearer (hertz-tools.conf) | 17-tool hub, .18-only bind |
| boltzmann | none | shell/files |
| tesla | none | shell/files |
| broglie | none | **Dev-only** (QMK keyboard work); shell/read/write/list/search. Not an admin gateway. |
| higgs | none | VPN-only |
| nc | Bearer (.godparticle) | public, auth required |
| pve1..pve4, kepler | Bearer (per-host) | `reference_pve_lmcp_tokens.md` |

**Gotcha:** deferred-tools list snapshot at session start — new MCP servers don't hot-reload. Restart Claude Code to pick up.

## Monitoring

`/root/health-check.sh` on hertz, cron every 5 min. Watches: container down (fahrenheit/maxwell/shannon/lagrange/farad), SSL cert expiry (14-day threshold), disk (>85%), CPU temp (>80°C), thermostat battery (<20%). Alerts email mfritsche@reauktion.de with 1h–24h cooldowns tracked in `/tmp/health-alerts/`.

## Rules of engagement

- **Never** flash Fritz!Box or run `update-initramfs` on remote Proxmox/ZFS hosts.
- **Ask before** rebooting shared hardware mid-debug loop.
- **Three strikes:** after 2 failed fixes, verify binary/wire/protocol before #3.
- **Fritz DNS** only serves *active* clients — offline hosts NXDOMAIN.
- **Kids-media priority:** doppler/mediagrab/Gerbera outages outrank pure-infra triage.
- **No Oracle products.** No bedtime/schedule suggestions.
