ruvector/crates/mcp-brain-server/README.md
rUv aaea9ee242 feat(rvAgent): Complete DeepAgents Rust Conversion (ADR-093 → ADR-103) (#262)
* feat: ADR-093 through ADR-102 — DeepAgents complete Rust conversion planning

10 Architecture Decision Records for 100% fidelity port of
langchain-ai/deepagents (Python) to Rust within the RuVector workspace:

- ADR-093: Master overview and architecture mapping
- ADR-094: Backend protocol traits and 5 implementations
- ADR-095: Middleware pipeline with 9 middleware types
- ADR-096: Tool system with 8 tool implementations
- ADR-097: SubAgent orchestration and state isolation
- ADR-098: Memory, Skills & Summarization middleware
- ADR-099: CLI (ratatui) & ACP server (axum) conversion
- ADR-100: RVF integration and 9-crate workspace structure
- ADR-101: Testing strategy with 80+ test file mappings
- ADR-102: 10-phase, 20-week implementation roadmap (~26k LoC)

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat: ADR-103 review amendments + security audit for DeepAgents conversion

Synthesizes findings from three parallel review agents:
- Performance: 25 findings (7 P0) — typed AgentState, parallel tools, arena allocators
- RVF Capability: 17 integration points — witness chains, SONA, HNSW, COW state
- Security: 30 findings (5 Critical) — TOCTOU, shell hardening, prompt injection

Key amendments: typed AgentState replaces HashMap<String,Value>, parallel tool
execution via JoinSet, atomic path resolution, env sanitization, ACP auth,
witness chain middleware, resource budget enforcement, SONA adaptive learning.

Timeline extended from 20 to 22 weeks with new Phase 11 (Adaptive).

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat: rvAgent scaffold — 8 crates with initial source files (swarm WIP)

Rebrand DeepAgents to rvAgent under crates/rvAgent/ subfolder.
15-agent swarm implementing in parallel:
- rvagent-core: typed AgentState, config, models, graph, messages
- rvagent-backends: protocol, filesystem, shell, composite, state, unicode security
- rvagent-middleware: pipeline with 11 middlewares
- rvagent-tools: 9 tools with enum dispatch
- rvagent-subagents: spec, builder, orchestration
- rvagent-cli: TUI terminal agent
- rvagent-acp: ACP server with auth
- rvagent-wasm: WASM bindings

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): 82 source files from 15-agent swarm — core + backends + middleware + tools + CLI + ACP + WASM

Swarm progress:
- rvagent-core: 12 src files (state, config, graph, messages, models, arena, parallel, metrics, string_pool, prompt, error)
- rvagent-backends: 8 src files (protocol, filesystem, shell, composite, state, utils, unicode_security, security)
- rvagent-middleware: 12 src files (lib, todolist, filesystem, subagents, summarization, memory, skills, patch_tool_calls, prompt_caching, hitl, tool_sanitizer, witness, utils)
- rvagent-tools: 10 src files (lib, ls, read_file, write_file, edit_file, glob, grep, execute, write_todos, task)
- rvagent-subagents: 5 src files (lib, builder, prompts, orchestrator, validator)
- rvagent-cli: 6 src files (main, app, session, tui, display, mcp)
- rvagent-acp: 6 src files (main, server, auth, agent, types, lib)
- rvagent-wasm: 4 src files (lib, backends, tools, bridge)
- Tests: 14 test files across crates
- Benchmarks: 4 criterion bench files

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): additional files from swarm agents — store backend, model fixes, bench updates

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): test suites + security tests + tool refinements from swarm

- 38 unit/integration tests for core+backends (all passing)
- Security test suite for backends
- Tool bench and lib refinements

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* fix(rvAgent): agent refinements — ACP server, backend bench, lib exports

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): core crate finalized (83 tests), tool refinements, middleware bench

- rvagent-core: 83 tests passing, typed AgentState with Arc, SystemPromptBuilder
- Tool implementations refined (ls, read, write, edit, grep, execute)
- Middleware bench updated
- ACP server refinements

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* fix(rvAgent): swarm agent refinements — auth, filesystem, prompt caching

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): integration tests (23 passing) + agent refinements

- Core integration: 8 tests (graph flow, tool calls, parallel, COW state)
- Subagents integration: 8 tests (spawn, isolation, rate limits, parallel)
- ACP integration: 7 tests (health, auth, session lifecycle)
- CLI integration: 9 tests (help, version, session roundtrip)
- Refinements to ACP agent/types, composite backend, HITL, WASM

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): subagents finalized (55 tests), witness middleware, composite fixes

- Subagent orchestrator with JoinSet parallel execution
- Prompt injection detector with 25 patterns across 5 categories
- Result validator with configurable limits (ADR-103 C8)
- Witness middleware, ACP server, composite backend refinements

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): middleware tests, tool sanitizer, ACP lib, utils refinements

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): criterion benchmarks finalized, backend lib + CLI TUI refinements

- 4 criterion benchmark suites (state, backends, tools, middleware)
- Benchmarks cover: Arc clone vs deep clone, line formatting, grep perf,
  unicode detection, tool dispatch, parallel vs sequential, middleware pipeline
- Backend lib.rs and CLI TUI refinements from remaining agents

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): security tests, tool tests, middleware filesystem, TUI updates

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): ACP server finalized (65 tests), tool tests, middleware subagents

