A local-first, privacy-respecting AI voice assistant for Windows.
Bilingual ยท Profile-based memory ยท Modern HUD interface ยท Standalone.exe
JARVIS is a local-first Windows voice assistant designed for real everyday use. It listens continuously, wakes on a trigger word, executes desktop and system commands, and remembers who you are โ all without sending your voice to the cloud.
Wake word โโโถ Command recognized โโโถ Local execution
โโโโถ Online fallback (optional)
Core philosophy:
- ๐ Voice input/output runs 100% locally
- ๐ง Per-profile persistent memory & preferences
- ๐ Online only when you need: weather, news, Wikipedia, AI chat
- ๐ซ๐ท ๐ฌ๐ง Full French & English command support
- ๐ฆ Ships as a single standalone
.exe
|
๐จ Interface
|
๐ง Intelligence
|
|
๐พ Memory & Profiles
|
๐ฅ๏ธ Desktop Power
|
MyJarvis/
โโโ ๐ main.py โ PySide6 UI, wake flow, main loop
โโโ ๐๏ธ listener.py โ Vosk recognition, mic input
โโโ ๐ speaker.py โ Windows SAPI voice output
โโโ โ๏ธ actions.py โ Command router & local execution
โโโ ๐ง brain.py โ Memory, profiles, reminders, helpers
โ
โโโ model/ โ Vosk speech model (you provide this)
โ
โโโ profiles/
โโโ active_profile.json
โโโ <profile_id>/
โโโ profile.json
โโโ memory.json
โโโ notes.txt
โโโ tasks.json
| Requirement | Details |
|---|---|
| OS | Windows 10 or Windows 11 |
| Python | 3.10 or higher |
| Microphone | Any working input device |
| SAPI Voice | At least one Windows voice installed |
| Vosk Model | One model folder (FR, EN, or multilingual) |
pip install PySide6 vosk sounddevice numpy comtypes pywin32 pycaw pyautogui psutil pygetwindow wikipedia screen_brightness_control pyperclip reportlabOptional AI chat layer:
pip install g4fJARVIS works fully without
g4ffor all local commands.
Download a Vosk model and place it in:
model/
โโโ am/
โโโ conf/
โโโ graph/
โโโ ivector/
โโโ README
| Goal | Recommended model |
|---|---|
| Best French recognition | French Vosk model |
| Best English recognition | English Vosk model |
| Mixed usage | Multilingual Vosk model |
| Both languages | Set primary + secondary via env vars |
python main.pyOn startup, JARVIS:
- Initializes the Qt HUD interface
- Selects the best Windows microphone
- Loads Windows SAPI speaker
- Loads the active profile
- Optionally runs onboarding
- Enters standby mode โ waiting for your wake word
| Button | Action |
|---|---|
FR |
Lock replies to French |
EN |
Lock replies to English |
AUTO |
Follow the language of the current request |
STARTUP |
Toggle Windows auto-launch at login |
| GitHub icon | Open the project GitHub page |
powershell -ExecutionPolicy Bypass -File .\build_exe.ps1Output:
dist/Jarvis.exe
The build bundles the full app, Vosk model, native DLLs, and icon into a single portable binary โ no Python installation required on the target machine.
On a fresh profile, JARVIS starts with a bilingual voice introduction (EN + FR) and asks you to choose your preferred language. That choice persists in your profile.
Onboarding collects:
- Your name
- Personality mode (
serieux/drole) - Startup briefing preference
- Auto-news preference
- PC surveillance preference
Every answer goes through a confirmation step โ JARVIS repeats what it heard, and you confirm with oui or reject with non.
To trigger onboarding later:
lance la configuration
configure mon profil
refais la configuration
๐ Wake & Control
Jarvis / reveille-toi / wake up
Jarvis ouvre Chrome
stop / silence / arrete
merci / au revoir / ferme-toi
๐ Language
parle francais / speak french
parle anglais / speak english
langue auto / language auto
๐ Apps, Sites & Folders
ouvre Chrome / open Chrome
ouvre Telegram / ouvre Steam / ouvre Word
ouvre mes documents / ouvre mes telechargements
ferme Telegram
installe Discord / install Spotify
prepare mon travail
๐ Audio, Display & Capture
augmente le volume / diminue le volume
volume a 35 / quel est le volume
augmente la luminosite / luminosite a 60
capture d'ecran / take a screenshot
enregistrement video / record video
capture vocale
๐ป System
verrouille l'ecran
mets le pc en veille
redemarre le pc
eteins le pc dans 5 minutes / annule l'arret
mode sombre / mode clair
statut du systeme / system status
mon cpu tourne a combien
j'ai combien de ram dans mon pc
๐ Productivity & Files
note ca : acheter du pain
ajoute la tache appeler maman
affiche mes taches
rappelle-moi de boire de l'eau dans 10 minutes
ajoute rendez-vous demain 15h dentiste
agenda aujourd'hui
cree un pdf / cree un CV / cree une facture
cree un fichier Word / cree un dossier Travail sur le bureau
quand je dis mode travail, fais ouvre chrome puis ouvre vscode
๐ Information & Utilities
quelle heure est-il / what time is it
quelle est la meteo / meteo a Montreal
recherche Albert Einstein / cherche la relativite
actualites / prix du bitcoin
donne-moi un resume de l'histoire de Napoleon
tell me about Alan Turing
choisis entre cafe et the
๐ผ๏ธ Image Generation
genere une image de chat bleu
create an image of a blue cat
une image de crevettes qui mangent du chewing-gum
[follow-up] un animal / de style cartoon / with sunglasses
๐ฎ Modes & Automation
mode gaming / mode dev
mode assistant quotidien
dashboard / mise a jour
active le mode conversation continue
| Feature | Status |
|---|---|
| French commands | โ Full support |
| English commands | โ Full support |
| Mixed AUTO mode | โ Language-aware routing |
| French voice recognition | โ Best with French Vosk model |
| English voice recognition | โ Best with English or multilingual model |
| Dual-model recognition pass | โ
Optional via JARVIS_SECONDARY_MODEL_PATH |
Note: Command routing is fully bilingual. Recognition quality depends on the Vosk model you install.
| Variable | Purpose | Example |
|---|---|---|
JARVIS_MIC_GAIN |
Software mic gain multiplier | 2.5 |
JARVIS_MIC_DEVICE |
Force a specific mic by index or name | Realtek |
JARVIS_MODEL_PATH |
Primary Vosk model path | C:\Models\vosk-model-fr |
JARVIS_SECONDARY_MODEL_PATH |
Secondary Vosk model (optional dual-pass) | C:\Models\vosk-model-en |
$env:JARVIS_MODEL_PATH="C:\Models\vosk-model-fr-0.22"
$env:JARVIS_SECONDARY_MODEL_PATH="C:\Models\vosk-model-small-en-us-0.15"
python main.pyJARVIS uses local logic first. The AI layer activates only when a command is meaningful but unmapped locally.
| Use case | Handled by |
|---|---|
| Common commands & system actions | Local router (always) |
| Open-ended questions & explanations | AI layer (optional) |
| Translation requests | AI layer (optional) |
| Partial command recovery | AI layer (optional) |
Guardrails in place:
- JARVIS will not identify itself as ChatGPT or OpenAI
- Image requests prefer the local image path
- Short follow-ups use recent context before falling back
- Raw JSON technical dumps are suppressed in recovery mode
Jarvis hears itself / reacts to its own voice
JARVIS clears the recognition buffer while SAPI is speaking and keeps a guard window after speech ends. If echo still triggers commands:
- Lower speaker volume
- Use a headset
- Move the mic away from speakers
Listener crashed with "Failed to process waveform"
JARVIS auto-resets the recognizer and restarts mic streaming. If this recurs:
- Lower
JARVIS_MIC_GAIN - Reduce Windows mic input gain
- Try another device via
JARVIS_MIC_DEVICE - Use a headset mic
Wrong reply language
Use the FR / EN / AUTO buttons in the UI, or say:
parle francais / parle anglais / langue auto
App or site does not open
JARVIS uses explicit aliases โ shortcut indexing โ fuzzy match โ web fallback. Make sure the app has a Start Menu shortcut or a known URI handler. Built-in aliases include: Telegram, Steam, Discord, Spotify, Word, Excel, PowerPoint, VLC, OBS, Parsec, Rocket League.
Brightness does not change
External monitors typically block software brightness control. This works best on laptop displays.
g4f fails
All local commands remain available. g4f provider instability does not affect local routing.
- Microphone selector directly in the UI
- Persistent reminders across full restarts
- Cleaner command plugin/extension system
- Improved browser automation
- Richer document templates (CV, invoice, report)
- Better natural dialogue memory across longer sessions
- Windows only โ no macOS or Linux support
- No automatic speaker recognition yet
- AI layer depends on third-party
g4fprovider availability - Some app launches require a Start Menu shortcut or URI handler
- Game Bar recording depends on Windows configuration
- Software brightness control limited on external monitors
