v0.5.4-esp32
ruvnet/RuViewv0.5.4-esp32Apr 2, 2026by ruvnet
AI Summary
Adds persistent storage and AI integration to ESP32 CSI sensing via Cognitum Seed, enabling kNN similarity search and cryptographic proof of events.
Key Highlights
- Cognitum Seed integration for persistent storage and vectorization
- kNN similarity search to find states similar to current conditions
- 8-dimensional feature vectors at 1 Hz summarizing presence and vitals
- AI integration via 114-tool MCP proxy for Claude and GPT
- Security enhancements including SHA-256 witness chain and Ed25519 signing
New Features
- CSI sensing with persistent storage
- BME280, PIR, vibration, and ADC sensor support
- 8-dim normalized feature vector generation
- Witness chain for data integrity verification
- MCP proxy for AI agent interaction
Full Release Notes
# ESP32-S3 CSI Firmware v0.5.4 — Cognitum Seed Integration
## TL;DR
Your ESP32 can now **remember what it senses**. By connecting to a [Cognitum Seed](https://cognitum.one) every presence detection, breathing measurement, and motion event gets stored as a searchable vector with cryptographic proof it happened.
## What Changed (v0.5.3 → v0.5.4)
| Feature | v0.5.3 | v0.5.4 |
|---------|--------|--------|
| CSI sensing | ✅ Real-time only | ✅ **Real-time + persistent storage** |
| Data retention | ❌ Lost on reboot | ✅ **RVF vector store on Cognitum Seed** |
| Similarity search | ❌ None | ✅ **kNN queries** ("find states like this one") |
| Data integrity | ❌ None | ✅ **SHA-256 witness chain + Ed25519 signing** |
| AI integration | ❌ None | ✅ **114-tool MCP proxy** (Claude, GPT can query sensors) |
| Environmental sensors | ❌ CSI only | ✅ **+ BME280, PIR, vibration, ADC** (via Seed) |
| Feature vectors | ❌ Raw only | ✅ **8-dim normalized @ 1 Hz** (new packet 0xC5110003) |
| Security | Basic | ✅ **Bearer tokens, TLS, source filtering, NaN rejection** |
## New: 8-Dimension Feature Vector
Every second, the ESP32 sends a compact 48-byte packet summarizing what it sees:
| Dim | What it measures | Example |
|-----|------------------|---------|
| 0 | Is someone there? (presence) | 0.45 = maybe, 0.95 = definitely |
| 1 | Are they moving? (motion) | 0.0 = still, 0.87 = active |
| 2 | Breathing rate | 0.69 = 20.8 BPM (normal) |
| 3 | Heart rate | 0.75 = 90 BPM (normal) |
| 4 | Signal quality (phase variance) | Higher = more activity |
| 5 | How many people? | 0.25 = 1 person, 0.50 = 2 |
| 6 | Fall detected? | 0.0 = no, 1.0 = yes |
| 7 | Signal strength (RSSI) | 0.54 = -46 dBm (good) |
These vectors are stored on the Cognitum Seed and can be searched: *"Find the 10 most similar states to right now"* — useful for anomaly detection, pattern recognition, and environment fingerprinting.
## Architecture
```
ESP32-S3 ($9) ──UDP──> Your laptop ──HTTPS──> Cognitum Seed ($15)
WiFi CSI capture Bridge script Stores vectors forever
28 Hz raw frames Batches & validates kNN similarity search
1 Hz feature vectors NaN rejection Witness chain (proof)
1 Hz vital signs Source filtering 114-tool AI proxy
```
## How to Use
```bash
# 1. Flash firmware to ESP32-S3
python -m esptool --chip esp32s3 --port COM9 --baud 460800 \
write_flash --flash-mode dio --flash-size 8MB --flash-freq 80m \
0x0 bootloader.bin 0x8000 partition-table.bin \
0xf000 ota_data_initial.bin 0x20000 esp32-csi-node.bin
# 2. Set WiFi + target (your laptop IP)
python firmware/esp32-csi-node/provision.py --port COM9 \
--ssid "YourWiFi" --password "secret" \
--target-ip 192.168.1.20 --target-port 5006
# 3. Pair with Cognitum Seed (plug in via USB first)
curl -sk -X POST https://169.254.42.1:8443/api/v1/pair/window
curl -sk -X POST https://169.254.42.1:8443/api/v1/pair \
-H 'Content-Type: application/json' -d '{"client_name":"my-laptop"}'
# 4. Run the bridge
export SEED_TOKEN="<token-from-step-3>"
python scripts/seed_csi_bridge.py \
--seed-url https://169.254.42.1:8443 --token "$SEED_TOKEN" --validate
# 5. Check what's stored
python scripts/seed_csi_bridge.py --token "$SEED_TOKEN" --stats
```
No Cognitum Seed? The ESP32 firmware works exactly as before — all existing features (CSI streaming, vitals, presence, fall detection, mesh TDM) are unchanged. The Seed integration is additive.
Learn more: [Cognitum.one](https://cognitum.one) · [ADR-069](https://github.com/ruvnet/RuView/blob/main/docs/adr/ADR-069-cognitum-seed-csi-pipeline.md) · [User Guide](https://github.com/ruvnet/RuView/blob/main/docs/user-guide.md#cognitum-seed-integration-adr-069)
## Validation Results
| Test | Result |
|------|--------|
| Rust workspace | **1,463 passed**, 0 failed |
| Python proof | **VERDICT: PASS** |
| Firmware size | 844 KB (55% flash free) |
| Feature vectors | 1 Hz, 8-dim, all in [0.0, 1.0] |
| Vitals ↔ Features | HR delta=0.0, BR delta=0.0 |
| Seed ingest | 941 vectors, 100% kNN match |
| Witness chain | SHA-256 verified (1,325 entries) |
| Regression | **6/6 PASSED — NO REGRESSIONS** |
## Binary Hashes (SHA-256)
```
cf05de2b esp32-csi-node.bin (844 KB)
cbb8e3ba bootloader.bin (19 KB)
4c2cc4ff partition-table.bin (3 KB)
7d2c7ac4 ota_data_initial.bin (8 KB)
```
**Full Changelog**: https://github.com/ruvnet/RuView/compare/v0.5.3-esp32...v0.5.4-esp32