# 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 |

---