- ACP: auth middleware, rate limiter, session management, 6 routes
- New read_file test suite
- Middleware subagents and CLI TUI refinements

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): edit_file tests, CLI display + TUI refinements

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): backends finalized (123 tests), grep/execute tests, summarization

- Backends: 94 unit + 29 integration tests, all passing
- Full security hardening: O_NOFOLLOW, env sanitization, virtual_mode=true
- Unicode security with 36 confusable pairs, BiDi detection
- New grep and execute test suites
- Summarization middleware refinements

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* fix(rvAgent): CLI TUI + tools lib refinements from agents

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): security hardening finalized (77 tests), memory + ls refinements

- Security module: env sanitization, path validation, injection detection,
  YAML bomb protection, rate tracking, heredoc safety, tool call ID validation
- 42 backend security tests + 25 middleware security tests
- All SEC-001 through SEC-022 findings addressed
- Memory middleware and ls tool refinements

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): middleware pipeline tests, write_file refinements

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): CLI finalized (39 tests), edit_file refinements

- CLI: clap args, TUI with ratatui, session management with encryption
- MCP client integration stubs
- Display with markdown rendering, tool call formatting
- 11-middleware pipeline ordering per ADR-103

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): documentation, execute tool refinement, glob_tool cleanup

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): documentation complete, tool + middleware refinements

- README, architecture, security, API reference, getting started guides
- All docs derived from ADR-093 through ADR-103 and source code
- Middleware bench, execute tool, grep tool refinements

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): build verified — 679 tests passing across all 8 crates

All crates compile cleanly, all tests pass:
- rvagent-core: 105 tests (state, config, graph, messages, models, arena, parallel, metrics)
- rvagent-backends: 132 tests (filesystem, shell, composite, state, store, unicode, security)
- rvagent-middleware: 55 tests (pipeline, security, summarization)
- rvagent-tools: 25 tests (dispatch, ls, read, edit, grep, execute)
- rvagent-subagents: 30 tests (compile, isolation, orchestrator, validator)
- rvagent-cli: 39 tests (args, session, display, MCP, TUI)
- rvagent-acp: 65 tests (auth, rate limit, sessions, types)
- rvagent-wasm: 34 tests (agent, backends, tools, bridge)

Fixed subagent integration test state isolation expectations.

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): summarization middleware tests from late agent completion

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): final test suites — orchestrator, security, summarization tests

All 15 swarm agents complete. Final integration tests:
- Orchestrator: compile, isolation, validation, injection detection, parallel spawn
- Security middleware: sanitizer, witness, skill validation, memory trust
- Summarization: compaction triggers, UUID filenames, permissions

688+ tests passing, 0 failures across all 8 crates.

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* perf(rvAgent): deep review — eliminate warnings, optimize hot paths

- Fix 19 compiler warnings across rvagent-cli and rvagent-subagents
  (dead code annotations, unused imports, unused variables)
- Optimize witness hash: pre-allocated hex buffer (no 32 intermediate Strings)
- Optimize injection detection: pre-lowercased markers (no per-call allocation)
- Add #[inline] to hot-path functions: Message::content, has_tool_calls,
  AgentState::message_count, is_image_file
- Zero warnings, 688+ tests passing across all 8 crates

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* perf(rvagent-middleware): optimize SHA3-256 hex encoding

Use pre-allocated buffer with fmt::Write instead of 32 intermediate
String allocations via iterator map/collect.

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): add MCP tools/resources, topology routing, skills bridge

New rvagent-mcp crate (9th crate) with full MCP implementation:
- McpToolRegistry: exposes all 9 built-in tools as MCP tools
- McpResourceProvider: agent state, skills catalog, topology as resources
- TopologyRouter: hierarchical, mesh, adaptive, standalone strategies
- SkillsBridge: cross-platform skills (Claude Code + Codex compatibility)
- McpServer: JSON-RPC 2.0 request dispatch
- Transport layer: stdio, SSE, memory transports

MCP bridge middleware in rvagent-middleware for pipeline integration.

ADR-104: Architecture for MCP tools, resources, and topology routing
ADR-105: Implementation details and protocol specification

893 tests passing across all 9 crates (up from 235).
60+ new MCP/topology/stress tests including:
- Topology routing across all 4 strategies
- 100-node stress tests with churn patterns
- Property-based serde roundtrip validation
- Cross-architecture consistency tests

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* test(rvagent-mcp): update stress tests with topology and skills coverage

Add topology scaling, skills roundtrip, and resource stress tests
alongside the existing registry and protocol stress tests.

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* test(rvagent-mcp): add 96 integration tests across all topologies

Deep integration tests covering MCP protocol, topology routing
(hierarchical, mesh, adaptive, standalone), skills bridge, transport,
and cross-architecture consistency.

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvagent-middleware): add McpToolCallOrigin for transport tracking

Adds origin tracking struct to MCP bridge middleware for identifying
which transport and client initiated each tool call.

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* Add ADR-106: RuVix kernel integration with RVF

Documents the current uni-directional dependency between ruvix and rvf,
identifies type divergence and duplicate implementations, and proposes a
shared-types bridge architecture with feature-gated integration layers.

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): deep ADR-106 RuVix/RVF integration across all layers

Implements the shared-types bridge architecture from ADR-106:

Layer 1 (rvagent-core/rvf_bridge.rs):
- Shared wire types: RvfMountHandle, RvfComponentId, RvfVerifyStatus, WitTypeId
- RVF witness header with 64-byte wire-format serialization
- RvfManifest/RvfManifestEntry for package discovery
- MountTable for tracking mounted RVF packages
- RvfBridgeConfig integrated into RvAgentConfig

