Inspiration
Voice assistants, browsers and coding agents each live in their own silo. I wanted one partner that could sit with me on the couch during a movie, play a quick game, and also help with real work like running tests or committing code, without giving up control over anything risky. That became Sidekick.
What it does
Sidekick is a voice-first AI partner with one open MCP server behind it.
As a companion
- Movie Buddy: say "Hey Sidekick, what just happened?" while a film plays. It lowers the video volume and answers using only the real subtitle lines, so it doesn't invent plot details.
- Voice games: chess (full rules via chess.js with an AI opponent), Tic-Tac-Toe and 2048, all playable by voice.
As a helper Sidekick exposes 11 tools through MCP: coding.execute, coding.run_tests, workspace.inspect, vcs.diff, vcs.commit, system.info, system.volume, system.media_control, system.open, system.clipboard and web.fetch.
Safety by design Every tool has a risk level. Reading and running tests happen automatically. Editing files and committing wait for the user's approval.
One server, many front ends The same tools work from an Alexa+ style voice flow (Alexa skill endpoint plus an Alexa+ simulator in the web app), from the React web app, and from external MCP clients like Claude Desktop, Cursor or MCP Inspector.
How we built it
- Core brain: Python and FastAPI for intent routing and Alexa request handling
- Execution service: Python tool registry with an approval flow and live job events over SSE
- MCP server: JSON-RPC 2.0 over stdio [plus Streamable HTTP, spec 2025-11-25 - keep only if finished and tested]
- Coding providers: Amazon Bedrock (Qwen3 Coder), an HTTP API provider (Claude/OpenAI-compatible) and a local CLI provider
- Web client: React 18, Vite and TypeScript, with chess.js for the chess engine
- Movie Buddy: an OpenAI-compatible endpoint (Groq), grounded on subtitle lines
- Hosting: Render, https://sidekick-jq3l.onrender.com/
- Quality: 395 backend tests (pytest) and 179 frontend tests (vitest)
Challenges we ran into
- Deciding which actions run automatically and which need approval, and making that clear to the user
- Keeping Movie Buddy honest by grounding every reply in real subtitle lines instead of model guesses
- Sharing one tool registry across stdio, HTTP and the Alexa path without duplicating logic
Accomplishments that we're proud of
- One tool registry that serves Alexa, the web app and external MCP clients
- An approval flow tied to each tool's risk level
- A companion side (Movie Buddy, voice games) and a work side (coding, git, system) in the same product
- 395 backend and 179 frontend tests, and an MIT-licensed open-source repo
What we learned
how mcp works and alexa routing decision and making user experience smooth and good
What's next for Sidekick
- Publish a full Alexa+ experience once the platform allows it
- More tools (calendar, notes) under the same risk and approval model
- Per-user permission profiles and an audit log of approved actions
- More Movie Buddy features, such as watching with friends in sync
Built With
- alexa
- aws-bedrock
- chess.js
- fastapi
- groq
- mcp
- model-context-protocol
- python
- react
- render
- typescript
- vite
Log in or sign up for Devpost to join the conversation.