4.8 KiB
Troubleshooting
gpu-doctor reports no GPU
Confirm the driver and Vulkan/CUDA runtime are installed, then run the doctor
under the same graphical user session that will run jarvisd. A host command
such as vulkaninfo is insufficient if QVAC itself reports no device. Jarvis
will remain available for diagnostics but refuses inference until QVAC sees a
GPU.
Voice doctor finds no wake engine
Fresh installs use the built-in CPU detector (jarvis-wake-bridge). If
listeningMode is Hold Talk only, or wakeCommand is empty, the detector is
disabled. A custom openWakeWord or sherpa-onnx bridge must read raw 16 kHz mono
PCM from stdin and write detected phrases, one per line, to stdout. Push-to-talk
remains useful for typed or manually triggered testing.
Portal consent succeeds but input is unavailable
Grant desktop starts RemoteDesktop, then Jarvis connects to EIS with the
bundled libei sender. An external JARVIS_LIBEI_BRIDGE is optional. If input
still fails, run npm run cu-doctor and confirm libei is installed. Observation
does not need the injector: after a grant, cu_observe should return a screenshot
and accessibility tree even when pointer injection is down.
Stylesheet parse errcode:15
GNOME Shell's St CSS parser rejects comments that contain --, alpha(var()),
and icon-size. If journalctl shows a stylesheet parse error on
[email protected], copy the current stylesheet.css into the live extension
directory and disable/enable the extension (GNOME 50 cannot ReloadExtension).
See brand.
Settings window crashes on accent hex
GTK 4 Gtk.Entry has no maxLength constructor property. The hex field uses
entry.get_buffer().set_max_length(7). If an older checkout still constructs
maxlength, Settings will abort when opening the Desktop page.
Panel label shows “Jarv…”
The panel used to show the product name and a state chip at the same time, which GNOME truncated. Idle is mark plus Jarvis; busy is mark plus one state chip (Listening / Thinking / Speaking / Privacy). Never both.
The extension is missing
Preferences can open while the panel HUD is gone if the extension is installed
but not enabled in the running GNOME Shell. Re-run the installer so it copies
the HUD files and asks Shell to enable [email protected]. On GNOME 50 that
does not hot-reload; disable/enable the extension or log out if the panel is
still gone. The installer also keeps a copy at
~/.local/share/gnome-shell/extensions/[email protected]:
curl -fsSL https://git.ssh.surf/snxraven/gnome-jarvis/raw/branch/main/packaging/web-installer.sh | bash -s -- --enable
Then confirm metadata.json has UUID [email protected] and run:
gnome-extensions enable [email protected]
journalctl --user -b | grep -i jarvis
If the extension still does not appear, log out and back in once so GNOME Shell reloads its extension search path.
Browser tool says no such file or directory
jarvisd runs under Bare and starts a Node Playwright sidecar. Systemd user
services often do not have node on PATH, so spawn used to fail with that
message. Reinstall so jarvisd.service records JARVIS_BROWSER_NODE, then:
npm install
npm run browser:install
systemctl --user daemon-reload
systemctl --user restart jarvisd.service
To pin Node yourself:
systemctl --user edit jarvisd.service
Add Environment=JARVIS_BROWSER_NODE=/usr/bin/node under [Service].
The service reports 203/EXEC
Current jarvisd.service starts packaged Bare, not /usr/bin/node. If
ExecStart still points at a missing node or Bare binary, re-run
packaging/install.sh --enable or the web installer. Check the result with:
systemctl --user cat jarvisd.service | grep ExecStart
The daemon restarts
Inspect journalctl --user -u jarvisd.service. Common causes are a missing
Bare binary, invalid QVAC config, missing session D-Bus, missing GPU
visibility, or a stale portal grant. Run the three doctor commands before
changing model settings. Restarting jarvisd also clears an active desktop
grant.
Groq agent chat fails immediately
Settings → Models → Agent inference → Groq requires a key in the Groq API key
field, or GROQ_API_KEY / JARVIS_GROQ_API_KEY. Jarvis does not fall back to
local QVAC chat. 401 means the key was rejected; 429 is rate limiting.
Speech, wake, tools, desktop, browser, and camera stay local. Webcam stills
reach Groq only if you pick a Qwen Groq vision model. Restart jarvisd after
switching between Local QVAC and Groq.
Rolling release did not publish
Check the Gitea Actions log and repository secret name. It must be exactly
RELEASE_TOKEN with repository write permission. The workflow only publishes
from main; pull requests and other branches run CI but do not replace the
rolling prerelease.