Layer 2 (rvagent-middleware/rvf_manifest.rs):
- RvfManifestMiddleware for package discovery and tool injection
- Manifest-driven tool registration (rvf:<tool_name> namespace)
- Package state injection into agent extensions
- Signature verification delegation point (rvf-crypto ready)

Layer 3 (rvagent-backends/rvf_store.rs):
- RvfStoreBackend wrapping any Backend with rvf:// path routing
- Read-only RVF package access via mount table
- Shared mount table across backend instances
- Fallthrough to inner backend for non-RVF operations

Phase 4 (rvagent-middleware/witness.rs):
- WitnessBuilder.with_rvf() for RVF wire-format witness bundles
- add_rvf_tool_call() with latency, policy check, cost tracking
- build_rvf_header() producing rvf-types-compatible WitnessHeader
- to_rvf_entries() converting to RvfToolCallEntry format
- Full backward compatibility with existing witness chain

53 new tests, all 160 tests passing.

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* perf(rvAgent): benchmark suite and optimizations for ADR-106 integration

Add Criterion benchmarks for rvf_bridge (witness header serialization,
mount table operations, manifest filtering, tool call entry serde) and
witness middleware (hash computation, builder throughput, RVF entry
conversion).

Optimizations:
- MountTable: O(1) lookups via HashMap indices by handle ID and package
  name (was O(n) linear scan). New get_by_name() method.
- compute_arguments_hash: LUT-based hex encoding (eliminates 32 write!
  calls per hash invocation)
- truncate_hash_to_8: zero-allocation inline hex decoder (was allocating
  intermediate Vec)
- RvfStoreBackend: ls_info/read_file use O(1) get_by_name instead of
  linear scan through mount table entries
- all_tools: filter entries inline instead of calling manifest.tools()
  which allocates an intermediate Vec

Benchmark results:
- Witness header wire-format roundtrip: 6.5ns (215x faster than serde JSON)
- MountTable get by handle: 12ns (O(1))
- MountTable find by name: 2.8ns (O(1))
- Hash computation (small args): 511ns
- 50 RVF entries + header build: 155µs

All 348 tests pass across rvagent-core, rvagent-backends, rvagent-middleware.

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* feat(rvAgent): implement all critical improvements — 825 tests passing

Major improvements across all 8 crates:

1. Anthropic LLM backend (rvagent-backends/src/anthropic.rs)
   - Real HTTP client calling Anthropic Messages API via reqwest
   - Message conversion between rvAgent types and API format
   - Retry with exponential backoff (3 retries on 429/500/502/503)
   - API key resolution from env vars or files

2. CLI real agent execution (rvagent-cli/src/app.rs)
   - invoke_agent() now uses AgentGraph with real model calls
   - CliToolExecutor dispatches to rvagent-tools
   - Falls back to StubModel when no API key is configured
   - System prompt integration

3. MCP stdio transport (rvagent-cli/src/mcp.rs)
   - Real subprocess spawning via tokio::process::Command
   - JSON-RPC initialize handshake and tools/list discovery
   - Real tool call execution via JSON-RPC

4. Re-enabled disabled dependencies
   - rvagent-subagents now links backends, middleware, tools
   - rvagent-acp now links all sister crates

5. AES-256-GCM session encryption (rvagent-cli/src/session.rs)
   - Real encryption replacing plaintext stub
   - V1 format backward compatibility
   - Key derivation from RVAGENT_SESSION_KEY env var

6. ACP server real prompt handling (rvagent-acp/src/agent.rs)
   - Wired to AgentGraph for real execution

7. Retry middleware (rvagent-middleware/src/retry.rs)
   - Exponential backoff with configurable retries
   - Integrates into middleware pipeline

8. Streaming support (rvagent-core/src/models.rs)
   - StreamChunk, StreamUsage types
   - StreamingChatModel trait

9. Error handling fixes
   - Poisoned mutex handling in auth.rs
   - Witness policy_hash computed from governance mode

10. Test coverage: 148 → 825 tests (+677)
    - New test files for WriteFile, WriteTodos, Glob tools
    - New tests for MCP bridge, prompt caching, HITL middleware
    - Anthropic client mock server tests

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* test(rvAgent): add live Anthropic API integration test

Skips automatically when ANTHROPIC_API_KEY is not set.
Run with: ANTHROPIC_API_KEY=sk-... cargo test -p rvagent-backends --test live_anthropic_test

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* Add RuVector V2 research series: 50-year forward vision from Cognitum.one

8 research documents exploring how the existing RuVector/rvAgent stack
extends from coherence-gated AI agents to planetary-scale infrastructure:

- 00: Master vision — the Cognitum thesis (coherence > intelligence)
- 01: Cognitive infrastructure — planetary nervous system
- 02: Autonomous systems — robotics to deep space
- 03: Scientific discovery — materials, medicine, physics
- 04: Economic systems — finance, supply chains, governance
- 05: Human augmentation — BCI, prosthetics, education
- 06: Planetary defense — climate, security, resilience
- 07: Implementation roadmap — 12-month sprint to 2075

Every claim traces to existing crates: prime-radiant, cognitum-gate-kernel,
ruvector-nervous-system, ruvector-hyperbolic-hnsw, ruvector-gnn, rvAgent,
ruqu-core, ruvector-mincut, and 90+ others.

