Adapters

One event in. Many truthful renderers out.

An adapter translates domain state into the public contract. A renderer decides how a human perceives it. Neither gets to invent source truth.

Registry

Reference paths and production proof

reference

Browser Pulse

Reference browser renderer: visual pulse, trace rows, and JSON from one Signal Contract stream.

Open →
production

SERPRadio

First live Domain Adapter — route intelligence, materialized state, and audio previews in production.

Open →
planned

Python Logger

Reference logger adapter for emitting validated events from scripts and agent runtimes.

Open →

Adoption rule

Build against the schema, not the demo.

The demo is one renderer. The schema is the contract. Validate the event before choosing sound, motion, logs, or a domain surface.

Event shape

The portable input

{
  "schema_version": "1.0",
  "id": "sig_demo_005",
  "occurred_at": "2026-04-19T18:32:18.442Z",
  "producer": "vibenet-demo",
  "entity": "agent.serpradio.route_intelligence",
  "event": "handoff.requested",
  "channel": "handoff",
  "valence": 0.42,
  "energy": 0.66,
  "tension": 0.73,
  "intensity": 0.72,
  "hue": 44,
  "pulse": 0.78,
  "confidence": 0.94,
  "ttl_ms": 15000,
  "metadata": {
    "reason": "source_confidence_below_threshold",
    "route": "JFK-LHR"
  }
}

Implementation detail

Inspect only the lane you need.

The adapter shape

Adapters are thin translators. Emit normalized Signal Contract events from your runtime. Renderers stay downstream so the same event can drive audio, visual, and trace surfaces.

"type AdapterInput = {\n  agentId: string;\n  event: \"planning\" | \"tool_call\" | \"warning\" | \"handoff\" | \"complete\";\n  valence: number;\n  energy: number;\n  tension: number;\n  summary?: string;\n};"
Renderer reference

Renderers consume validated Signal Contract fields. Audio, visual pulse, trace, and receipt views can differ, but they should all follow the same event and clock.

"type RendererTarget =\n  | \"audio\"\n  | \"visual_pulse\"\n  | \"trace\"\n  | \"receipt\";"