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

52 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.
```mermaid
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:
```bash
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.