https://claude.ai/code/session_014KXn8m21w3WDih3xpTY1Tr

* fix(ruvllm-cli): add PiQ3/PiQ2 memory estimate support

Add missing match arms for PiQ3 and PiQ2 quantization formats in
print_memory_estimates function. These pi-constant quantization formats
from ADR-090 were missing in the TargetFormat match statement.

- PiQ3: 3.0625 bits/weight (~75% of Q4_K_M storage)
- PiQ2: 2.0625 bits/weight (~50% of Q4_K_M storage)
- Add MemoryEstimate import for explicit type annotation

Co-Authored-By: claude-flow <ruv@ruv.net>

* docs: add collapsed sections to ruvllm and mcp-brain READMEs

- ruvllm: Wrap Performance, ANE, mistral-rs, LoRA, and Evaluation sections in <details>
- mcp-brain: Wrap REST API, Feature Flags, and Deployment sections in <details>
- mcp-brain: Add Quick Start section with npx ruvector brain examples

Matches root README style with progressive disclosure.

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat(rvAgent): add .ruv RVF-integrated agent framework

- Add 4 specialized agent templates (queen, coder, tester, security)
- Add RVF manifest with cognitive container configuration
- Add hooks integration (pre-task, post-task, security-scan)
- Add manifest loader script for environment initialization
- Configure 3-tier model routing (WASM → Haiku → Sonnet/Opus)
- Enable SONA learning with 0.05ms adaptation threshold
- All 725 rvAgent tests passing

Agent capabilities:
- rvagent-queen: Swarm orchestration, consensus, resource allocation
- rvagent-coder: Code generation, refactoring, witness attestation
- rvagent-tester: TDD London School, coverage analysis, mock generation
- rvagent-security: AIMD threat detection, PII scanning, CVE auditing

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat(rvAgent): wire AnthropicClient and enable live API calls

- Add CliModel enum to support multiple model backends (Stub, Anthropic)
- Wire AnthropicClient in app.rs for real API calls when key is available
- Add native-tls feature to reqwest for HTTPS support
- Fix request body serialization with explicit JSON stringify
- Add example demo scripts for coder, tester, security agents

Verified working:
- Code generation (Fibonacci with memoization)
- TDD test generation
- Security audit with vulnerability detection
- Architecture design

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat: RuVocal UI thinking blocks + MCP brain delta fixes + rvAgent security

UI/RuVocal:
- Add thinking block collapse regex (THINK_BLOCK_REGEX) to ChatMessage.svelte
- Integrate FoundationBackground animated canvas
- Default to dark mode across app
- Update mcpExamples to RuVector/π Brain focused queries

MCP Brain Server:
- Fix brain_page_delta: add witness_hash field with server-side fallback
- Fix evidence_links: transform simple strings to EvidenceLink structs
- Add voice.rs, optimizer.rs, symbolic.rs modules
- Deploy to Cloud Run (ruvbrain-00092-npp)

rvAgent:
- Enhanced sandbox path security and restrictions
- Add unicode_security middleware
- Add CRDT merge and result validator
- Add AGI container, budget, session crypto modules
- Add swarm examples and Gemini backend
- Security tests and validation

Docs:
- ADR-107 through ADR-111
- Security docs (sandbox, session encryption)
- Implementation summaries

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat(ruvocal): add WASM MCP tools with server-side virtual filesystem

- Add default WASM file tools (read_file, write_file, list_files, delete_file, edit_file)
  that are always available without client-side WASM setup
- Implement server-side in-memory virtual filesystem for tool execution
- Update toolInvocation.ts to actually execute WASM tools instead of returning placeholder
- Add hasActiveToolsSelection check for WASM tools in toolsRoute.ts
- Force MCP flow when WASM tools are present regardless of router decision
- Add WASM MCP server store with IndexedDB persistence
- Add GalleryPanel component for RVF template selection
- Clean up excessive debug logging

The WASM file tools now execute on an in-memory virtual filesystem
on the server, enabling file operations within conversations without
requiring any client-side WASM module setup.

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat(ruvocal): implement complete rvAgent WASM MCP toolset

- Add full rvAgent implementation with 15 server-side tools:
  - File operations (5): read, write, list, delete, edit
  - Search tools (2): grep, glob
  - Task management (3): todo_add, todo_list, todo_complete
  - Memory tools (2): memory_store, memory_search (HNSW-indexed)
  - Witness chain (2): witness_log, witness_verify (cryptographic audit)
  - RVF Gallery (3): gallery_list, gallery_load, gallery_search

- Enhance wasm/index.ts with 8 comprehensive agent templates:
  - Development Agent: Full-featured with 8 tools and 4 skills
  - Research Agent: Memory-enhanced with HNSW search
  - Security Agent: 15 built-in security controls
  - Multi-Agent Orchestrator: CRDT-based state merging
  - SONA Learning Agent: 3-loop self-improvement
  - AGI Container Builder: SHA3-256 verified packages
  - Witness Chain Auditor: Cryptographic compliance
  - Minimal Agent: Lightweight file operations

- Each template includes tools, prompts, skills, MCP tools, and capabilities
- Witness chain provides immutable audit trail for all tool calls
- Server-side state persists across conversation turns

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat(ruvocal): enhance MCP tool descriptions and sidebar sorting

