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.