# First Light Report — Evennia to Nexus Bridge Issue: - #727 Feed Evennia room/command events into the Nexus websocket bridge What was implemented: - `nexus/evennia_ws_bridge.py` — reads Evennia telemetry JSONL and publishes normalized Evennia→Nexus events into the local websocket bridge - `EVENNIA_NEXUS_EVENT_PROTOCOL.md` — canonical event family contract - `nexus/evennia_event_adapter.py` — normalization helpers (already merged in #725) - `nexus/perception_adapter.py` support for `evennia.actor_located`, `evennia.room_snapshot`, and `evennia.command_result` - tests locking the bridge parsing and event contract Proof method: 1. Start local Nexus websocket bridge on `ws://127.0.0.1:8765` 2. Open a websocket listener 3. Replay a real committed Evennia example trace from `timmy-home` 4. Confirm normalized events are received over the websocket Observed received messages (excerpt): ```json [ { "type": "evennia.session_bound", "hermes_session_id": "world-basics-trace.example", "evennia_account": "Timmy", "evennia_character": "Timmy" }, { "type": "evennia.command_issued", "actor_id": "timmy", "command_text": "look" }, { "type": "evennia.command_result", "actor_id": "timmy", "command_text": "look", "output_text": "Chapel A quiet room set apart for prayer, conscience, grief, and right alignment...", "success": true } ] ``` Interpretation: - Evennia world telemetry can now be published into the Nexus websocket bridge without inventing a second world model. - The bridge is thin: it translates and forwards. - Nexus-side perception code can now consume these events as part of Timmy's sensorium. Why this matters: This is the first live seam where Timmy's persistent Evennia place can begin to appear inside the Nexus-facing world model.