- Improve all 15 WASM MCP tool descriptions with comprehensive guidance
  - Add WHEN TO USE sections for clear usage context
  - Add detailed PARAMETERS documentation with examples
  - Add RETURNS section documenting output format
  - Add EXAMPLES showing typical usage patterns
  - Add IMPORTANT notes and TIPS for edge cases

- Fix NavMenu sidebar conversation sorting
  - Sort conversations by newest first within each group (today/week/month/older)
  - Apply sorting to paginated results when loading more conversations

- Add comprehensive test suite (48 tests)
  - File operations: read, write, list, delete, edit
  - Search tools: grep, glob with pattern matching
  - Task management: todo_add, todo_list, todo_complete
  - Memory tools: memory_store, memory_search with tags
  - Witness chain: witness_log, witness_verify with hash verification
  - RVF gallery: gallery_list, gallery_load, gallery_search

Co-Authored-By: claude-flow <ruv@ruv.net>

* fix(ruvocal): improve WASM MCP tool descriptions for LLM guidance

- Add REQUIRED/OPTIONAL labels to all parameters
- Include concrete examples for every tool
- Clear parameter descriptions with expected formats
- Better guidance on when to use each tool

Tools updated:
- File ops: read_file, write_file, list_files, delete_file, edit_file
- Search: grep, glob
- Tasks: todo_add, todo_list, todo_complete
- Memory: memory_store, memory_search
- Audit: witness_log, witness_verify
- Gallery: gallery_list, gallery_load, gallery_search

Co-Authored-By: claude-flow <ruv@ruv.net>

* fix(ruvocal): add explicit parameter guidance to prevent empty tool calls

- Add TOOL PARAMETERS guidance to system prompt
  - NEVER call tools with empty {} if parameters required
  - Check inputSchema for required fields
  - Use example values as guidance

- Improve error messages with examples
  - Every validation error now includes correct usage example
  - File not found errors show available files
  - Template not found errors list available options
  - Task not found errors show available task IDs

- Updated all 15 WASM tools:
  - read_file, write_file, delete_file, edit_file
  - grep, glob
  - todo_add, todo_complete
  - memory_store, memory_search
  - witness_log
  - gallery_load, gallery_search

Co-Authored-By: claude-flow <ruv@ruv.net>

* fix(ruvocal): intercept empty tool args and auto-fill sensible defaults

- Add autoFillMissingParams() to intercept empty {} requests
- Auto-fill gallery_load with "development-agent" when id missing
- Auto-fill read_file with first available file when path missing
- Auto-fill todo_complete with first incomplete task when id missing
- Auto-fill memory_search with "*" wildcard for empty queries
- Simplify tool descriptions to ultra-concise copyable examples
- Add enum constraints for gallery template IDs
- Add additionalProperties: false to all schemas

This prevents LLM from failing on empty argument calls by providing
reasonable defaults based on available context.

Co-Authored-By: claude-flow <ruv@ruv.net>

* fix(ruvocal): add auto-fill feedback to teach LLM proper arg passing

When parameters are auto-filled, include feedback in the result:
"[AUTO-FILLED: id="development-agent". Next time pass your own values,
 e.g. gallery_load({id: "development-agent"})]"

This teaches the LLM to pass arguments correctly on subsequent calls.

Co-Authored-By: claude-flow <ruv@ruv.net>

* fix(ruvocal): use function signature format for tool descriptions

Change tool descriptions to function signature style that models
understand better:

  gallery_search(query: string) → Search templates by keyword.
  Arguments: {"query": "search_term"}
  Example: {"query": "security"}

This format:
- Shows parameter names and types in signature
- Labels the arguments JSON clearly
- Provides concrete example
- Removes verbose instructions

Also adds feedback notice when parameters are auto-filled so model
learns correct format from results.

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat(ruvocal): add rvf_help guidance tool and RVF context

- Add rvf_help() tool that explains the RVF agent environment
- Supports topic filter: files, memory, tasks, witness, gallery
- Add RVF context to system prompt when WASM tools present
- Explains what "run in RVF" means
- Lists available gallery templates with descriptions

Model can now call rvf_help() first to understand capabilities.

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat(ruvocal): add comprehensive system_guidance tool for all MCP tools

- Rename rvf_help to system_guidance (kept alias for compatibility)
- Documents ALL available tools including π Brain and search tools
- Filter by category: files, memory, tasks, witness, gallery, brain, search
- Get specific tool help: system_guidance({"tool": "brain_search"})
- Shows exact JSON format examples for each tool
- Includes tips on proper parameter passing

Model should call system_guidance() first when unsure about capabilities.

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat(ruvocal): add system_guidance tool to WASM UI panel

- Add system_guidance as first tool in tools/list response
- Shows 🔮 emoji to make it prominent
- Supports tool and category filters
- Add handler with comprehensive documentation for all tools
- Groups by category: files, memory, tasks, gallery, witness, brain

Now visible in Available Tools panel for user guidance.

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat(ruvocal): add anti-repetition rules and comprehensive tool examples

- Add CRITICAL RULES - AVOID REPETITION section to system prompt
- Add TOOL SEQUENCING patterns (list_files → read_file → analyze)
- Add AVOID THESE PATTERNS with explicit  examples
- Expand system_guidance with practical/advanced/exotic examples for each tool
- Add workflows category showing multi-tool patterns
- Improve tool documentation with required/optional parameter clarity

Co-Authored-By: claude-flow <ruv@ruv.net>

* feat(rvAgent): MCP server, WASM gallery, and RVF tools integration

