Intelligence beyond sight
Per-node Channel State Information streamed from the Raspberry Pi edge over /ws/sensing. Sparklines plot the latest CSI amplitude vector in real time.
Edge-only WiFi/RF sensing mesh built on commodity ESP32-S3 nodes. Cells stream CSI back to a Rust aggregator over the local network; inference runs on-device or on the same host as the API.
Not supported: ESP32 (original) and ESP32-C3 — single-core, can't run the CSI DSP pipeline.
firmware/esp32-csi-node
wifi-densepose-signal · optaris_sense/*
wifi-densepose-nn · -ruvector · -train
wifi-densepose-api · ui/
wifi-densepose-coreFrame primitives, traits, error typeswifi-densepose-hardwareESP32 aggregator, TDM protocol, channel hoppingwifi-densepose-signalSOTA DSP + OptarisSense multistatic (14 modules)wifi-densepose-ruvectorRuVector v2.0.4 + cross-viewpoint fusionwifi-densepose-nnONNX / Candle / Torch inference backendswifi-densepose-trainTraining pipeline (MM-Fi, Wi-Pose)wifi-densepose-matMass Casualty Assessment / survivor detectionwifi-densepose-vitalsESP32 CSI-grade vital sign extraction (ADR-021)wifi-densepose-wifiscanMulti-BSSID WiFi scanning (ADR-022)wifi-densepose-apiAxum REST + WebSocket sensing streamwifi-densepose-dbPostgres / SQLite / Redis layerwifi-densepose-configConfiguration managementwifi-densepose-wasmBrowser bindings (built on -mat)wifi-densepose-sensing-serverLightweight Axum server for sensing UIwifi-densepose-cliCLI tool (wifi-densepose binary)Per-node status, frame rates and health for every ESP32-S3 in the mesh.
Real-time status of all CSI sensing nodes connected via the Pineapple mesh
No ESP32-S3 nodes detected yet.
Plug an ESP32-S3 into the Pi USB to auto-provision,
or flash firmware with target_ip pointing to the Pineapple AP.
Set the actual number of people in the room, then compare against sensor detection in real-time
Record CSI data, train pose estimation models, and manage .rvf files