OPTARIS Console

Intelligence beyond sight

CONNECTING NO SIGNAL Wizard
READY
Live status NO SIGNAL
--
--
--
--
--
Activity & Motion NO SIGNAL
Motion level
Presence
People NO SIGNAL
People now
Peak today
Sensor Coverage NO SIGNAL
Sensors online
Avg signal
Vital Signs NO SIGNAL
Avg breathing
Avg heart rate

Pi CSI — live edge feed

Per-node Channel State Information streamed from the Raspberry Pi edge over /ws/sensing. Sparklines plot the latest CSI amplitude vector in real time.

connecting
0
Waiting for the first CSI frame from the Pi edge…

Data logs

0/200

Hardware

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.

01 Sensing nodes

Primary

ESP32-S3 (8MB)

COM7
  • WiFi CSI sensing node
  • Xtensa LX7 dual-core, 240 MHz
  • 8 MB (OTA partitions)
  • 2.4 GHz, 802.11n, channel hopping (TDM, ADR-018)
  • ~20 Hz, 64 subcarriers
  • ~$9
Compact

ESP32-S3 SuperMini (4MB)

  • WiFi CSI sensing (compact form-factor)
  • Xtensa LX7 dual-core
  • 4 MB (uses sdkconfig.defaults.4mb)
  • ~$6
mmWave

ESP32-C6 + Seeed MR60BHA2

COM4
  • 60 GHz FMCW radar — HR / BR / presence
  • RISC-V (ESP32-C6) bridging the radar module
  • ~$15
Aux

HLK-LD2410

  • 24 GHz FMCW — presence + range
  • UART, no streaming CSI
  • ~$3

Not supported: ESP32 (original) and ESP32-C3 — single-core, can't run the CSI DSP pipeline.

02 Architecture

01
Edge Sensing
ESP32-S3 mesh, channel hopping (TDM), per-node CSI capture
firmware/esp32-csi-node
02
Aggregator
Multi-node CSI fusion, phase alignment, coherence gating
wifi-densepose-signal · optaris_sense/*
03
Inference
Pose / vitals / anomaly heads (ONNX · Candle · Torch)
wifi-densepose-nn · -ruvector · -train
04
API + UI
Axum REST + WS, OPTARIS Console + Observatory
wifi-densepose-api · ui/

03 Rust workspace (15 crates)

wifi-densepose-coreFrame primitives, traits, error types
wifi-densepose-hardwareESP32 aggregator, TDM protocol, channel hopping
wifi-densepose-signalSOTA DSP + OptarisSense multistatic (14 modules)
wifi-densepose-ruvectorRuVector v2.0.4 + cross-viewpoint fusion
wifi-densepose-nnONNX / Candle / Torch inference backends
wifi-densepose-trainTraining pipeline (MM-Fi, Wi-Pose)
wifi-densepose-matMass Casualty Assessment / survivor detection
wifi-densepose-vitalsESP32 CSI-grade vital sign extraction (ADR-021)
wifi-densepose-wifiscanMulti-BSSID WiFi scanning (ADR-022)
wifi-densepose-apiAxum REST + WebSocket sensing stream
wifi-densepose-dbPostgres / SQLite / Redis layer
wifi-densepose-configConfiguration management
wifi-densepose-wasmBrowser bindings (built on -mat)
wifi-densepose-sensing-serverLightweight Axum server for sensing UI
wifi-densepose-cliCLI tool (wifi-densepose binary)

04 Live status

--
--
--
--
--
--

05 Sensor fleet

Per-node status, frame rates and health for every ESP32-S3 in the mesh.

Live Demonstration

Ready

WiFi Signal Analysis

Signal Strength: -45 dBm
Processing Latency: 12 ms

Human Pose Detection

Persons Detected: 0
Confidence: 0.0%
Keypoints: 0/0

ESP32-S3 Sensor Fleet

Real-time status of all CSI sensing nodes connected via the Pineapple mesh

0 Total Nodes
0 Active
0 Unhealthy
0 Lost
0 Total fps
0 Drops
Relay uptime: -- Frames RX: 0 Frames TX: 0 Invalid: 0

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.

Frame Types

CSI Raw0
Vitals0
Feature Vec0
Fused Vitals0
Compressed0
Feature State0
Mesh0

People Sensing Calibration

Set the actual number of people in the room, then compare against sensor detection in real-time

Model Training

Record CSI data, train pose estimation models, and manage .rvf files