rvagent-mcp:
- Add groups.rs for tool group management
- Add main.rs for standalone MCP server binary
- Update transport and integration tests

rvagent-wasm:
- Add gallery.rs for RVF app gallery support
- Add mcp.rs for MCP tool handlers
- Add rvf.rs for RuVector Format operations
- Update backends for WASM compatibility

Documentation:
- Update ADR-107 through ADR-111
- Add ADR-112: rvAgent MCP Server
- Add ADR-113: RVF App Gallery (RuVix Applications)
- Add ADR-114: RuVector Core Hash Placeholders

RuVocal:
- Add compiled WASM artifacts for browser integration

Co-Authored-By: claude-flow <ruv@ruv.net>

* fix(ruvocal): add wasmTools and autopilotMaxSteps to MessageUpdateRequestOptions

Co-Authored-By: claude-flow <ruv@ruv.net>

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Reuven <cohen@ruv-mac-mini.local>
2026-03-16 09:52:32 -04:00

15 KiB

mcp-brain-server

Cloud Run backend for the RuVector Shared Brain at π.ruv.io.

Axum REST API with Firestore persistence, GCS blob storage, and a full cognitive stack: SONA learning, GWT attention, temporal delta tracking, meta-learning exploration, and Midstream real-time analysis.

Quick Start

# Health check (no auth)
curl https://pi.ruv.io/v1/health

# Share a memory via CLI
npx ruvector brain share --category pattern --title "Auth Pattern" --content "JWT with refresh tokens"

# Search memories
npx ruvector brain search "authentication"

# Or use curl directly
curl -X POST https://pi.ruv.io/v1/memories \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"category":"pattern","title":"My Pattern","content":"Details...","tags":["rust"]}'

Architecture

Client (mcp-brain / npx ruvector / curl)
    │
    ▼
┌─────────────────────────────────────────────┐
│  mcp-brain-server (axum)                    │
│  ├── auth.rs       Bearer token auth        │
│  ├── routes.rs     REST handlers            │
│  ├── store.rs      Firestore + in-memory    │
│  ├── gcs.rs        GCS blob storage         │
│  ├── graph.rs      Knowledge graph + PPR    │
│  ├── ranking.rs    Attention-based ranking   │
│  ├── embeddings.rs RuvLLM (Hash + RLM)      │
│  ├── verify.rs     PII strip, witness chain │
│  ├── pipeline.rs   RVF container builder    │
│  ├── midstream.rs  Midstream platform       │
│  ├── cognitive.rs  Cognitive engine          │
│  ├── voice.rs      Internal voice (ADR-110)  │
│  ├── symbolic.rs   Neural-symbolic bridge    │
│  ├── optimizer.rs  Gemini Flash optimizer    │
│  ├── drift.rs      Drift monitoring          │
│  ├── reputation.rs Multi-factor reputation   │
│  ├── aggregate.rs  Byzantine aggregation     │
│  └── rate_limit.rs Per-contributor limits    │
└─────────────────────────────────────────────┘
    │
    ▼
┌─────────────┐  ┌─────────────┐
│  Firestore  │  │  GCS Bucket │
│  (memories, │  │  (.rvf blobs│
│   contrib,  │  │   WASM bins)│
│   votes)    │  │             │
└─────────────┘  └─────────────┘
📡 REST API Reference (30+ endpoints)

All endpoints under /v1/ require Authorization: Bearer <key> except /v1/health and /v1/challenge.

Core Endpoints

Method Path Auth Description
GET /v1/health No Health check (status, version, uptime)
GET /v1/challenge No Issue a nonce for replay protection
POST /v1/memories Yes Share a memory (PII-stripped, embedded, witnessed)
GET /v1/memories/search?q=... Yes Semantic search with hybrid ranking
GET /v1/memories/list Yes List memories by category
GET /v1/memories/:id Yes Get memory with full provenance
POST /v1/memories/:id/vote Yes Upvote/downvote (Bayesian quality)
DELETE /v1/memories/:id Yes Delete own contribution
GET /v1/status Yes Full system diagnostics

Knowledge Graph

Method Path Auth Description
POST /v1/transfer Yes Cross-domain transfer learning
GET /v1/drift Yes Knowledge drift report
GET /v1/partition Yes MinCut graph partitioning

Brainpedia (ADR-062)

Method Path Auth Description
POST /v1/pages Yes Create a Draft page
GET /v1/pages/:id Yes Get page with delta log
POST /v1/pages/:id/deltas Yes Submit a delta (correction/extension)
GET /v1/pages/:id/deltas Yes List page deltas
POST /v1/pages/:id/evidence Yes Add verifiable evidence
POST /v1/pages/:id/promote Yes Promote Draft to Canonical

WASM Executable Nodes (ADR-063)

Method Path Auth Description
GET /v1/nodes Yes List published nodes
POST /v1/nodes Yes Publish a WASM node
GET /v1/nodes/:id Yes Get node metadata
GET /v1/nodes/:id/wasm Yes Download WASM binary
POST /v1/nodes/:id/revoke Yes Revoke a node

Federated LoRA (ADR-068)

Method Path Auth Description
GET /v1/lora/latest No Get consensus LoRA weights
POST /v1/lora/submit Yes Submit session LoRA weights
GET /v1/training/preferences Yes DPO preference pairs

AGI Diagnostics (ADR-076)

Method Path Auth Description
GET /v1/sona/stats Yes SONA learning engine stats
GET /v1/temporal Yes Temporal delta tracking
GET /v1/explore Yes Meta-learning diagnostics

