Releases: Explicabler1/Jarvis
Release list
Jarvis v0.4.0
Linux, Spotify, and a first run that tells you what is wrong.
Install
Windows — download Jarvis-0.4.0-Setup.exe and run it. Windows 10/11 x64, per-user by default (no admin). Unsigned, so SmartScreen will warn — More info → Run anyway. Upgrading keeps everything in %LOCALAPPDATA%\Jarvis.
Linux — new:
curl -fsSL https://raw.githubusercontent.com/Explicabler1/Jarvis/master/install.sh | bash
Python 3.12–3.14 and git, no root. It puts a virtualenv under ~/.local/share/jarvis, a launcher in ~/.local/bin, and then runs jarvis setup — the same questions the Windows wizard asks, in a terminal.
Six Windows-only wheels were unconditional dependencies, so pip install . failed outright on Linux before this. Underneath them, three subsystems were Windows-shaped and are not any more: the media session (MPRIS via playerctl, volume via wpctl/pactl/amixer), app launching (an XDG desktop-entry scan including the Flatpak and Snap export paths), and where Jarvis writes — ~/.local/share/jarvis, or $XDG_DATA_HOME, or JARVIS_HOME.
Jarvis will not start without a brain
This is the change most likely to be noticed. FreeLLMAPI with no key, or Ollama with nothing pulled, produced an assistant that answered every single message with a connection error — which reads as a broken app rather than an unconfigured one.
jarvis, jarvis web, jarvis gui and jarvis chat now probe both backends first. If neither can answer they print what is missing and how to fix it, and do not open. Either backend alone is enough.
jarvis doctor the same checks, on demand
jarvis setup the wizard; safe to re-run to change anything
jarvis setup --brain-only fix just this
The wizard will install Ollama, start it, and pull a model for you. It never runs the install script without being asked — that is the one prompt that defaults to no, because --yes and a non-interactive run take every default and taking a default must not mean piping a remote script into a root shell.
JARVIS_SKIP_READINESS=1 bypasses the gate.
Play a named song on a free Spotify account
"Play Bohemian Rhapsody" was something Jarvis had to decline. Spotify's Web API can search on any account and its playback endpoints are Premium-only, returning 403 forever otherwise — so Jarvis does not ask Spotify to play something. It asks the Spotify client you are already signed into to.
jarvis spotify install into the Spotify desktop app, via Spicetify
jarvis spotify chrome or the web player, via a Chrome extension
jarvis spotify status what is connected
A small extension inside that client connects to a loopback bridge and takes commands: search, play, queue, transport, volume, shuffle. jarvis spotify install substitutes this install's port and token into the extension it copies, so nothing is typed by hand. Needs Spicetify and one spicetify backup apply first.
Eight new tools under spotify.*, and every one of them degrades to an explanation rather than an error when no client is connected.
The web UI got the things it was missing
Artifacts. The browser had none, so when Jarvis said "I've drawn you a diagram" the UI toasted the title and offered nowhere to go and look at it. There is now an Artifacts tab that renders Mermaid — from the same pinned library the desktop app uses, served locally, not from a CDN — sanitises model-authored SVG, and renders markdown tables, which the transcript renderer could not do at all.
Setup. The same readiness report jarvis doctor prints, with install buttons for every speech model and for Mermaid, and a Spotify status card.
Voice that works. Four separate causes, all fixed:
- A page served over plain http to anything but localhost has no microphone at all —
navigator.mediaDevicesis undefined outside a secure context, which is exactly what happens when you open the tab on your phone. Detected at load now, with the three real fixes named. - The recording container was whatever the browser picked, which is not always one the server can decode.
- Sliding the pointer off the button stopped the recording, cutting utterances in half. Pointer capture instead — plus spacebar push-to-talk, click-to-toggle, and stop-when-you-stop-talking.
- Replies were played with
new Audio().play(), which browsers refuse without a recent user gesture, so speech worked right after you pressed Send and silently did not otherwise. Everything plays through one unlocked AudioContext now, a sentence at a time as the reply streams.
Plus a Test the microphone and speaker button that exercises the whole path without the model.
Better speech models
distil-small.en replaces small.en as the default: smaller, faster, and no less accurate. With a GPU, large-v3-turbo is the one to pick — large-v3's decoder cut from 32 layers to 4, roughly 6x faster for accuracy within a point or two. distil-large-v3.5 joins them.
Kokoro is now offered at all three published precisions. The int8 export is 115 MB against the f32's 337, with the same voices and no audible loss, and is what the installer preselects.
Three decoding options that were left at their defaults are not any more: vad_filter (what stops a browser recording's trailing room tone becoming "Thank you."), condition_on_previous_text=False (what stops the repetition loop), and language, which was hardcoded to English and so quietly reduced the multilingual models to English-only ones.
Mermaid
artifacts.mermaid_js_path has always defaulted to data/vendor/mermaid.min.js, nothing ever put a file there, and the renderer blocks network access by design — so every diagram Jarvis drew rendered as a "library not found" notice. The installer offers it, jarvis setup offers it, both Settings screens have a button, and jarvis install-assets mermaid does it from a terminal. Pinned by version and verified against a SHA-256, because it is executed with unsafe-eval inside the artifact webview.
Everything downloadable, from wherever you are
Speech models and Mermaid were previously only obtainable from the installer's wizard page or a CLI most users had no reason to know about. There is now a Downloads card in the desktop Settings view and a Setup tab in the browser, both driving the same catalogue and the same downloader as the wizard.
Also
- CI runs the suite on Linux as well as Windows, with
JARVIS_HOMEoutside the checkout so the installed-copy path is what gets exercised. - The Core view's popover measured 151px against its 150px band with some fonts, silently clipping a line.
tts_statusread the active voice as "whichever of the Kokoro and Piper paths is set", and both are normally set at once — so every Piper voice reported itself unselected while Kokoro was configured.- Media control asks its provider whether it works rather than reading a module global, which is what made the media tools testable off Windows.
Jarvis v0.3.0
Voice everywhere, and an installer that sets it up for you.
Install
Download Jarvis-0.3.0-Setup.exe and run it. Windows 10/11 x64, per-user by default (no admin). The wizard asks three things:
- Which front end — desktop app or web browser. Changeable later in Settings; both drive the same assistant.
- Which voice — Kokoro-82M (most natural, ~340 MB) or one of four Piper voices (~63–121 MB), or none.
- Which speech recognition — Whisper
tiny.enthroughmedium.en, or skip and let it fetch on first use.
The models are downloaded after install rather than bundled: Kokoro alone would roughly double the installer, and which voice and model size a machine wants is genuinely personal. A failed download never fails the install — you get Jarvis working with speech unconfigured, and a Set up voice shortcut to try again.
Upgrading keeps everything in %LOCALAPPDATA%\Jarvis. Unsigned, so SmartScreen will warn — More info → Run anyway.
Voice in the web UI
Two paths, because the browser tab is not always on the machine Jarvis runs on.
Hold the mic button and this device records, uploads, and is transcribed by the same Whisper model the desktop app uses — works from a phone in another room. Push-to-talk by nature: there is no wake word listening inside a browser tab. Tick speak replies in this browser and answers are synthesized on the Jarvis machine and streamed back as audio to play locally.
Or tick listen on the Jarvis machine and the full pipeline runs there: wake word, VAD, STT and TTS on that machine's microphone and speakers, exactly as the desktop app drives it.
Both end in the same turn — same memory, same permission broker, same tools.
Managing speech models
jarvis voice-setup --list what is on offer
jarvis voice-setup --tts kokoro --stt small.en fetch and select
jarvis voice-setup --tts none no speech output
Downloads are written to .part and renamed only once complete, so an interrupted install never leaves a truncated model that loads and then fails.
Fixed
Voice model paths ship as relative (data/voices/...) and resolved against the current working directory — which, launched from a Start-menu shortcut, is the install directory. A voice the installer had just downloaded would have been reported missing and speech would silently never have worked. They now resolve against the writable root.
Also
Releases are built by GitHub Actions now: every push to master builds the installer, installs it on a clean runner and checks it actually starts, and a v* tag publishes it here.
~340 MB download, ~1.1 GB installed, plus whatever speech models you choose. x64 only. 682 tests pass.
Jarvis 0.2.0 — web UI, and a choice of front end
Jarvis now has two front ends, and the installer asks which one you want.
Install
Download Jarvis-0.2.0-Setup.exe and run it. Windows 10/11 x64, per-user by default (no admin). The setup wizard asks how you want to use Jarvis:
| Desktop app | native window, system tray, voice, artifact rendering |
| Web browser | a local server you open in a tab |
Both drive the same assistant — one composition root, the same skills, the same permission broker, the same memory. The choice is not permanent: it is the ui.mode setting, changeable in either front end's Settings screen, and both have a switch now button that starts the other one.
Upgrading from 0.1.0 keeps everything in %LOCALAPPDATA%\Jarvis — your key, memory, settings and generated skills.
The installer is unsigned, so SmartScreen will warn on first run — More info → Run anyway.
The web UI
Serves Core (chat with streaming replies and permission prompts), System, Skills and Files, plus the settings it is allowed to write.
It is not full parity with the desktop app, deliberately: no artifact rendering, no dashboard panels, and the file allow-list is read-only there — widening what Jarvis may read is a decision for the native app, not a browser tab.
Security, since this is a local server that can call tools:
- Binds to
127.0.0.1, and mints a token per run that every/apiroute demands. - Loopback alone is not a boundary — any page you have open can POST to
127.0.0.1— but it cannot read the page carrying the token, nor set the header cross-origin without a preflight the browser refuses. - Settings writes go through an allow-list, not a deny-filter.
- Voice runs server-side: the mic button drives the microphone on the machine running Jarvis, not the one running the browser.
Command line
jarvis whichever front end ui.mode names
jarvis gui force the desktop app
jarvis web force the browser UI
jarvis ui-mode print the current mode; pass desktop|web to set it
The Start menu carries all three: a plain Jarvis shortcut that follows the setting, plus Jarvis (desktop app) and Jarvis (web UI) that force one — the escape hatch if the configured front end ever will not start.
Notes
~340 MB download, ~1.1 GB installed. Unsigned. x64 only. 655 tests pass.
Jarvis 0.1.0 — Windows installer
First packaged build of Jarvis — a local desktop AI assistant for Windows.
Install
Download Jarvis-0.1.0-Setup.exe and run it. Windows 10/11 x64, installs per-user by default (no admin prompt). Nothing else to install: Python, Qt, the ONNX runtime and the speech models are all bundled.
The installer is unsigned, so SmartScreen will warn on first run — More info → Run anyway.
After installing
Jarvis needs a FreeLLMAPI router and a key to think. Paste yours into:
%LOCALAPPDATA%\Jarvis\.env
Until you do, only the local Ollama fallback answers. Everything Jarvis writes lives in that same folder — .env, settings.local.toml, data/ (memory and scheduler databases), and drop-in skills/. Uninstalling leaves it alone, so an upgrade keeps your key, memory and generated skills.
profiles.embed starts unset by design and has no fallback: run jarvis-cli models --embeddings, pick one, and pin it in Settings. Memory and the semantic tool router stay offline until you do.
What's in it
LLM gateway with retry, circuit breakers and profile degradation; event bus; permission broker; skill system with nine built-in skills; the agent loop; a PySide6 dashboard with System, Skills, Files and Settings views; voice (wake word, VAD, STT, TTS, push-to-talk); memory (episodic log, remembered facts, document search, semantic tool router); and proactive scheduling (persistent reminders, do-not-disturb, morning briefing).
Two executables ship in the install directory:
jarvis.exe |
the dashboard — what the shortcuts point at |
jarvis-cli.exe |
chat, health, skills, models |
Notes
~340 MB download, ~1.1 GB installed. Unsigned. x64 only.