---
name: ruview-rvagent
description: Explore and prototype rvAgent + RVF integration for RuView agentic flows. Use when working on cross-cog coordination, operator-facing agents reading BFLD / pose / vitals events live, or persisting agent state alongside sensing data in the same RVF container.
---

# RuView rvAgent + RVF integration

Surface area for wiring `vendor/ruvector/crates/rvAgent/` into RuView so the existing sensing pipeline becomes the substrate an agentic flow can read, reason about, and respond to.

## Quickstart — published MCP server (`@ruvnet/rvagent` v0.1.0)

Installing this plugin registers `@ruvnet/rvagent` as an MCP server. On activation, Claude Code spawns `npx -y @ruvnet/rvagent` and exposes its tools directly:

| Tool | Purpose |
|------|---------|
| `bfld_last_scan` | Most recent BFLD event from the sensing server |
| `bfld_subscribe` | Stream BFLD events for a window |
| `presence_now` | Current room-level presence state |
| `vitals_get_breathing` | Latest breathing-rate sample |
| `vitals_get_heart_rate` | Latest heart-rate sample |
| `vitals_get_all` | Composite vitals snapshot |
| `vitals_fetch` | Historical vitals window |

Override the sensing-server URL via the `RVAGENT_SENSING_URL` env var (default `http://localhost:3000`). Source lives at `tools/ruview-mcp/`; ADR-124 captures the design.

Smoke-check the wiring: `npm view @ruvnet/rvagent version` should return `0.1.0` (or newer).

## When to use this skill

- "I want an agent that reacts to BFLD presence in the kitchen and pages the carer."
- "I need cog-pose-estimation and cog-bfld to negotiate before publishing a synthesized event."
- "Can the witness chain attest both the sensing event AND the agent decision in one RVF blob?"
- "How do we keep rvAgent's tool outputs class-3 compliant when the source BFLD event is Restricted?"

## Key surfaces

| Surface | File | Notes |
|---------|------|-------|
| rvAgent core | `vendor/ruvector/crates/rvAgent/rvagent-core/src/agi_container.rs` (627 LOC) | RVF-compatible state container |
| rvAgent middleware | `vendor/ruvector/crates/rvAgent/rvagent-middleware/` | Witness, sanitizer, SONA, HNSW |
| Agent personas | `vendor/ruvector/crates/rvAgent/.ruv/agents/rvagent-{queen,coder,tester,security}.md` | Reference patterns |
| RVF container | `v2/crates/wifi-densepose-sensing-server/src/rvf_container.rs` | Add `SEG_AGENT_STATE`, `SEG_DECISION` |
| BFLD event | `v2/crates/wifi-densepose-bfld/src/event.rs` | `BfldEvent::to_json()` → `ToolOutput` |
| BFLD pipeline handle | `v2/crates/wifi-densepose-bfld/src/pipeline_handle.rs` | `BfldPipelineHandle::send` |

## Research dossier

Full integration analysis lives at `docs/research/rvagent-rvf-integration/README.md`.

Three shippable touchpoints, each independent:

1. **RVF wire**: two new segment types (`SEG_AGENT_STATE = 0x08`, `SEG_DECISION = 0x09`) let rvAgent sessions interleave with RuView sensing sessions in the same blob.
2. **Tool surface**: `BfldEvent → ToolOutput` shim turns BFLD events into agent context with no new IPC.
3. **Cog subagents**: `cog-pose-estimation` / `cog-person-count` / `cog-ha-matter` / `cog-bfld` register as rvAgent subagents under a queen-agent router.

## Open questions

- Workspace inclusion of `vendor/ruvector/crates/rvAgent/` (path dep vs published crate)
- Sync ↔ async adapter (BFLD `Publish` is sync, rvAgent backends are tokio)
- Privacy-class composition (does rvAgent's sanitizer consume `PrivacyClass`?)
- Soul Signature ↔ `SoulMatchOracle` bridge
- Whether `BfldPipelineHandle::send` lands as a public MCP tool via `rvagent-mcp`

## Next decision

ADR-124 (proposed) — "rvAgent + RVF integration for RuView agentic flows" — would capture segment assignments, cog-subagent contract, and the privacy-class composition rule. Land before scaffolding `v2/crates/wifi-densepose-agent`.