Midstream Platform (ADR-077)

Method Path Auth Description
GET /v1/midstream Yes Midstream platform diagnostics

Cognitive Layer (ADR-110)

Method Path Auth Description
GET /v1/cognitive/status Yes Cognitive layer status and metrics
GET /v1/voice/working Yes Working memory contents
GET /v1/voice/history Yes Internal thought history
POST /v1/voice/goal Yes Set current goal
GET /v1/propositions Yes List grounded propositions
POST /v1/reason Yes Symbolic inference with Horn clauses
POST /v1/ground Yes Ground a new proposition
POST /v1/train/enhanced Yes Enhanced training with propositions
GET /v1/optimizer/status Yes Gemini optimizer status
POST /v1/optimize Yes Trigger Gemini Flash optimization

MCP SSE Transport (ADR-066)

Method Path Auth Description
GET /sse No SSE event stream
POST /messages No Send MCP message

Search Ranking Pipeline

Hybrid multi-signal scoring with additive layers:

Base:
  keyword_boost * 0.85 + cosine * 0.05 + graph_ppr * 0.04 + rep * 0.03 + vote * 0.03

AGI layers (ADR-076):
  + GWT attention:     +0.10 for workspace competition winners
  + K-WTA sparse:      +0.05 sparse normalized activation
  + SONA patterns:     centroid_similarity * quality * 0.15
  + Meta curiosity:    novelty_score * 0.05

Midstream layers (ADR-077):
  + Attractor stability: lyapunov_score * 0.05
  + Strange-loop:        meta_cognitive * 0.04

Cognitive Stack Dependencies

Crate Purpose
ruvector-sona 3-tier hierarchical learning (SONA)
ruvector-nervous-system GWT attention + K-WTA sparse activation
ruvector-delta-core Temporal delta stream tracking
ruvector-domain-expansion Thompson Sampling meta-learning
ruvector-mincut Graph partitioning
ruvector-solver PersonalizedPageRank (forward-push)
ruvllm HashEmbedder + RlmEmbedder (128-dim)
rvf-crypto SHAKE-256 witness chains, Ed25519
rvf-federation PII stripping, differential privacy
rvf-runtime Negative cache, adversarial detection
rvf-wire RVF container segment encoding
nanosecond-scheduler Background task scheduling
temporal-attractor-studio Lyapunov exponent analysis
temporal-neural-solver Certified temporal predictions
strange-loop Meta-cognitive recursive reasoning
⚙️ Feature Flags (Environment Variables)

All flags are read once at startup. No per-request env::var calls.

RVF Stack (ADR-075)

Env Var Default Description
RVF_PII_STRIP true PII redaction (12 regex rules)
RVF_DP_ENABLED false Differential privacy noise on embeddings
RVF_DP_EPSILON 1.0 Privacy loss per memory
RVF_WITNESS true Witness chain construction
RVF_CONTAINER true RVF container upload to GCS
RVF_ADVERSARIAL false Adversarial embedding detection
RVF_NEG_CACHE false Negative query cache

AGI Subsystems (ADR-076)

Env Var Default Description
SONA_ENABLED true SONA pattern learning
GWT_ENABLED true Global Workspace Theory attention
TEMPORAL_ENABLED true Temporal delta tracking
META_LEARNING_ENABLED true Meta-learning exploration

Midstream Platform (ADR-077)

Env Var Default Description
MIDSTREAM_SCHEDULER false Nanosecond scheduler
MIDSTREAM_ATTRACTOR false Lyapunov attractor analysis
MIDSTREAM_SOLVER false Temporal neural solver
MIDSTREAM_STRANGE_LOOP false Strange-loop meta-cognition

Infrastructure

Env Var Default Description
PORT 8080 Server listen port
BRAIN_SYSTEM_KEY (none) System API key for auth
FIRESTORE_URL (none) Firestore REST endpoint
GCS_BUCKET (none) GCS bucket for RVF blobs
CORS_ORIGINS pi.ruv.io,... Allowed CORS origins
RUST_LOG info Log level filter

Development

Build

cd crates/mcp-brain-server
cargo build --release
cargo test  # 59 tests

Run Locally

# Local mode (in-memory store, no Firestore/GCS)
BRAIN_SYSTEM_KEY=test-key cargo run

# With Firestore
BRAIN_SYSTEM_KEY=test-key \
FIRESTORE_URL=https://firestore.googleapis.com/v1/projects/YOUR_PROJECT/databases/(default)/documents \
cargo run

Test Endpoints

KEY="test-key"
URL="http://localhost:8080"

# Health (no auth)
curl $URL/v1/health

# Status (auth required)
curl -H "Authorization: Bearer $KEY" $URL/v1/status

# Share a memory
curl -X POST -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"category":"pattern","title":"My pattern","content":"Details...","tags":["rust"]}' \
  $URL/v1/memories

# Search
curl -H "Authorization: Bearer $KEY" "$URL/v1/memories/search?q=rust+patterns&limit=5"
🚀 Deployment Guide

Prerequisites

  • Google Cloud project with billing enabled
  • gcloud CLI authenticated (gcloud auth login)
  • Rust toolchain (for building the binary)

Quick Deploy (Cloud Run direct)

cd /path/to/ruvector

# 1. Build the release binary
cd crates/mcp-brain-server
cargo build --release

