ruview @ v0.9.0
integrity
- size
- 60.1 MiB
- downloaded
- last checked
release notes
ADR-125 (codename APPLE-FABRIC) lands: RuView advertises itself as a HomeKit Accessory Protocol (HAP-1.1) bridge on the LAN, so HomePod (acting as Home Hub) discovers it, Apple Home becomes the operator UX, and Siri voices presence/vitals by room — with zero Home Assistant intermediary.
Validated end-to-end on real hardware (ESP32-C6 on ruv.net, no mocks/sims, 8 iters tracked live on #796).
What's new
Native Apple Home integration (ADR-125)
- HAP-1.1 bridge
RuView Sensingwith N child accessories — one per room (ADR-125 §2.1.c topology). Single pairing covers all rooms; children remain individually addressable for Siri ("is anyone in the kitchen?") and Home automations. - Three services per room:
MotionSensor(immediate movement),OccupancySensor(sustained presence — "Unknown Presence"),StatelessProgrammableSwitch(BFLD anomaly drift — "Unrecognized Activity Pattern"). ADR-125 §2.1.d semantic-event naming, never security/threat framing. - Privacy gate enforced at FIVE boundaries: HAP characteristic, HTTP
/api/v1/bfld/..., semantic-events endpoint, MCP boundary, Python BFLD gate.identity_risk_score,soul_match_probability, andrf_signature_hashnever cross any of them.
Agentic capabilities
@ruvnet/rvagent 0.1.0(npm) — published in this release window — wired through a Python sensing-server bridge so any MCP-aware agent (Claude Code, Codex, custom LLM) can consume the BFLD-gated C6 stream through the standard 12-tool catalog.- New
scripts/rvagent-mcp-consumer.py— JSON-RPC 2.0 stdio MCP client that round-trips real C6 data throughnpx -y @ruvnet/rvagent.
HomePod announcements (Shortcuts-as-glue)
scripts/macos-shortcuts/— launchd + osascript glue that triggers operator-defined Shortcuts on RuView events, routing HomePod announcements via the iCloud Home graph instead of local Bonjour (works even when the AP doesn't reflect mDNS).
SOTA path
python/src/bindings/privacy_gate.rs— PyO3 binding over the publishedwifi-densepose-bfld 0.3.0Rust crate. Verifiedcargo checkgreen; wheel-deploy is ADR-117 P5 scope.
Docker
- Multi-arch image (
amd64+linux/arm64) restored. Apple Silicondocker pull ruvnet/wifi-densepose:latestworks again (closes #794). - Image now bundles
cog-ha-matterbinary + HA-DISCO MQTT publisher.
Documentation
- New ADR:
docs/adr/ADR-125-ruview-apple-home-native-hap-bridge.md(with §2.1.c and §2.1.d decisions captured during operator review) - New user guide:
docs/user-guide-apple-homepod.md(~4,500 words) — quickstart to HomePod-announces-RuView in 5 steps - HomePod Integration badge added to
README.md
Release artifacts
- crates.io:
cog-ha-matter 0.3.0,cog-person-count 0.3.0,cog-pose-estimation 0.3.0(published earlier this session) - crates.io:
wifi-densepose-signal 0.3.1,wifi-densepose-sensing-server 0.3.1(cascade for cog-ha-matter) - npm:
@ruvnet/rvagent 0.1.0 - Docker Hub:
ruvnet/wifi-densepose:latest(multi-arch)
Deferred to future releases
- HAP-python custom characteristic JSON-loader (runtime activation of the BFLD privacy class UUID)
- ADR-117 P5 wheel build for the PyO3 BFLD binding
- AirPlay 2 voice synthesis via pyatv (blocked on operator's Nighthawk MR60 Bonjour reflector)
- P2 Rust-native HAP via the
hapcrate (closes ADR-116 §P7) - P3 Matter Controller path (awaiting matter-rs stabilization)
References
- ADR-125 — RuView ↔ Apple Home native HAP bridge
- ADR-118 — BFLD beamforming feedback layer
- ADR-124 — @ruvnet/rvagent MCP/ruvector integration
- Issue #796 — live tracking thread (8 iter close-outs)
- Issue #794 — Docker Apple Silicon pull fix (closed)
Co-Authored-By: claude-flow ruv@ruv.net
download
unix · zip
curl -fL -o v0.9.0.zip https://ratatoskr.space/pkg/ruview/v0.9.0.zip
printf '%s %s\n' '088fdcac0ca4865e23aba0ff0218c8a0270585710d12d8d93af6cc570e751899' 'v0.9.0.zip' | sha256sum -c -
windows · zip
$url = "https://ratatoskr.space/pkg/ruview/v0.9.0.zip"
$out = "v0.9.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "088fdcac0ca4865e23aba0ff0218c8a0270585710d12d8d93af6cc570e751899") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v0.9.0.tar.gz https://ratatoskr.space/pkg/ruview/v0.9.0.tar.gz
printf '%s %s\n' 'b11fcd00e358163665112c18f835fa5aef608b958b5288fe884ea085a6cd5acb' 'v0.9.0.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "https://ratatoskr.space/pkg/ruview/v0.9.0.tar.gz"
$out = "v0.9.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "b11fcd00e358163665112c18f835fa5aef608b958b5288fe884ea085a6cd5acb") { throw "sha256 mismatch" }
download via yggdrasil mesh
unix · zip
curl -fL -o v0.9.0.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.9.0.zip
printf '%s %s\n' '088fdcac0ca4865e23aba0ff0218c8a0270585710d12d8d93af6cc570e751899' 'v0.9.0.zip' | sha256sum -c -
windows · zip
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.9.0.zip"
$out = "v0.9.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "088fdcac0ca4865e23aba0ff0218c8a0270585710d12d8d93af6cc570e751899") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v0.9.0.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.9.0.tar.gz
printf '%s %s\n' 'b11fcd00e358163665112c18f835fa5aef608b958b5288fe884ea085a6cd5acb' 'v0.9.0.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.9.0.tar.gz"
$out = "v0.9.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "b11fcd00e358163665112c18f835fa5aef608b958b5288fe884ea085a6cd5acb") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v0.9.0.zip | zip | 60.1 MiB |
blake3-24 9200753dbe3a7ec74b1d114b9d13c82aad0d4e54395bc15b
sha256 088fdcac0ca4865e23aba0ff0218c8a0270585710d12d8d93af6cc570e751899
sha1 3c1c0b68eda05f65e9a32391dd7b12ff61f63317
|
| v0.9.0.tar.gz | tar.gz | 58.5 MiB |
blake3-24 8251a5caea235688598cb301555b754dacdd934689173289
sha256 b11fcd00e358163665112c18f835fa5aef608b958b5288fe884ea085a6cd5acb
sha1 cfd0b72ba2e6542759d1bd303116f008cee7f40d
|
install
bazel
http_archive(
name = "ruview",
urls = ["https://ratatoskr.space/pkg/ruview/v0.9.0.tar.gz"],
integrity = "sha256-sR/NAONYFjZlESwY+DX6Wu9gi5WLUoj+iE6ghabNWss=",
strip_prefix = "ruview-v0.9.0",
)
zig
.url = "https://ratatoskr.space/pkg/ruview/v0.9.0.tar.gz",
install via yggdrasil mesh
bazel
http_archive(
name = "ruview",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.9.0.tar.gz"],
integrity = "sha256-sR/NAONYFjZlESwY+DX6Wu9gi5WLUoj+iE6ghabNWss=",
strip_prefix = "ruview-v0.9.0",
)
zig
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.9.0.tar.gz",