Local Render Origin → Durable Object Distribution

Mac mini replaces Grok as the generation/orchestration node; proxy remains the public control plane; S3 carries the bytes.

01 · SIGNALS / INPUT 02 · LOCAL MACHINE 03 · PUBLIC CONTROL PLANE 04 · OBJECT PLANE 05 · EDGE CONSUMERS Bitcoin node/APIblocks · fees · mempoolsmall event stream Bitaxe telemetryhashrate · shares · heatMQTT/HTTPS/WebSocket TAILSCALE PRIVATE NETWORK Mac minievent collectorscene plannerrender coordinatorupload worker + spoollocal NVMe job directory Proxy APIPOST /renders/initPOST /renders/completeGET /manifest/latestauth + job stateNever relay video bytesReturns presigned URLs S3immutable video objectschecksums + metadataversioned manifestsmultipart uploadlifecycle policies CloudFront/CDNcached video deliverysigned/public URLs Raspberry Pipoll manifest → fetchatomic local swap Bitaxe clientspoll manifest → fetchcache last good asset RENDER / DELIVERY STATE MACHINE 1 · RENDERED 2 · UPLOADING 3 · STORED 4 · PUBLISHED SEPARATE THE TWO FLOWS Control flow · tinyevents · metadata · manifests · statusHTTPS polling is sufficient; optional SSE/MQTT for immediacy Bulk flow · largeMac mini ↔ S3 ↔ CDN ↔ clientsmultipart HTTP; resumable; checksummed; bypass proxy eventstelemetrymetadatasigned URLmultipart bytespublish after verify

Recommended core

  • Proxy owns identity, manifests, status, and presigned S3 URLs.
  • Mac mini uploads directly to S3 using multipart upload.
  • Clients read a tiny manifest, then fetch immutable assets from CDN/S3.
  • Publish only after checksum/size verification.

What fails first

  • Mac uplink interruption during a large upload.
  • Disk exhaustion from queued renders.
  • A client observing a manifest before its asset is complete.
  • Many clients pulling the same uncached object at once.

Avoid

  • Streaming video through WebSockets.
  • Relaying bulk video through the proxy server.
  • Making the Mac mini publicly reachable.
  • Overwriting one mutable “latest.mp4” object.