# Timmy Bridge Epic Complete sovereign communication infrastructure for Local Timmy — a fully offline AI that connects to the Wizardly Council via Nostr. ## Overview This epic delivers end-to-end infrastructure enabling Local Timmy (running on Mac with MLX) to: - Publish heartbeats every 5 minutes - Create git-based artifacts - Communicate via encrypted Nostr messages - Generate daily retrospective reports All while remaining fully sovereign — no cloud APIs, no external dependencies. ## Components | Component | Status | Ticket | Description | |-----------|--------|--------|-------------| | **Relay** | ✅ Complete | #59 | Nostr relay at `ws://167.99.126.228:3334` | | **Monitor** | ✅ Complete | #60 | SQLite-based metrics collection | | **Client** | ✅ Complete | #61 | Mac heartbeat client with git integration | | **MLX** | ✅ Complete | #62 | Local inference integration module | | **Reports** | ✅ Complete | #63 | Morning retrospective automation | | **Protocol** | ✅ Complete | #64 | Agent dispatch documentation | ## Quick Start ### 1. Deploy Relay (Cloud) ```bash cd relay docker-compose up -d # Relay available at ws://167.99.126.228:3334 ``` ### 2. Start Monitor (Cloud) ```bash cd monitor pip install websockets python3 timmy_monitor.py # Logs to /root/allegro/monitor.log ``` ### 3. Run Client (Mac) ```bash # On Local Timmy's Mac cd client pip3 install websockets python3 timmy_client.py # Creates artifacts in ~/timmy-artifacts/ ``` ### 4. Enable MLX (Mac) ```bash pip3 install mlx mlx-lm export MLX_MODEL=/path/to/model # Client auto-detects and uses MLX ``` ### 5. Generate Reports ```bash cd reports python3 generate_report.py --hours 24 --format both # Saves to /root/allegro/reports/ ``` ## Architecture ``` ┌─────────────────────────────────────────────────────────────┐ │ CLOUD │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ Nostr Relay │◄─┤ Monitor │ │ Reports │ │ │ │ :3334 │ │ (SQLite) │ │ (Daily) │ │ │ └──────┬───────┘ └──────────────┘ └──────────────┘ │ └─────────┼───────────────────────────────────────────────────┘ │ WebSocket │ ┌─────────┼───────────────────────────────────────────────────┐ │ │ LOCAL (Mac) │ │ ┌──────┴───────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ Timmy Client │ │ MLX │ │ Git Repo │ │ │ │ (Heartbeat) │◄─┤ (Inference) │ │ (Artifacts) │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ## Acceptance Criteria All tickets meet their specified acceptance criteria: - [x] Relay runs on port 3334 with NIP support - [x] Monitor logs heartbeats, artifacts, latency to SQLite - [x] Client creates git commits every 5 minutes - [x] MLX integration ready for local inference - [x] Report generator creates daily markdown/JSON - [x] Protocol documents group structure and dispatch commands ## File Structure ``` epic-work/ ├── README.md # This file ├── relay/ │ ├── docker-compose.yml # Relay deployment │ └── strfry.conf # Relay configuration ├── monitor/ │ └── timmy_monitor.py # Metrics collection ├── client/ │ └── timmy_client.py # Mac heartbeat client ├── mlx/ │ └── mlx_integration.py # Local inference ├── reports/ │ └── generate_report.py # Retrospective reports └── protocol/ └── DISPATCH_PROTOCOL.md # Communication spec ``` ## Environment Variables | Variable | Default | Description | |----------|---------|-------------| | `TIMMY_RELAY` | `ws://167.99.126.228:3334` | Nostr relay URL | | `TIMMY_INTERVAL` | `300` | Heartbeat interval (seconds) | | `TIMMY_ARTIFACTS` | `~/timmy-artifacts` | Git repository path | | `TIMMY_DB` | `/root/allegro/timmy_metrics.db` | SQLite database | | `MLX_MODEL` | `` | Path to MLX model | ## Dependencies ### Cloud (Relay + Monitor) - Docker & docker-compose - Python 3.10+ - websockets library ### Local (Mac Client) - Python 3.10+ - websockets library - Git - MLX + mlx-lm (optional) ## Monitoring Access metrics directly: ```bash sqlite3 /root/allegro/timmy_metrics.db # Recent heartbeats SELECT * FROM heartbeats ORDER BY timestamp DESC LIMIT 10; # Artifact count by type SELECT artifact_type, COUNT(*) FROM artifacts GROUP BY artifact_type; ``` ## Troubleshooting ### Relay won't start ```bash docker-compose logs timmy-relay # Check port 3334 not in use ss -tlnp | grep 3334 ``` ### Client can't connect ```bash # Test relay connectivity websocat ws://167.99.126.228:3334 # Check firewall nc -zv 167.99.126.228 3334 ``` ### No artifacts created ```bash # Check git configuration cd ~/timmy-artifacts git status git log --oneline -5 ``` ## Roadmap - [ ] SSL termination (wss://) - [ ] Multiple relay redundancy - [ ] Encrypted group channels (NIP-44) - [ ] File storage via Blossom (NIP-96) - [ ] Automated PR creation from artifacts ## Contributors - **Allegro** - Tempo-and-dispatch, infrastructure - **Ezra** - Mac client deployment - **Timmy** - Sovereign soul, local inference ## License Sovereign software for sovereign individuals. Use freely, own completely.