⚛ Project · macOS native

J.A.R.V.I.S.

Just A Rather Very Intelligent System

Say "Hey Jarvis." A glowing arc-reactor HUD built in raylib, a streaming Claude brain with working hands — Gmail, GitHub, Mac control, timers — conversation memory that survives relaunches, and a dry, sarcastic British voice synthesized locally. He starts answering out loud in about a second, and you can talk over him.

The JARVIS HUD: arc reactor core, audio visualizer ring, system telemetry, inbox and GitHub panels, live activity terminal, transcript.
The live HUD — reactor, 72-bar voice-reactive visualizer, telemetry, inbox & GitHub panels, activity terminal.

What he does

"Hey Jarvis" — hands-free

Always-listening wake word (local openWakeWord, no cloud). Speech is transcribed on-device with faster-whisper. After each reply the mic stays hot for five seconds — just keep talking, like a real conversation.

Streaming voice pipeline

The brain streams sentence-by-sentence into a pipelined TTS queue: sentence one is already playing while sentence three is still being generated. First words in ~1.5s. Barge in any time — saying "Hey Jarvis" cuts him off mid-word.

Working hands

Native Claude tool use: he reads your Gmail, checks your GitHub notifications and PRs, opens apps, drives Music/Spotify, sets the volume, flips dark mode, and runs countdown timers — announced aloud, drawn as a gold ring on the HUD.

Conversation memory

A rolling history rides along with every request and persists across launches. He remembers what you asked yesterday. "Forget our conversation" wipes the slate.

Audio-reactive HUD

The RMS envelope of every synthesized sentence drives the 72-bar visualizer and the reactor's glow — the rings genuinely pulse with his voice, and the transcript reveals typewriter-style in sync with the audio.

A proper British voice

Piper neural TTS (en_GB-alan) runs entirely offline. Falls back to macOS Daniel; plugs into ElevenLabs for the full Bettany. The wit is film-grade: deadpan, devoted, faintly exasperated.

Mini mode

⌘M shrinks him to a 230px always-on-top arc reactor you can park in a corner all day. Click it — or say "Hey Jarvis" — and the full HUD snaps back.

Sound design

Synthesized sci-fi one-shots — boot power-up sweep, readout ticks, wake chirp, sonar ping while thinking, triple-ding timers. Generated with numpy at first launch; no audio assets shipped.

Self-updating

The signed .app checks GitHub releases at launch and quietly swaps newer builds in place — then tells you, out loud, that he's upgraded himself. Naturally.

The pipeline

 mic ─▶ openWakeWord ("hey jarvis", 80ms frames, local onnx)
     ─▶ capture until trailing silence ─▶ faster-whisper (local, int8)
     ─▶ Claude — streaming + tool loop          ⚒ gmail · github · mac · timers
     ─▶ sentence splitter ─▶ Piper synth ──┐    (next sentence synthesizes
     ─▶ afplay ◀──────────────────────────┘     while this one plays)
     ─▶ RMS envelope ─▶ visualizer bars + reactor glow + transcript typewriter

Specs

Platform
macOS (Apple Silicon)
Language
Python 3.14
Renderer
raylib @ 60fps
Brain
Claude Haiku 4.5 / claude CLI
Speech-to-text
faster-whisper (local)
Wake word
openWakeWord (local)
Voice
Piper en_GB neural (local)
Frameworks
none — no Electron

Run it

# the easy way — signed app, self-updates
download & unzip JARVIS-macos.zip, open JARVIS.app

# from source
git clone https://github.com/binRick/jarvis && cd jarvis
./jarvis        # first run builds the venv + signed .app

# give him a faster brain (optional — the claude CLI works too)
echo sk-ant-... > ~/.jarvis/anthropic_key.txt