liveshipped April 27, 2026 · running 24/7
Houston Digital Twin
An autonomous AI system that watches every public traffic camera in Houston in real time. A vision-language model on hardware in my house turns each frame into structured data. Every observation is persisted to Google Cloud BigQuery, forever.
Observations
35,000+
and counting
Cameras
250
across Houston metro
Refresh
3 min
per camera
Inference
~2s
per frame on Spark
What the system does, every minute, without me
- Tell me the live state of every freeway, loop, and beltway in Houston, refreshed every three to six minutes
- Color a real-time map of the entire metro by congestion level
- Persist every observation to BigQuery so I can query historical patterns
- Surface flagged anomalies (stopped vehicles, flooding, heavy congestion, rain) in a live operations panel
- Recover automatically from network interruptions, sleep events, and inference outages
The stack
Orchestration
MacBook Pro M4 Max, 128 GB unified
Vision inference
NVIDIA DGX Spark, Blackwell GPU, Qwen 2.5 VL 7B via Ollama
Persistence
Google Cloud BigQuery (day-partitioned, clustered)
Camera feed
Houston TranStar public snapshots, 1,070+ cameras
Always-on supervision
macOS launchd
Map visualization
Leaflet 1.9.4 with CARTO dark tiles
Total recurring infrastructure cost: under $1/month.
Architecture
public TranStar feeds
│
▼
┌──────────────────────────────────────────┐
│ MacBook Pro M4 Max 128 GB (always on) │
│ Flask app under launchd │
│ ├─ Scrape thread (async, 20 concurrent) │
│ ├─ Analyze worker (continuous) │
│ └─ HTTP server │
└────────┬───────────────────┬─────────────┘
│ │
HTTP to Spark│ │HTTPS to Google Cloud
▼ ▼
┌──────────────────┐ ┌─────────────────────┐
│ DGX Spark │ │ BigQuery │
│ Blackwell GPU │ │ twin.observations │
│ Qwen 2.5 VL 7B │ │ partitioned + │
│ via Ollama │ │ clustered │
└──────────────────┘ └─────────────────────┘Building in public
The Day 1 thread. The system was already live when I posted it.
Day 1 · Announcement
Loading post…
Reply 1 · Architecture and stack
Loading post…
Reply 2 · 16 hours of observations
Loading post…
Reply 3 · Live proof from BigQuery
Loading post…
See the live map
The system runs continuously on hardware in my office. A public live viewer is in active development. In the meantime, the observations table is queryable and growing every three minutes.