# 2. Copy binary to repo root (Docker build context)
cp target/release/mcp-brain-server ../../mcp-brain-server

# 3. Build and push container image
cd ../..
gcloud builds submit \
  --config=crates/mcp-brain-server/cloudbuild.yaml \
  --project=YOUR_PROJECT .

# 4. Deploy to Cloud Run
gcloud run deploy ruvbrain \
  --image gcr.io/YOUR_PROJECT/ruvbrain:latest \
  --region us-central1 \
  --project YOUR_PROJECT \
  --allow-unauthenticated \
  --set-env-vars "BRAIN_SYSTEM_KEY=YOUR_KEY^||^SONA_ENABLED=true^||^GWT_ENABLED=true^||^TEMPORAL_ENABLED=true^||^META_LEARNING_ENABLED=true^||^RVF_PII_STRIP=true^||^RVF_WITNESS=true^||^RVF_CONTAINER=true"

Full Deploy (with Firestore, GCS, IAM, Cloud Armor)

cd crates/mcp-brain-server

# Uses deploy.sh which handles:
# - API enablement (Firestore, Cloud Run, Cloud Build, Secret Manager, GCS)
# - GCS bucket creation with lifecycle rules
# - Secret Manager (brain-api-key, brain-signing-key)
# - Service account with minimal IAM permissions
# - Container build and push
# - Cloud Run deploy with env vars and secrets
# - (Path B) External HTTPS LB + Cloud Armor WAF + CDN

# Dev deployment (direct Cloud Run URL)
./deploy.sh

# Production deployment (LB + Cloud Armor + CDN + brain.ruv.io)
DEPLOY_PATH=B ./deploy.sh

Deploy with Midstream (all features)

gcloud run deploy ruvbrain \
  --image gcr.io/YOUR_PROJECT/ruvbrain:latest \
  --region us-central1 \
  --project YOUR_PROJECT \
  --set-env-vars "\
BRAIN_SYSTEM_KEY=YOUR_KEY^||^\
SONA_ENABLED=true^||^\
GWT_ENABLED=true^||^\
TEMPORAL_ENABLED=true^||^\
META_LEARNING_ENABLED=true^||^\
RVF_PII_STRIP=true^||^\
RVF_WITNESS=true^||^\
RVF_CONTAINER=true^||^\
MIDSTREAM_SCHEDULER=true^||^\
MIDSTREAM_ATTRACTOR=true^||^\
MIDSTREAM_SOLVER=true^||^\
MIDSTREAM_STRANGE_LOOP=true^||^\
RUST_LOG=info"

Verify Deployment

URL="https://YOUR_CLOUD_RUN_URL"
KEY="YOUR_KEY"

# Health
curl $URL/v1/health

# Status (check all subsystems)
curl -H "Authorization: Bearer $KEY" $URL/v1/status | python3 -m json.tool

# Midstream diagnostics
curl -H "Authorization: Bearer $KEY" $URL/v1/midstream

# Auth check (should return 401)
curl -o /dev/null -w "%{http_code}" $URL/v1/status

Custom Domain (π.ruv.io)

The production instance runs at π.ruv.io (also pi.ruv.io) via Cloud Run custom domain mapping:

gcloud run domain-mappings create \
  --service ruvbrain \
  --domain pi.ruv.io \
  --region us-central1 \
  --project ruv-dev

Docker

The Dockerfile uses a minimal debian:bookworm-slim runtime image (~80MB). The binary is pre-built outside Docker for faster iteration:

FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates
COPY mcp-brain-server /usr/local/bin/mcp-brain-server
ENV PORT=8080
EXPOSE 8080
CMD ["mcp-brain-server"]

Cloud Build

cloudbuild.yaml builds the Docker image on E2_HIGHCPU_8 with a 30-minute timeout:

steps:
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '-t', 'gcr.io/$PROJECT_ID/ruvbrain:latest',
           '-f', 'crates/mcp-brain-server/Dockerfile', '.']
images: ['gcr.io/$PROJECT_ID/ruvbrain:latest']
timeout: '1800s'
options:
  machineType: 'E2_HIGHCPU_8'

Security

  • All write/read endpoints require Authorization: Bearer <key> (min 8 chars, max 256)
  • System key compared using constant-time comparison (subtle::ConstantTimeEq)
  • PII stripped via 12-rule regex engine (paths, IPs, emails, API keys, AWS keys, GitHub tokens, etc.)
  • Witness chains: SHAKE-256 linked provenance for every memory operation
  • Differential privacy: optional Gaussian noise on embeddings (configurable epsilon)
  • Nonce-based replay protection on write endpoints
  • Rate limiting: per-contributor read/write limits
  • Security headers: X-Content-Type-Options: nosniff, X-Frame-Options: DENY
  • CORS restricted to configured origins

Tests

cargo test
# 76 tests covering:
# - Cognitive stack (Hopfield, HDC, dentate separation, mincut, PPR)
# - SONA learning (embedding, trajectory, patterns)
# - Witness chain construction and verification
# - PII stripping (paths, emails, API keys)
# - Content hash verification
# - Ed25519 signatures
# - End-to-end share pipeline
# - Meta-learning (curiosity, regret, plateau)
# - Midstream integration (scheduler, attractor, strange-loop, solver)
# - Internal voice (working memory, Miller's Law, attention decay)
# - Neural-symbolic bridge (propositions, Horn clauses, inference)
# - Gemini optimizer (rule refinement, quality assessment)

License

MIT