Browser-local preview

Stage one Signal Contract event for the room.

Map the same governed event to Home Assistant light and speaker payloads. Nothing connects to a device from this page; a local bridge is required to execute the staged requests.

Broadcast event

source confidence drop

warning
0.25valence0.70energy0.80tension0.75intensity
Awaiting acknowledgementCue enabledNo test cue staged

Home Assistant light

75%
View Device Broadcast JSON

Device Broadcast

{
  "trace_id": "room-poc-agent-trace-01",
  "event": {
    "schema_version": "1.0",
    "id": "sig_station_source_confidence_drop_004",
    "occurred_at": "2026-05-06T00:13:00.000Z",
    "producer": "vibenet.station_builder",
    "entity": "user_trace",
    "event": "source_confidence_drop",
    "channel": "warning",
    "valence": 0.25,
    "energy": 0.7,
    "tension": 0.8,
    "intensity": 0.75,
    "hue": 35,
    "pulse": 0.65,
    "confidence": 0.82,
    "ttl_ms": 15000,
    "metadata": {
      "source_sample_mode": "pasted_text",
      "source_adapter": "station_builder_preview",
      "renderer_policy": "renderers_may_not_mutate_truth",
      "station_event_offset_sec": 780
    }
  },
  "renderer_targets": [
    "home_assistant_light",
    "home_assistant_speaker"
  ],
  "issued_at": "2026-05-06T00:00:00.000Z",
  "ack_url": "/connect/send-to-room#acknowledge"
}
View Home Assistant REST calls

Home Assistant REST calls

[
  {
    "target": "home_assistant",
    "method": "POST",
    "path": "/api/services/light/turn_on",
    "body": {
      "entity_id": "light.vibenet_room",
      "hs_color": [
        35,
        80
      ],
      "brightness_pct": 75,
      "transition": 0.7
    }
  },
  {
    "target": "home_assistant",
    "method": "POST",
    "path": "/api/services/tts/speak",
    "body": {
      "entity_id": "tts.vibenet_voice",
      "media_player_entity_id": "media_player.google_home",
      "message": "attention recommended: user_trace source confidence drop",
      "cache": true
    }
  }
]

Renderer capability registry

poc

Home Assistant light

Home Assistant REST service call

Expresses Signal Contract hue, intensity, pulse, and ttl only.

poc

Google/Nest speaker through Home Assistant

Home Assistant TTS service call

Speaks a short renderer cue from channel, entity, and event.

Local runner

Keep the browser public. Run the room bridge locally.

The preview above never stores Home Assistant credentials. On the Mac or inside the home network, export the local variables and run the bridge in dry-run mode first.

export VIBENET_HA_URL="http://homeassistant.local:8123"
export VIBENET_HA_TOKEN="[redacted]"
export VIBENET_HA_LIGHT_ENTITY="light.office"
export VIBENET_HA_MEDIA_PLAYER_ENTITY="media_player.office_speaker"
export VIBENET_HA_TTS_ENTITY="tts.piper"

npm run device-renderer:dry-run
npx tsx scripts/run_device_renderer.ts --sample --execute --target all
Back to station receiptRequest a governed room adapter