- Document Alpha (167.99.126.228) vs Beta (104.131.15.18) roles - Define client-facing narrative for architecture questions - List redundancy status honestly Closes #908
3.3 KiB
Fleet Topology — Two-VPS Operations Runbook
Date: 2026-04-06
Owner: Bezalel
Classification: Operational Reference
Overview
The Timmy Foundation fleet runs across two VPS instances with distinct roles. This document exists so that when a client asks about architecture, redundancy, or access patterns, we have a single truthful answer ready.
Hosts
VPS Alpha — 167.99.126.228
Role: Primary stack. Main forge, relay, and agent compute.
Running services:
- Gitea (
forge.alexanderwhitestone.com) - Nostr relay (strfry on 7777, timmy-relay on 2929)
- Ollama (local inference,
qwen3:4b) - Hermes agents: Allegro, Adagio, Ezra, Bilbobagginshire
- Webhook receivers and CI automation
- Evennia MUD / Timmy Academy
Storage: All source of truth repositories, model weights, agent homes.
VPS Beta — 104.131.15.18
Role: Forge-and-testbed satellite. Bezalel only.
Running services:
- Hermes agent: Bezalel
Not running here:
- No local Gitea (uses VPS Alpha over HTTPS)
- No Docker daemon
- No Nostr relay
- No Ollama
Purpose: Isolated testbed for build verification, security hardening, and destructive experiments without risking the primary stack.
Why Two Hosts?
- Blast radius isolation. Bezalel can test builds, run security audits, and break things without affecting the main forge.
- Specialization. Alpha runs the full production stack. Beta is lean and dedicated to CI/testbed work.
- Future scaling. Beta-pattern hosts can be spun up in additional regions or clouds.
Cross-Host Communication
| From | To | Protocol | Path |
|---|---|---|---|
| VPS Beta (Bezalel) | VPS Alpha (Gitea) | HTTPS/API | forge.alexanderwhitestone.com |
| VPS Alpha agents | VPS Alpha Gitea | Local HTTP/API | localhost:3000 |
| VPS Alpha Nostr | Public | WebSocket | 7777, 2929 |
No direct agent-to-agent LAN mesh. Agents communicate through Gitea issues/comments and shared repositories.
Redundancy Status
Current state: Single points of failure exist.
- Gitea is on one host.
- Nostr relay is on one host.
- Agent state is per-host.
Mitigations in place:
- All code and configuration is in git.
- Gitea itself is the backup for repositories.
- Agent homes are checkpointed to git periodically.
Not yet redundant:
- Automatic failover to a second Gitea instance.
- Cross-host agent migration without manual intervention.
- Real-time state replication between Alpha and Beta.
Client-Facing Narrative
When asked about infrastructure:
"We run a distributed fleet. Our primary stack hosts the code forge, relay network, and four agents. Our secondary testbed host runs dedicated build verification and security hardening workloads. This lets us isolate experimental or destructive work from production systems. All code and configuration is source-controlled, so any host can be rebuilt from git in under an hour."
Operational Contacts
| Host | IP | Primary Agent | Emergency Rebuild Source |
|---|---|---|---|
| Alpha | 167.99.126.228 |
Allegro | Gitea repos + .env files |
| Beta | 104.131.15.18 |
Bezalel | Gitea repos + .env files |
Last updated: 2026-04-06
Next review: On fleet expansion or host migration