How treevu-ai/jarvis works
Jarvis is a local, voice-first conversational assistant with persistent memory, tool use, and a separate offline dictation mode. The main interaction runs from listening and wake-word handling through reply generation, which can enrich context, select and execute tools, and return speech. Memory, MCP integrations, and the desktop controls are distinct product capabilities. The excerpts are partial, so links for unsampled subsystem internals are limited to the documented workflow and repository structure.
Main entry points: engine.py Reply engine · listener.py Audio listener · app.py Desktop app · planner.py Tool planner
Components 26
Voice assistant
- Assistant daemon
src/jarvis/daemon.py - Audio listener
src/jarvis/listening/listener.py - Wake detection
src/jarvis/listening/wake_detection.py - Intent judge
src/jarvis/listening/intent_judge.py - Listening state
src/jarvis/listening/state_manager.py - Speech output
src/jarvis/output/tts.py
Conversation and tools
- Reply engine
src/jarvis/reply/engine.py - Tool planner
src/jarvis/reply/planner.py - Tool selection
src/jarvis/tools/selection.py - Tool registry
src/jarvis/tools/registry.py - Built-in tools
src/jarvis/tools/builtin - MCP client
src/jarvis/tools/external/mcp_client.py
Persistent memory
- Memory services
src/jarvis/memory - Conversation memory
src/jarvis/memory/conversation.py - Knowledge graph
src/jarvis/memory/graph.py - Memory database
src/jarvis/memory/db.py
Offline dictation
- Dictation engine
src/jarvis/dictation/dictation_engine.py - Dictation history
src/jarvis/dictation/history.py
Desktop controls
- Desktop app
src/desktop_app/app.py - Setup wizard
src/desktop_app/setup_wizard.py - Memory viewer
src/desktop_app/memory_viewer.py
Other components
- Speaker
- MCP servers
- Local Ollama
- Hotkey user
- Clipboard and apps
Connections 28
- Speaker → Audio listener: speaks to
- Assistant daemon → Audio listener: runs
- Audio listener → Wake detection: detects wake
- Audio listener → Listening state: updates state
- Audio listener → Intent judge: judges transcript
- Intent judge → Reply engine: directs query
- Reply engine → Local Ollama: requests response
- Reply engine → Tool planner: plans tools
- Reply engine → Memory services: enriches context
- Reply engine → Speech output: speaks reply
- Speech output → Speaker: returns speech
- Tool planner → Tool selection: narrows tools
- Tool planner → Tool registry: resolves tools
- Tool registry → Built-in tools: provides tools
- Tool registry → MCP client: provides MCP tools
- MCP client → MCP servers: calls tools
- Memory services → Conversation memory: uses
- Memory services → Knowledge graph: uses
- Conversation memory → Memory database: reads and writes
- Knowledge graph → Memory database: reads and writes
- Hotkey user → Dictation engine: holds hotkey
- Dictation engine → Dictation history: records history
- Dictation engine → Clipboard and apps: pastes text
- Desktop app → Assistant daemon: starts and controls
- Desktop app → Setup wizard: opens setup
- Memory viewer → Memory database: views memory
- Desktop app → Memory viewer: opens viewer
- Setup wizard → Assistant daemon: configures assistant