No description
Find a file
jedarden 3937dbe06e feat(mothership): WebSocket ingestion server with binary/JSON frame parsing
- /ws/node endpoint: one goroutine per connection, bidirectional
- Binary frames: 24-byte header → CSIFrame struct; payload as []int8 I/Q pairs
- JSON frames: dispatched by "type" field (hello, health, ble, motion_hint, ota_status)
- Per-link ring buffer: 256-sample circular, keyed by (node_mac, peer_mac)
- Node identity from first "hello" — no pre-registration required
- Used gorilla/websocket: mature, SetReadDeadline, binary frame support
- mDNS via hashicorp/mdns at _spaxel._tcp.local:8080
- Ping/pong keepalive: 30s ping interval, 60s read deadline
- Malformed frame tracking: warn at 100/min, close at 1000/min

Complete: frame parsing, ring buffers, mDNS, hello/health/ble dispatch, tests (22 passing)
Remaining: OTA command dispatch, /ws/dashboard publisher, SQLite fleet manager (Phase 2)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 06:55:22 -04:00
.marathon init: spaxel project — docs, plan, and marathon infrastructure 2026-03-26 06:43:25 -04:00
docs init: spaxel project — docs, plan, and marathon infrastructure 2026-03-26 06:43:25 -04:00
mothership feat(mothership): WebSocket ingestion server with binary/JSON frame parsing 2026-03-26 06:55:22 -04:00
PROGRESS.md feat(mothership): WebSocket ingestion server with binary/JSON frame parsing 2026-03-26 06:55:22 -04:00