Files
gnome-jarvis/docs/bare-runtime.md
T
snxravenandCursor 3001b90df8
Rolling release / release (push) Successful in 9m57s
Copy the Bare ELF into the release archive as a real file.
The package check expected an exact node_modules member, but a symlink from the build tree is not a runtime other machines can run.

Co-authored-by: Cursor <[email protected]>
2026-09-14 12:39:20 -04:00

2.4 KiB
Raw Blame History

Bare runtime

The installed JARVIS daemon runs on the packaged Bare ELF runtime. Node.js is used in CI for npm dependency resolution and the portable test suite; it is not required on an end users machine.

flowchart LR
  Install[web installer] --> Bundle[rolling Bare bundle]
  Bundle --> ELF[bare-runtime ELF]
  ELF --> Entry[daemon/bare-entry.js]
  Entry --> Compat[bare-node-runtime map]
  Compat --> Harness[copied agent harness]
  Entry --> QVAC[@qvac/inference in process]
  QVAC --> GPU[QVAC GPU backend]

Bare has no Node standard library. JARVIS carries the official bare-node-runtime conditional map at the root, daemon, computer-use, and copied harness package boundaries. Portable source imports such as node:fs, node:path, and node:events resolve to bare-fs, bare-path, and bare-events. Process execution resolves to bare-subprocess. New direct runtime code should prefer bare-* names when it has no Node test counterpart.

The QVAC boundary has one deliberate runtime switch. Node uses the existing @qvac/sdk surface. Bare uses @qvac/inference in process and registers the LLM plugin once inside the copied harness engine. The daemon remains the single QVAC owner: no skill, job, or extension creates another inference runtime.

packaging/prepare-bare-deps.py applies the same official map to CommonJS dependencies at bundle-build time. Bare resolves imports at each package boundary, and some third party CommonJS packages do not declare their own map. The preparation changes only the release copy under node_modules.

Build and verify the bundle with:

npm ci
npm run bare:smoke
npm run package:bare

The release archive stores the Bare ELF at runtime/bare, copied into the bundle as a regular file so it is not a symlink back to the build machine. The installer also accepts node_modules/bare-runtime-linux-*/bin/bare. It does not fall back to a bare binary on PATH. The user unit starts %h/.local/share/jarvis-qvac/packaging/jarvisd-launch.sh, which resolves that ELF relative to the install. The checkout unit under systemd/user/ is not shipped.

GPU policy remains strict. The Bare QVAC engine must report a visible GPU and the master load path passes device: "gpu", full GPU layer offload, and GPU multimodal projection settings. A missing or unusable GPU stops inference and is reported by gpu-doctor; it never silently falls back to CPU.