Device-free RF human sensing, built around evidence rather than demos.
Echora is an open-source research and engineering project for detecting and estimating human presence, motion, occupancy, localization, respiration and, later, body pose from radio signals without requiring a camera or wearable during normal operation.
The first sensing modality is Wi-Fi Channel State Information (CSI) captured by low-cost ESP32-S3/ESP32-C6 nodes. The architecture is intentionally modality-neutral so future adapters can evaluate mmWave radar, UWB, BLE Channel Sounding or other RF sources without rewriting the system.
Echora is designed to answer a harder question than “can we draw a person on a dashboard?”:
What can the current sensor topology actually support, with what uncertainty, under which environment, calibration, hardware, model and evidence?
A complete-looking visualization is never treated as proof. Echora keeps direct measurements, calibrated measurements, reconstructions, inferences, generated data and simulation explicitly separate.
| Phase | Capability | Primary evidence target |
|---|---|---|
| P0 | Real CSI capture and replay | raw frames, timestamps, loss, hardware provenance |
| P1 | Presence, motion, respiration | empty-room controls + independent reference |
| P2 | Multi-node occupancy and coarse localization | known positions + held-out room geometry |
| P3 | Synchronized reference capture | Kinect/RGB-D/camera used as training/reference instrumentation |
| P4 | Camera-free pose inference | held-out people/rooms/sessions, calibrated uncertainty and abstention |
| P5 | Cardiac micro-motion research | independent ECG/PPG/watch reference; experimental until validated |
| P6 | SpatialTwin integration | RF-derived human state placed in a metric 3D environment with provenance |
Current repository maturity: specification / architecture foundation with a minimal Rust evidence/protocol scaffold. A capability is not considered implemented merely because it appears in the roadmap or documentation.
Echora adopts an evidence-governed sensing model:
MEASURED
CALIBRATED
RECONSTRUCTED
INFERRED
GENERATED
SIMULATED
REFERENCE
Live, replay and synthetic sources are also distinct. A simulator must never silently masquerade as a live sensor.
Every meaningful sensing output is expected to be traceable to fields such as:
value
confidence
source_mode
evidence_kind
sensor_ids
capture_id
calibration_id
model_version
firmware_version
environment_id
timestamp
quality_flags
reference_status
When evidence is insufficient, abstention is a valid result. Returning null + reason=INSUFFICIENT_SNR is preferable to emitting a plausible but unsupported number.
ESP32-S3 / ESP32-C6
│
│ raw CSI + metadata
▼
RF Ingest / Gateway
Rust
│
├── protocol validation
├── time alignment
├── packet-loss accounting
├── calibration identity
└── provenance
▼
Signal Processing
Rust
│
├── amplitude / phase
├── sanitization / outlier rejection
├── subcarrier selection
├── spectral / temporal features
└── uncertainty / quality
▼
Inference & Fusion
Rust runtime + Python training
│
├── presence
├── motion
├── respiration
├── occupancy / localization
└── pose candidates
▼
Spatial State
│
├── confidence
├── abstention
├── temporal tracking
└── room/world coordinates
▼
API / WebSocket / MQTT
▼
Web dashboard / Three.js / SpatialTwin
Baseline stack decisions and alternatives are documented under docs/engineering/STACK.md.
Echora is not designed to make Wi-Fi look like a camera. Its 3D interface is an evidence-constrained spatial instrument.
The visualization progresses only as the evidence permits:
raw CSI
→ signal diagnostics
→ RF link activity
→ occupancy likelihood field
→ localized volume + uncertainty
→ track
→ body extent
→ skeleton
→ dense RF-inferred representation
A topology-aware Capability Negotiator defines the maximum render fidelity. If geometry, calibration, signal quality, model compatibility or evidence is insufficient, the UI reduces fidelity or withholds the result instead of inventing detail.
The planned 3D views include:
- RF Lab — AP/nodes, links, geometry and Fresnel-inspired support;
- Signal View — amplitude/phase, waterfalls, spectra and timing quality;
- Radar / Occupancy View — 3D likelihood/uncertainty volumes;
- Track View — centroid, covariance and trajectory;
- Human / Pose View — gated keypoints/skeleton;
- Reference View — research-only Kinect/RGB-D/camera comparison.
See Visualization Architecture, Capability Negotiation and RuView Comparison.
This repository follows the Derivanta / Engineering Constitution principles used across Soturine engineering work:
- problem and evidence before technology;
- modular architecture with explicit boundaries and contracts;
- raw-source provenance and reproducible experiments;
implemented ≠ tested ≠ integrated ≠ validated;simulation ≠ hardware validation;measured ≠ reconstructed ≠ inferred ≠ generated;- deterministic handling of critical invariants;
- small reviewable changes and logical commits;
- verification and validation as different activities;
- negative, edge, failure and degraded-state testing;
- security/privacy/supply-chain controls throughout the lifecycle;
- exact-revision evidence for releases;
- observability, run lineage and calibration identity;
- documentation authority, ADRs and explicit gaps;
- no unsupported claims promoted from one favorable run.
See AGENTS.md and docs/README.md.
docs/ product, architecture, engineering, QA, security and operations
firmware/ ESP-IDF capture nodes
crates/ Rust core, protocol, DSP, fusion, API and tooling
ml/ training, evaluation and model export
web/ operator/research UI and spatial visualization
schemas/ machine-readable contracts and evidence envelopes
hardware/ BOM, topology, calibration fixtures and setup
data/ dataset/capture format documentation (not raw personal captures)
tests/ cross-layer replay, HIL and acceptance harnesses
templates/ ADR, test and experiment records
Directories are introduced when their first authoritative artifact or implementation exists; empty architecture is not evidence of implementation.
The repository currently includes:
echora-core: source/evidence/provenance/abstention domain types;echora-protocol: bounded v1 binary sensor frame codec with CRC and tests;- GitHub Actions for format, clippy and Rust tests.
This is software foundation only. Real CSI acquisition, DSP, presence, respiration, localization and pose remain roadmap work until implemented and validated.
Until supported by reproducible evidence, the project will not claim:
- camera-grade pose from a single ESP32;
- medical-grade heart or respiration monitoring;
- reliable identity of a named person from RF;
- through-wall performance independent of material/environment;
- generalization from one room, one person or one capture session;
- real sensing when a pipeline is using replay or synthetic data;
- privacy merely because no visible camera is deployed.
Kinect/RGB-D/camera may be used during controlled data collection as a reference/teacher, never automatically as perfect ground truth. Calibration, synchronization, reference uncertainty and lineage remain part of the evidence record. Production inference is intended to be camera-free where the capability has been independently validated.
Start at docs/README.md. Important documents include:
- Product requirements
- System architecture
- 3D visualization architecture
- RF geometry and Fresnel model
- Capability negotiation
- Hardware/CSI matrix
- Ecosystem survey
- RuView comparison
- Repository structure
- Sensing pipeline
- Data and wire contracts
- Experimentation and scientific validation
- Test strategy
- QA and assurance
- Security and privacy
- SLO/SLA and performance budgets
- Roadmap
A project license has not yet been selected. Code, datasets, trained weights and third-party assets may have different licensing constraints; no compatibility claim should be made until the licensing decision is recorded.
Echora: sense the space, preserve the evidence.