Inspiration
A smart-home rule can be reasonable on its own and still interfere with another rule. Motion starts a timer, someone enables manual hold, and the old timer switches the light off anyway. The useful question is not just what the YAML says, but which sequence caused the behavior and whether a change preserves what already worked. We built Rehearse to make that investigation understandable and reviewable through conversation.
What it does
Rehearse is a conversational debugger and preflight workshop for a supported subset of Home Assistant automations. Import rules and selected entity state, confirm the behavior you expect, then investigate a failure. The app replays executed events on a virtual clock, traces the responsible action to its source, explores nearby timings, and tests a scoped guard repair against both the failure and independently specified normal outputs.
The guided example reproduces a delayed switch-off at 600 virtual milliseconds while manual hold is active. Rehearse proposes checking the current hold state immediately before that action. The comparison uses identical inputs before and after; ordinary motion switch-off is tested too. The user reviews the exact normalized YAML and explicitly approves a single download. Export does not install anything in a home.
How we built it
The browser is a simulated Alexa+ experience backed by a real authenticated Streamable HTTP MCP server using protocol 2025-11-25 and the official SDK. It initializes MCP, discovers tools and calls the automation service. Twelve automation tools cover import, inspection, investigation, replay, comparison, review, export and conversational requests.
Gemini selects validated workflows from natural-language requests. A deterministic event engine supplies the findings. Zod and YAML validation reject unsupported input atomically; parent-linked traces retain source locations. Bounded timing search and regression checks determine whether the supported repair is eligible for review. Unknown states and exhausted budgets remain visible.
Node.js and Express serve the application. Projects can run in temporary memory without keys or hardware; optional Prisma/Neon persistence restores accounts, sources, conversation and investigations across sign-ins. An isolated Home Assistant Core 2024.12.5 testbed provides recorded reference observations, including execution of the actual exported YAML with virtual helpers.
Challenges
The difficult part was preserving ordinary behavior while fixing the failure. We therefore require independent expected outputs, recompute candidates at review/export, and bind approval to the user, project, source version, tests and candidate. Truncated exploration blocks export.
We also tested the actual browser MCP lifecycle, ambiguous network outcomes, concurrent one-use approval and YAML serialization in Home Assistant. These integration details matter as much as a plausible explanation from the model.
What we learned
A useful conversational interface must make the boundary between a suggestion and executed evidence clear. The model can choose an investigation, but a repair needs a reproducible failure, ordinary-behavior checks and a precise review step. A passing result must also say what was tested and what remains unknown.
What's next
We want to expand supported Home Assistant semantics carefully, add more independent runtime cases, and run usability sessions with people unfamiliar with the workshop. Native Alexa account linking and physical installation would need their own access, consent and runtime evaluation. The current submission is the labeled web simulation; it does not claim native Alexa integration, automatic installation or universal safety.
Built With
- css3
- express.js
- github-actions
- html5
- javascript
- mcp
- node.js
- postgresql
- prisma
Log in or sign up for Devpost to join the conversation.