Talk2Build
Integrates with Alexa+ as a voice front-end via MCP for meeting utterances, and supports Amazon Bedrock Converse as an LLM provider for planning meeting turns and task composer.
Provides tools for fetching git log and git diff from a workspace repository, enabling incident investigation, change tracking, and context for meetings.
Supports OpenAI-compatible /chat/completions endpoints as an LLM provider for planning meeting turns and task composer, with fallback to deterministic classifier on failure.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Talk2Buildstart a meeting and capture decisions and action items as we talk"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Talk2Build
Talk2Build is a meeting app. The home and meeting room follow the Tencent Meeting desktop client: a light lobby with a left rail and four blue actions (#006fff), and a dark room with a bottom control bar. The study is in docs/design/tencent-meeting-reference.md. Home is join, quick meeting, and schedule, plus the meetings you have already held. Inside a room the agent sits on the right and works while people talk. Each utterance is read by the model, which pulls out intents, decisions, and action items with the speaker attached, then starts plan, design, verify, and research jobs in the background. The cards update while the room keeps going. Scaffolding, tests, and a PR-ready patch still wait for a yes. Chatter stays parked. Ending the meeting writes minutes and a completion report. The task desk is at /tasks. The 2:17 AM orders postmortem is Incident demo.
This is an Alexa+ track project for the Amazon Developer Hackathon (amazonappdev2026), with the AWS Builder and Open Source mini challenges in mind.
Run it
npm install
npm test
npm run devOpen http://127.0.0.1:43123. No API keys. Talk2Build needs Node.js 22 or newer because meetings are stored with node:sqlite. .nvmrc is 22. npm test, npm run dev, and npm run build check the version first and stop with that requirement on Node 20 instead of exiting from a missing module. npm run dev also sets NODE_OPTIONS=--experimental-sqlite.
On the meeting home:
Start meeting opens a room with you, Maya, Chris, and Priya. Play a working session runs a billing-export conversation. The right panel fills in a plan, an architecture sketch, a settings wireframe, an API spec, a feasibility check, and a research card that cites yesterday's decision. Lunch is parked. Tests wait until someone says yes.
Join takes a code. Your room is
TB-ROOM. Schedule leaves a meeting on the list.Incident demo resets the 2:17 AM room. Play the 2:17 script runs the eight beats.
stopand不对roll back one checkpoint.Task desk (
/tasks) is the secondary thread view.
Meetings, tasks, messages, and artifacts are stored in data/talk2build.sqlite. Workspace files live under data/workspaces/. Both are gitignored.
Related MCP server: relay
Architecture
flowchart LR
home["Meeting home"] --> room["Live room"]
room --> turn["POST /api/alexa/turn"]
turn --> alexa["AlexaPlusClient"]
alexa --> mcp["POST /mcp"]
mcp --> tools["MCP tools"]
tools --> panel["Plan, design, verify, research"]
desk["Task desk"] --> chat["POST /api/threads/:id/messages"]
chat --> tools
tools --> db["SQLite meetings and tasks"]
tools --> files["Workspace files"]
planner["Mock, Bedrock, or Nebius"] --> turnAlexa+ is the voice front-end. src/alexa/client.ts is a Streamable HTTP client for MCP protocol 2025-11-25. The web app calls it for every meeting utterance. A device uses the same server through alexa/addon-package/addon.json (integrations[].type is MCP).
The task desk streams a plan, each tool call, and the reply as server-sent events. The right-hand task monitor shows the to-do list, the files written for that task, and the MCP tools that ran.
Tool | What it does |
| Store a line and label it |
| Marks on the timeline, and the link between them |
| Side talk, kept out of the requirement pool |
| Decisions, the pool, action items |
| Asks before a diff, a PR, a scaffold, a test run, or issues |
| Markdown in the workspace. Docs do not wait |
| Live plan card: goal and milestones |
| Architecture diagram, UI wireframe, or API spec while design is discussed |
| Feasibility against earlier decisions. The test suite still waits for a yes |
| References from past meetings and saved preferences. Mock mode does not invent web citations |
| A timely reminder, and a preference the next meeting can use |
| Decisions and action items across meetings, including yesterday |
| One markdown issue per open action item |
| Minutes back onto the task |
| A live room and a join code |
| Incident meetings use the Redis-pool fix. Other workspaces get real files and |
| Incident fixtures, or |
| Workspace files. Paths cannot escape the folder |
| Status line, and |
Small writes happen immediately. Scaffolding, test runs, issue creation, and pull requests wait for a yes.
Models
Meeting turns still classify through LLM_PROVIDER (mock unless you set one). The in-room agent is separate. It picks a backend in this order:
TALK2BUILD_AGENTif set (bedrock,nebius,openai, ormock)Otherwise
LLM_PROVIDERwhen that is setOtherwise Bedrock when both
AWS_ACCESS_KEY_IDandAWS_SECRET_ACCESS_KEYare set, or whenAWS_BEARER_TOKEN_BEDROCKis set. One key alone is skipped, with a log line, and the agent falls through to Nebius, OpenAI, or the fixture modelOtherwise Nebius when
NEBIUS_API_KEYis present, or any OpenAI-compatible server whenOPENAI_API_KEYis presentOtherwise the recorded-fixture model. That path does not call the network
Variable | Role |
| Bedrock key pair. Both the access key id and the secret are required |
| Bedrock model. Default |
| Nebius Token Factory. Default base URL |
| Any OpenAI-compatible |
| Force the fixture model even if keys are set |
| Delay between card updates. Tests force this to 0 |
With no keys, plan, design, verify, and research still run as background jobs and write files under the meeting workspace.
If the room compares technologies ("which is more popular, Express or Fastify?"), an Evidence card fetches GitHub stars, open issues, latest release, and last push, plus npm weekly downloads or PyPI recent downloads, and the documentation URL listed by the registry. Every number keeps its source URL and fetch time. A failed call is shown as a failure. The model does not fill in missing numbers. Tech selection and requirement review are written only from those rows. The same jobs are drawn as a decision tree: the goal at the root, topics as branches, and alternatives side by side. After the evidence is in, Architect and Skeptic join the grid and can be called with @architect and @skeptic.
TALK2BUILD_LIVE=0 skips the tests that call the public APIs. They run by default when the network is up.
A code job only scaffolds, writes docs/patch.diff, and drafts a pull request after someone says yes. Research sources are earlier decisions and saved preferences. URLs that were not already in the context are dropped.
The task composer can still pin Mock, Bedrock, or Nebius per thread. If Bedrock or the OpenAI-compatible endpoint fails, a meeting turn falls back to the deterministic classifier and the response is marked degraded.
See .env.example. TALK2BUILD_HOME moves the SQLite file and the workspaces.
Alexa+
The hackathon asks for a self-hosted MCP server on spec 2025-11-25 or later, Streamable HTTP, and for the repo to call that technology rather than only mention it.
The server is
/mcp, implemented insrc/mcp/handler.ts.Meeting utterances go through
AlexaPlusClientover HTTP.npm testincludes that round trip.alexa/addon-package/addon.jsonis the add-on manifest.integrations[0].typeisMCP.
To put it on a device:
Serve the app on a public HTTPS URL. A tunnel such as cloudflared is enough for development. Alexa+ will not call localhost.
Replace every
https://example.com/...value inaddon.jsonwith that origin. Icons and the carousel already exist at/alexa/*.png. Privacy and terms are/privacyand/terms.Point
integrations[].config.endpoints.default.uriathttps://YOUR_HOST/mcp.Install the Alexa AI CLI, run
alexa-ai configure, thenalexa-ai deployfrom this repo once the manifest paths match what the CLI expects (addon-package/addon.json).Auth is off for local development. Set
MCP_REQUIRE_AUTH=trueto require a bearer token. Unauthenticated/mcpcalls then return401with noWWW-Authenticateheader. Protected-resource and authorization-server metadata are under/.well-known/, and the token endpoint speaks OAuth 2.1 authorization-code + PKCES256. The local authorization server auto-approves. Do not use it as a production identity provider.NODE_ENV=productionalways requires auth, even whenMCP_REQUIRE_AUTHis unset. SetMCP_DEMO_TOKENto a random secret of at least 16 characters. The public valuetalk2build-demois rejected. The same bearer token is required onPOST /api/meetings/:id/jobs/:jobId/cancel. The in-room cancel button does not send that token; it cancels through a server action. SendAuthorization: Bearer $MCP_DEMO_TOKENfor the HTTP cancel route and for/mcp.
npm run mcp serves the same routes headless, bound to 127.0.0.1 unless you set HOST.
Round-trip tool calls in mock mode are well under the 500 ms Alexa+ budget. A live Bedrock plan is extra latency on top of the tool call.
Tests
npm testClassifier and incident fixtures, including the 50 → 20 diff and the missing timeout.
A generic “root cause” on a normal meeting does not open the Redis pull request. The scripted 2:17 AM lines still do.
MCP transport: session, protocol header, SSE, origin rejection, and the PKCE login.
Provider adapters for Bedrock and the OpenAI-compatible API, with injected responses.
SQLite reload, a real
node --testin a workspace, and path escape rejection.Chat: yesterday's decision, then issues on disk after a yes.
A meeting that ends posts minutes onto its task, including the completion report.
Agent jobs: recorded fixtures, concurrent runs, cancel, the yes gate, and a local OpenAI-compatible stub.
The scripted postmortem through the Alexa+ client, plus rollback on
stopand不对.
Docs for the submission
Shot list for the video, at or under three minutes
License
MIT. See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
- AlignOAuthcom.meet-align
Your team's meetings, decisions and tasks: ask what was decided, who owns what, what's due.
- mcpOAuthcom.attendmeet
Bring meeting decisions, tasks and user stories into your AI editor (Claude, Cursor, Copilot).
Open-source AI coworkers that show their work: approval before risky steps, a record of every run.
One shared project for a team's coding agents: decisions, a task board and handoffs.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceLocal-first deterministic project memory for AI coding agents, with context packs, decisions, gates, risks, scoped claims and explicit checkpoints in project-owned files.-
- AlicenseNot gradedqualityAmaintenanceEnables any coding model or session to pick up where a previous one left off by keeping handoff state (START / SPEC / DECISIONS / TASKS / LOG) in the repository and projecting each harness's entry files from a single source. It also blocks commits until structural checks and the project's own executable acceptance tests actually pass, providing init, onboarding, session briefing/exit, verification, sync, and task-claim tools.9 npm1MIT
- AlicenseNot gradedqualityCmaintenanceLets an AI coding agent journal its edits, commands, checkpoints, intents and test evidence locally, then compile them into a machine-readable Change Package plus a human-readable review summary with statically computed risks. Optionally publishes the result as a GitHub Draft PR with inline comments on the exact diff lines, always gated behind explicit confirmation and redaction.5 npmAGPL 3.0
- AlicenseNot gradedqualityBmaintenanceEnables development agents to keep persistent memory: proposing and reviewing workspace-scoped content, running hybrid search over accepted sources, and resuming projects with auditable history and provenance. It exposes 32 MCP tools over stdio and authenticated Streamable HTTP, with optional embeddings and rerank.Apache 2.0