Inspiration

Voice assistants were supposed to run the house. Before writing any code I collected 34 sources of what people say about Alexa+: reviews, Reddit threads, and press coverage. The same eight complaints kept coming back. Replies are slow (up to 15 seconds, per Spyglass). Routines stop halfway. Answers are sure of themselves and wrong. It forgets what you told it. And people are comparing it to ChatGPT and Claude, and leaving.

What families actually want is short: memory that stays, a person who signs off before anything happens, and proof it did what it said. So I built a household assistant around exactly that.

What it does

AGORA+ is a household brain you run on your own server, with one calm Home page for the whole family.

  • Tell it once. "Remember Mia is allergic to peanuts" is written to a household file on your disk, read back, and shown with a verified receipt.
  • Simple requests skip the model. Remember, recall, lists, reminders and the briefing take a fast path, about 100 ms for a full remember turn locally.
  • One page for the house. Today, shopping and to-do lists, reminders, and family facts you can edit. The morning briefing leads with what matters: allergies, medicine, what's due.
  • It asks first. Forgetting a fact or starting a plan comes back as needs_approval and waits for a person's yes. The voice model is never given the approve tool, so it can't approve itself. Orders, payments, bookings and phone calls are refused.
  • A team, not a chatbot. Bigger jobs ("plan dinners this week and add the groceries") go to four agents: Agora, Scout, Planner and Keeper. Keeper checks every plan against what the family saved. In the demo it flagged Mia's peanut allergy and Grandpa's 8 pm heart medicine.
  • One brain, every surface. The household is a self-hosted MCP server (Streamable HTTP, protocol 2025-11-25) with 11 tools, 3 resources and 2 prompts, behind OAuth 2.1 with PKCE. In the video, Claude Code, a completely separate app, asks the same household what Mia is allergic to and gets the same answer in 6.9 seconds. It also ships as an Alexa+ add-on package with account linking, plus an Agent Skill that teaches any assistant the approval rules.

How we built it

AGORA+ grew out of AGORA, my open-source multi-agent "office" where a lead plans, workers run in parallel, agents debate, and a person approves. In the hackathon window I added the household layer on top: files on disk with receipts, approvals, the MCP server and OAuth, the voice Home page, the Agent Skill, and the Alexa+ package.

  • TypeScript end to end: React 19 and Vite 6 on the front, Node on the server
  • MCP TypeScript SDK v2, stateless Streamable HTTP
  • Amazon Bedrock through the Claude Messages endpoint, and Amazon Polly for the voice
  • Any OpenAI-compatible model as a fallback (the demo ran Qwen 2.5 32B on Featherless)
  • 268 unit tests, Playwright end-to-end tests in Chromium and Firefox, and CI on every push

I planned the work in phases, used AI coding agents to implement and review each one, and gated every phase on type checks, tests, and a check in a real browser.

Challenges we ran into

  • Approvals without elicitation. Stateless MCP servers can't pause a tool call to ask the user, so approval became a second tool call with an id that expires after ten minutes.
  • Three protocol dates and two auth stories. Alexa's sample sends 2025-03-26, the server speaks 2025-11-25, and the spec index already names 2026-07-28. The Alexa+ auth pages disagree on scopes and on what a 401 looks like. I logged all of it in a friction log.
  • No AWS credentials in my build environment. Bedrock and Polly are wired in but were not run live, so the team ran on an open model instead. That exposed a real bug: one slow worker could kill the whole plan. Now that step is escalated and the rest of the team finishes.
  • Bugs found by recording the demo. Spoken summaries were cut off mid-sentence. And recall hedged on "Mia allergy" because "allergy" didn't match "allergic". Both are fixed and covered by tests.

Accomplishments that we're proud of

  • Safety lives in the protocol, not the prompt: a risky tool returns needs_approval, and the voice model can't approve its own request.
  • Every write is verified by reading it back from disk.
  • The same household answers from the Home page, from Claude Code, and from any MCP client.
  • Keeper catching a real allergy conflict in a live plan.
  • Honest labels throughout: the voice page is marked as an unofficial simulated Alexa+ experience, and the README says exactly what was and wasn't run.

What we learned

  • Most household requests don't need a model at all. A fast path makes the assistant feel instant and makes it cheaper.
  • Put guarantees in tool results, not in instructions to a model.
  • MCP is the right shape for "one brain, every surface". The hard parts are auth and long-running work, not the tools themselves.
  • Recording the demo is a test suite of its own: two real bugs came out of it.

What's next for AGORA+

  • Run live on Claude in Amazon Bedrock and Polly, and measure time to first audio
  • Deploy the Alexa+ add-on with account linking (Alexa+ is US-only)
  • Keep approvals and OAuth codes across restarts
  • Calendar, timers, and device control, all behind the same approval gate
  • The MCP Apps household card on Echo Show

Built With

Share this project:

Updates

Submission history