An open source, browser-based voice assistant with a full Iron Man holographic interface. The brain is Claude Code running headless — no separate API key, billed to your existing account.
npm install -g @anthropic-ai/claude-code, run claude once and log in. No separate API key — usage is billed to your existing account.git clone https://github.com/adewaskar/jarvis cd jarvis npm install npm start
Then open the URL it prints — http://localhost:5173 — in a real Chrome or Edge window, click INITIALISE, allow the microphone, and say "Hey Jarvis."
Prefer two terminals? Run npm run bridge in one (the brain) and npm run dev in the other (the face), then open the same URL.
Without any key, JARVIS speaks and listens through the browser's built-in speech engine, and everything still works.
To upgrade the voice, set ELEVENLABS_API_KEY before starting the bridge, or add the key to your ElevenLabs MCP server config in ~/.claude.json. No flag to flip — it upgrades automatically on the next boot.
JARVIS reaches every MCP server already configured in your ~/.claude.json — it is not pre-wired to calendar, email, or revenue tools out of the box. If you want those, you need to have a compatible MCP server for them already set up.
Depending on what you have installed, that typically includes:
Servers added through your claude.ai account aren't stored on disk, so the bridge can't see them — only servers in your local ~/.claude.json file work here.
By default, JARVIS is read-only. Search, generation, and lookups run freely. Anything effectful — sending, tapping, deleting, installing, paying — is denied automatically, decided ahead of time, not asked in the moment (voice is a poor interface for a confirmation dialog).
npm run bridge:writes
Read the decideTool() logic in bridge/server.mjs before enabling this. "Hey Jarvis, clean up my downloads folder" means something different with writes enabled.
| Key / phrase | Does |
|---|---|
| "Hey Jarvis" | Wakes him |
| Space | Talk without the wake word |
| Just speak | Interrupt him mid-sentence (barge-in) |
| V | Cycle the browser voice |
| Escape | Stand down |
| D | Live diagnostics panel |
| T | One-line audio self-test |
npm run bridge is still running in its terminal, and that nothing else is using port 8787.MIT licensed by adewaskar. If you plan to monetize anything built on this, clearing the rights to the demo boot audio in public/audio/ is your own responsibility — it ships for demo purposes only.
Inside the community: more AI builds, tool breakdowns, Claude skills, and how I'm actually monetizing this stuff.
Join free for 7 days →