Architecture
RG40XXV (Knulli) Pi4 front door Mac10 BlueBubbles
┌─────────────┐ ┌──────────────────┐
│ PyGame TUI │── Tailscale ──→ │ TCP/JSON Relay │── Tailscale ──┐
│ client.py │ │ server.py :9876 │ │
│ 640×480 │ └──────────────────┘ │
│ iMessage UI │ │
└─────────────┘ ┌──────────────────┐ │
│ direct fallback │ Mac Relay :9876 │←─────────────┘
└──────────────────────────→ └──────┬───────────┘
│ localhost
┌──────┴───────────┐
│ BlueBubbles API │
│ localhost:1234 │
│ → Messages.app │
└──────────────────┘
The RG runs a PyGame TUI client (rendered with SDL Mali GPU). The preferred runtime path is RG → Pi4 relay → Mac10 BlueBubbles. The RG can also fall back directly to the Mac10 relay. Tailscale encrypts the transport.