Inspiration

A kitchen display should answer one question at a glance: Is the house ready?

Picture a familiar Saturday: your parents are visiting. You’re short on towels, out of milk, and Mom is busy in the morning while Sara has soccer. Someone needs to connect those details before the doorbell rings. A chat window full of messages and disconnected lists isn’t enough.

I built Hearth to bring that coordination into the home. With Alexa+ built around MCP, I wanted to explore a household agent where voice and a shared display use the same server and household data so everyone sees the same calendar, responsibilities, and plan.

What it does

Hearth is an AI household companion designed for a kitchen counter, hallway, or shared living space.

Its wide, 16:9 display provides a glanceable household hub, while a smaller companion view on a laptop or phone supports more detailed interaction.

Tap Ask Hearth to speak naturally, or choose Prepare visit to start planning. Hearth checks the calendar, inventory, existing tasks, and household availability, then proposes a preparation plan. You review it before approving. Once approved, shopping items and family tasks appear on the shared board, and the visit card reflects preparation progress.

The household also supports a member roster with roles and notes, persistent memory, reminders, an activity feed, and per-member filtering in the companion view.

The demo household is Alex, Mom, and Sara in Bengaluru, with a Saturday visit from the parents seeded into the calendar.

How I built it

Hearth runs as two packages in a Node.js 22 workspace:

  • MCP server: Express, the official TypeScript MCP SDK, Streamable HTTP (spec 2025-11-25+), Zod validation, and SQLite.
  • Web hub: Vite, React 19, and Vapi's web SDK for voice interaction.
  • Planning: A deterministic server-side planner proposes visit-preparation tasks, shopping needs, assignments, and conflicts.
  • Deployment: The MCP server and static hub are hosted separately on Render.

Both voice and display use the same household data, keeping the experience consistent.

Challenges I ran into

  • Alexa+ tooling: The partner-only SDK and simulator were unavailable, so I built a self-hosted MCP server and web-based experience.
  • Hosting: Render's free tier sleeps and doesn't guarantee persistent local SQLite data, so I added health checks and reset the demo state after deployments.
  • Browser compatibility: A CORS preflight failure in Brave was fixed by allowing the Cache-Control header.
  • Weather reliability: Open-Meteo rate limits required a seeded Bengaluru weather fallback.
  • Tool discovery: Vapi needed the hosted MCP server running and the assistant republished to discover new tools.

What I learned

MCP is more than a chatbot adapter: tool discovery, transport behavior, and spoken results must remain reliable across the entire product.

I also learned that a shared display and a companion app serve different purposes. The display must be glanceable from across the room, while detailed editing belongs on a smaller screen. Finally, deployment, CORS, and persistence are part of the user experience—not just infrastructure concerns.

What's next

Improve household memory, handle scheduling conflicts more intelligently, and make the display easier to read from across the room all while keeping the household experience simple and glanceable.

Built With

Share this project:

Updates

Submission history