adewaskar/jarvis
Productivity & UtilitiesA browser-based voice assistant with an Iron Man interface that uses Claude Code to run your tools and MCP servers.
What it is
JARVIS is a hands-free voice assistant for the desktop browser, wrapped in a Three.js and GLSL Iron Man-style holographic interface. You say "Hey Jarvis" and it transcribes your speech, sends it to a Claude Code brain, and speaks the answer back. Because the brain reaches your configured MCP servers, it can search the web, generate images, control an Android phone, drive Playwright, or read account connectors.
The system is split into two processes. The browser is the face and voice; a local Node bridge (bridge/server.mjs, port 8787) is the brain and hands. The bridge runs the Claude Agent SDK, which spawns the real claude CLI headless and reuses your existing Claude Code login, so no separate API key is needed. The app is a small Node web app; the model work happens on Anthropic's servers.
Quick start
Prerequisites: Claude Code installed and logged in, Node.js 20 or newer, and a real Chrome or Edge window with microphone and WebGL access. An ElevenLabs API key is optional and improves voice and transcription.
npm install
npm start
Open the printed URL in Chrome, click INITIALISE, allow the microphone, and say "Hey Jarvis". To run the processes separately, use npm run bridge for the brain and npm run dev for the face, then open the local app. Embedded preview panes block the microphone, so use a normal browser window. npm run setup checks all prerequisites.
Controls and capabilities
Spacebar talks without the wake word, and speaking while JARVIS talks interrupts him (barge-in). D opens diagnostics, T runs an audio self-test, V cycles the browser voice, and Escape stands down. The agent can also drive its own interface through tools such as ui_theme, ui_reactor, ui_orbit, ui_chrome, and ui_effect, so spoken commands can change colors or place images in orbit. HUD panels are sanitized with DOMPurify and a class allowlist under a strict CSP.
Safety and permissions
The tool gate starts read-only: search, generation, and lookups work, while sends, taps, deletes, installs, and payments are denied by default. File tools are confined to ~/.jarvis/workspace, the temp directory, and any JARVIS_FILE_ROOTS; credential paths such as ~/.ssh and ~/.claude stay refused. Effectful tools, including Bash, Write, and Edit, require npm run bridge:writes or npm start -- --writes. With writes enabled, the shell can reach anything your user account can, so review decideTool() before enabling it.
Configuration and limits
The model defaults to claude-opus-5 at medium effort and can be changed with JARVIS_MODEL and JARVIS_EFFORT. Bridge settings are environment variables; frontend settings go in .env.local copied from .env.example. The bridge listens on 127.0.0.1 by default and should be put behind your own authentication if exposed to the network. Account connectors from claude.ai are excluded unless JARVIS_ACCOUNT_CONNECTORS=1. Tests run with npm test and do not open an agent session. The project is MIT licensed; boot audio in public/audio/ ships for the demo, and clearing rights for monetized use is the user's responsibility.
HotRepo's take
The project sits at 836 stars and 358 forks after its 2026-08-02 creation, with a single recorded daily TypeScript snapshot on 2026-11-12 showing a rank of 11 and 43 stars gained that day. That snapshot is a useful sign of attention, but the available record is too thin to describe a trend. The more substantial observation is the architecture: it reuses an existing Claude Code login rather than requiring a new API key, which lowers setup friction, yet the same design means the assistant's practical reach is bounded by the MCP servers already in your ~/.claude.json. The read-only default and explicit --writes switch are concrete safeguards for a voice interface that cannot show a confirmation dialog.
Written by AI from the project's README, updated . The project's own docs are the source of truth.