A fully local, voice-driven AI assistant for macOS.
JARVIS is a local AI assistant for macOS — talk to it or type to it, and it can chat, answer questions, and control the machine it's running on. Everything runs locally: the language model, the speech-to-text, and the text-to-speech, with no cloud dependency required. It streams responses over a WebSocket to a lightweight single-page UI that opens automatically in the browser.
- LLM — DeepSeek, served locally through Ollama (swappable for any
model Ollama supports, e.g. Llama 3 or Mistral)
- Speech-to-text — Whisper, running entirely locally
- Text-to-speech — macOS's built-in say command by default,
with an optional upgrade to an ElevenLabs voice if an API key is configured
- Backend — FastAPI with a WebSocket connection for streaming
- Memory — a SQLite database that remembers conversation context between
sessions
- Wake word — an optional listener for "Hey Jarvis" to trigger voice
input hands-free
Voice or typed commands are matched against a small plugin system that controls the Mac directly:
"What time is it?" -> reads the time "Open Safari" -> opens any app "Volume up / down / mute" -> controls system volume "Dark mode" / "Light mode" -> toggles macOS appearance "Take a screenshot" -> saves to Desktop "Lock the screen" -> locks the Mac "Empty the trash" -> empties Finder trash "Search for black holes" -> opens a Google search
New plugins are just a small Python class with a regex pattern and an execute()
method, registered with the plugin manager — adding a new voice command takes a few lines
of code.
- Typed and voice chat in one interface
- Fully local LLM + speech-to-text, no cloud round-trip required
- Hands-free wake-word activation
- Persistent memory across sessions
- Extensible plugin architecture for system control
I wanted a Siri/Alexa-style assistant without handing every conversation to a cloud provider — something that keeps my data on my own machine, that I can extend with my own plugins, and that I actually understand end to end because I built every layer of it.