Files
gnome-jarvis/docs/bare-runtime.md
T
snxraven a3314db1e9
Rolling release / release (push) Canceled after 14m9s
CI / verify (push) Canceled after 14m18s
Run daemon on packaged Bare runtime
2026-09-11 15:52:53 -04:00

2.2 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 installer executes node_modules/bare-runtime-linux-*/bin/bare directly. The node_modules/.bin/bare convenience script is a Node launcher and is not used by the service. The generated systemd unit therefore has no Node executable in its ExecStart line.

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.