Demo Runbook
The step-by-step operating manual for the Itinerary in Motion live demo. Use this page to verify the environment, run the rehearsed keystrokes, recover from common faults, and reset between rehearsals.
2-minute briefing outline
- Problem statement. Travellers receive disruption SMSes that do not actually fix anything.
- What we built. A SAM-orchestrated assistant that fans a single broker event out across four specialist agents and returns a phone-friendly re-plan.
- The pieces. Solace Event Broker, SAM orchestrator and four specialist agents, fakegen-seeded SQLite, React phone-frame UI.
- What you will see. A publisher emits one disruption. The UI shows the alert, the agent fan-out, and the re-plan card live.
Pre-flight checklist
-
Broker reachable.
Verify
tcp://192.168.88.188:55555(SMF) andws://192.168.88.188:8008(WebSocket) respond. -
SAM core up.
curl http://<sam-host>:8000/health -
Agents discovered.
Open the WebUI agent registry view. Confirm five agents: Orchestrator, Flights, Weather, Itinerary, Images.
-
Frontend up.
cd frontend && VITE_USE_MOCK=false npm run devOpen the printed URL in the demo browser tab.
-
Publisher venv ready.
cd publisher && uv sync -
Pre-warm the orchestrator.
In the WebUI, send the prompt
warmup. Wait for a response. Discard. -
DB freshness.
cd fakegen && uv run main.py refresh \ --db-config configs/weather.db.yaml \ --schema configs/weather.schema.yamlItinerary dates are anchored at generation time. Regenerate if the demo day rolled over since the last build.
3-minute live keystrokes
- T+00s. Frontend visible in phone frame. Narrate: "Idle. Awaiting any disruption on travel/flights/+/status."
-
T+10s. In the publisher terminal, paste and run:
uv run publisher/publish_disruption.py disrupt \ --flight JL001 --status DELAYED --minutes 180 --reason weather - T+12s. UI banner: "JL001 delayed 180 min". Narrate: "The broker just emitted one message. The UI received it via solclientjs WebSocket."
- T+15s. UI shows the orchestrator firing. First agent step appears.
- T+25s. WeatherAgent step done. Narrate destination forecast headline.
- T+35s. ItineraryAgent step done. Shifted plan list renders.
- T+45s. Final card visible: headline, weather, three-line shifted itinerary. Hold for the audience.
- T+60s to T+180s. Q&A. Optional second take: a different flight number to show statelessness.
Recovery (Plan B)
- If the publisher does not connect within 5 s, switch terminals and run the same command from a backup laptop already on the same VPN.
- If the UI does not receive an alert within 15 s, click the on-screen "Trigger mock alert" button to drive the demo from the mock path. Narrate honestly: "Showing the same flow against the canned event."
- If the orchestrator stalls or returns an error, queue
docs/demo-recovery.mp4and narrate over the recording.
Reset between rehearsals
- Refresh the frontend tab.
- In the publisher terminal, ctrl-c any ambient process.
- Optionally re-run
fakegen refreshif the rehearsal block crosses a day boundary.