The idea
Podcasts can't hear you. You can't ask the host what they meant, skip the part you know, or say "go deeper on that." Voice assistants answer questions, but they don't do long-form listening. Overhear joins the two. Ask Alexa+ about anything, a topic, a link or a document, and two hosts start talking it through in seconds. Cut in any time:
- "Go deeper on the first point" adds a new part, in the same voices, right after the one you are on.
- "What did they say about the mirror?" gets a spoken answer grounded only in the source and what the hosts actually said, with citations. If neither covers it, it says so.
- "Skip this", "back thirty seconds", "how long is left?" work without stopping the show.
How it works
Overhear is a self-hosted MCP server on the newest spec, 2025-11-25, over Streamable HTTP: seven tools (plan_episode, render_episode, get_episode, find_moment, expand_part, recap, ask), four resources and four prompts behind a bearer token. Alexa+ is the MCP client. Because the official Alexa+ tools are preview-only for entrants, the repo ships an Alexa+ simulator (a device host plus a web device) that drives the real server over MCP. The same server also runs on a real Echo through a development Alexa skill, Overhear Studio: "Alexa, open overhear studio, brief me on the James Webb telescope", then "Alexa, tell overhear studio to go deeper" or "Alexa, ask overhear studio what did they say about the mirror". The skill streams each part to the Echo with the AudioPlayer interface, queues the next part (including the deeper one just inserted) and verifies every Alexa request signature.
Rendering an episode is an MCP task (the 2025-11-25 tasks API). The first part is scripted, voiced and mixed first, so playback starts while later parts are still being written: in the recorded demo the outline arrives about 7 s after asking and the first part about 7 s after pressing play. The manifest resource is subscribable, so the device hears each part turn ready. Tasks and resumable event streams sit in durable stores (SQLite locally, DynamoDB on AWS), bound to the caller, so a dropped stream resumes instead of starting over.
Amazon Polly generative voices speak every line. Scripts are written by Amazon Bedrock (Nova) by default. Bedrock invocation is still pending verification on our account, so the recorded demo uses an OpenAI-compatible model on GMI Cloud through the same adapter seam; switching back is one env value.
Built to be attacked
Constant-time token checks against SHA-256 digests, per-caller budgets, an SSRF-guarded fetcher (https only, private and metadata ranges blocked, IP pinned, redirects re-checked), owner-scoped stores where a stranger reads "not found", prompt-injection containment with schema-checked model output, and ceilings on every untrusted size. One ./verify.sh gate runs format, types, lint, 242 tests, licence and audit checks, an MCP conformance suite (28 of 34 rows, every required row passing, the rest advisory), a full end-to-end session and headless-browser UI checks. CI runs the same script.
Try it
One command (Linux or macOS, Node 22+ and ffmpeg): curl -fsSL https://raw.githubusercontent.com/zkasuran/overhear-alexa/main/install.sh | bash It clones, builds and opens a menu: Demo (no keys), Live (Amazon Polly voices, any topic), Echo (your own Echo through the Overhear Studio skill, set up for you), Configure, Stop. Then open http://127.0.0.1:5173, type any topic or paste a link, and press Plan episode.
Links
- Demo video: https://youtu.be/cT3XTVj8wk4
- Code (Apache-2.0): https://github.com/zkasuran/overhear-alexa
- Open-source spin-off: https://github.com/zkasuran/mcp-durable-stores
Built With
- alexa-skills-kit
- amazon-bedrock
- amazon-dynamodb
- amazon-nova
- amazon-polly
- amazon-web-services
- cloudflare-tunnel
- ffmpeg
- gmi-cloud
- hono
- kiro
- mcp
- model-context-protocol
- node.js
- sqlite
- typescript
- vite
- web-audio
Log in or sign up for Devpost to join the conversation.