# Fleet Topology — The Timmy Foundation **Last audited:** 2026-04-07 **Auditor:** Timmy (direct) **Next review:** When any machine changes --- ## Overview Map ``` ┌─────────────┐ │ Gitea Forge│ │ forge.aws.com│ └──────┬──────┘ │ HTTPS ┌─────────────────┼──────────────────┐ │ │ │ ┌────┴────┐ ┌────┴────┐ ┌─────┴──────┐ │ EZRA │ │ ALLEGRO │ │ BEZALEL │ │ VPS │ │ VPS │ │ VPS │ │ 143.x │ │ 167.x │ │ 159.x │ │ $12/mo │ │ $12/mo │ │ $12/mo │ └────┬────┘ └────┬────┘ └─────┬──────┘ │ │ │ └────────────────┼──────────────────┘ │ ┌─────┴──────┐ │ MAC LOCAL │ │ M3 Max │ │ 36GB │ │ 10.1.10.77 │ └────────────┘ ``` **Total VPS cost:** ~$36/mo **Total machines:** 4 (3 VPS + 1 Mac) **Network:** All VPSes on DigitalOcean, Mac on local network (10.1.10.77) --- ## Machine 1: MAC LOCAL (The Hub) | Item | Value | |------|-------| | **OS** | macOS 26.3.1 (25D2128) | | **CPU** | Apple M3 Max, 14 cores | | **RAM** | 36 GB | | **Disk** | 926 Gi total, 302 Gi free, 12 Gi used (4%) | | **IP** | 10.1.10.77 (local), external unknown | | **Role** | Primary AI harness, agent runtime, Evennia world | ### Running Processes | Process | PID | Memory | Notes | |---------|-----|--------|-------| | Hermes gateway | 68449 | ~500MB | Primary gateway | | Hermes agent (s020) | 88813 | ~180MB | Session active since 1:01PM | | Hermes agent (s007) | 62032 | ~200MB | Session active since 10:20PM prev | | Hermes agent (s001) | 12072 | ~178MB | Session active since Sun 6PM | | Ollama | 71466 | ~20MB | /opt/homebrew/opt/ollama/bin/ollama serve | | Crucible MCP (x4) | multiple | ~10-69MB each | MCP server instances | | Evennia Server | 66433 | ~49MB | Sun 10PM start, port 4000 | | Evennia Portal | 66423 | ~7MB | Sun 10PM start, port 4001 | ### LaunchD Services | Service | Status | Notes | |---------|--------|-------| | ai.hermes.gateway | Running (-9) | Primary gateway - PID 68426 | | ai.hermes.gateway-bezalel | Running (0) | Bezalel gateway connection | | ai.hermes.gateway-fenrir | Running (0) | Fenrir gateway connection | | com.ollama.ollama | Running (1) | Ollama service | | ai.timmy.codeclaw-qwen-heartbeat | Running (0) | Claw Code worker heartbeat (15min) | | ai.timmy.kimi-heartbeat | Running (0) | Kimi agent heartbeat | | ai.timmy.claudemax-watchdog | Running (0) | Claude subscription watchdog | ### Cron Jobs | Schedule | Script | Purpose | |----------|--------|---------| | `0 9 * * *` | daily-fleet-health.sh | Daily fleet health check | | `*/30 * * *` | burn-monitor.sh | Burn mode monitoring | | `*/15 * * *` | loop-watchdog.sh | Restart dead Groq/Gemini loops | | `0 8 * * *` | morning-report.sh | Overnight summary to Telegram+Gitea | ### Key Directories | Path | Purpose | |------|---------| | ~/.hermes/ | Hermes harness - tools, agents, sessions | | ~/.hermes/hermes-agent/ | Hermes agent source + venv | | ~/.hermes/scripts/ | Fleet scripts (health, burns, watchdog) | | ~/.timmy/ | Timmy workspace - Evennia, configs, skills | | ~/.timmy/evennia/timmy_world/ | Evennia world (port 4000/4001) | | ~/.config/gitea/ | Tokens for: timmy, claw-code, codex, fenrir, substratum, carnice | | ~/.config/telegram/ | Special bot token | | ~/work/ | Active work directories | | ~/code-claw/ | Claw Code binary + workspace | --- ## Machine 2: EZRA (Forge) | Item | Value | |------|-------| | **IP** | 143.198.27.163 | | **Provider** | DigitalOcean | | **Cost** | ~$12/mo | | **DNS** | forge.alexanderwhitestone.com | | **Role** | Gitea server, DNS management | ### Services | Service | Notes | |---------|-------| | Gitea | forge.alexanderwhitestone.com, port 443 (nginx proxy) | | Nginx | Reverse proxy for Gitea | | HTTPS | Let's Encrypt cert (Apr 5 - Jul 4 2026) | ### Key Facts - Gitea org: Timmy_Foundation (ID: 10) - 16 repos across the org - 16 watchers on timmy-home - API at: https://forge.alexanderwhitestone.com/api/v1 - Token stored on Mac at ~/.config/gitea/token --- ## Machine 3: ALLEGRO | Item | Value | |------|-------| | **IP** | 167.99.126.228 | | **Provider** | DigitalOcean | | **Cost** | ~$12/mo | | **Role** | Agent hosting | ### Known Services | Service | Notes | |---------|-------| | Agents | Agent processes (specific ones TBD) | | SSH | Access from Mac needs verification (issue #538) | ### Unresolved Issues - SSH access from Mac to Allegro not confirmed (timmy-home #538) --- ## Machine 4: BEZALEL | Item | Value | |------|-------| | **IP** | 159.203.146.185 | | **Provider** | DigitalOcean | | **Cost** | ~$12/mo | | **DNS** | bezalel.alexanderwhitestone.com | | **Role** | Evennia world, agent hosting | ### Services | Service | Notes | |---------|-------| | Evennia | World running (needs config fix per #534) | | Agent hosting | Bezalel agent | | Tailscale | Not yet installed (#535) | ### Unresolved Issues - #534: Evennia settings have bad port tuples, DB is ready - #535: Tailscale not installed - #536: Evennia world needs themed rooms/characters --- ## Network Topology ``` Internet ──→ forge.alexanderwhitestone.com (Ezra, 143.198.27.163) ──→ bezalel.alexanderwhitestone.com (Bezalel, 159.203.146.185) Mac (10.1.10.77) ──→ Ezra (SSH/HTTPS) ──→ Allegro (SSH - broken?) ──→ Bezalel (SSH) Tailscale: Not installed on any VPS yet ``` --- ## Credential Inventory (NOT the secrets, just where they live) | Credential | Location | Used By | |-----------|----------|---------| | Gitea token (timmy) | ~/.config/gitea/timmy-token | Timmy API calls | | Gitea token (generic) | ~/.config/gitea/token | General API access | | Gitea token (claw-code) | ~/.config/gitea/claw-code-token | Code Claw worker | | Gitea token (codex) | ~/.config/gitea/codex-token | Codex agent | | Gitea token (fenrir) | ~/.config/gitea/fenrir-token | Fenrir agent | | Gitea token (substratum) | ~/.config/gitea/substratum-token | Substratum agent | | Gitea token (carnice) | ~/.config/gitea/carnice-token | Carnice agent | | Telegram bot token | ~/.config/telegram/special_bot | @TimmysNexus_bot | | OpenRouter key | ~/.timmy/openrouter_key | Model routing | --- ## Resource Baseline (Current State) ### Compute Capacity (estimated) | Machine | CPU | RAM | Est. Daily Compute Hours | |---------|-----|-----|------------------------| | Mac Local | M3 Max (14c) | 36GB | ~4-6 hrs active use | | Ezra | Unknown | Unknown | Gitea only, minimal | | Allegro | Unknown | Unknown | Agent hosting | | Bezalel | Unknown | Unknown | Evennia + agent | ### Model Inference | Model | Location | Provider | Status | |-------|----------|----------|--------| | hermes4:14b | Local (Ollama) | Ollama | Running | | qwen/qwen3.6-plus:free | Cloud | OpenRouter | Active (this session) | | qwen/qwen3-32b | Cloud | Groq | Used by aider | ### Storage | Machine | Total | Used | Free | Utilization | |---------|-------|------|------|-------------| | Mac Local | 926 Gi | 624 Gi | 302 Gi | 32% | | Ezra | Unknown | Unknown | Unknown | Unknown | | Allegro | Unknown | Unknown | Unknown | Unknown | | Bezalel | Unknown | Unknown | Unknown | Unknown | --- ## What We Don't Know Yet - [ ] CPU/RAM/disk on Ezra, Allegro, Bezalel (no inventory script yet) - [ ] Running processes on VPSes - [ ] Network paths between VPSes (no Tailscale yet) - [ ] SSH connectivity from Mac to Allegro - [ ] Backup state of any machine - [ ] Uptime baseline (not tracked) - [ ] Cost per agent per day (not tracked) --- ## Dependencies | Service | Depends On | Risk if Down | |---------|-----------|--------------| | Gitea | Ezra, nginx, HTTPS | Can't manage issues, PRs, or repos | | Hermas agents | Mac, Ollama, OpenRouter | No AI work gets done | | Evennia | Bezalel VPS | Game world down | | Telegram bot | Telegram API, Mac process | No notifications | | Code Claw heartbeat | Mac, OpenRouter, Gitea | No automated issue processing | ---