Updates
Rolling release / release (push) Successful in 8m36s

This commit is contained in:
2026-09-14 15:26:59 -04:00
parent 507405c6ca
commit b36aee8d77
20 changed files with 684 additions and 47 deletions
+38 -4
View File
@@ -92,8 +92,42 @@ for that vision turn. File paths are not spoken. Frames live under
`/tmp/jarvis-webcam` and are wiped on revoke, lock screen, cancel, or
`WipeComputerTraces()`.
## Local HTTP
## Local HTTP (jarvisd)
QVAC's optional OpenAI-compatible server is localhost-only at port `11434`.
It is a diagnostic surface, not a second Jarvis runtime. Native QVAC-only
operations use `/qvac/v1/*` where supported by the installed QVAC version.
jarvisd serves an OpenAI-compatible API on **`0.0.0.0:18789`** by default
(settings: External API). It uses the same QVAC master as voice — not a second
runtime and not `qvac serve`. Completions always use the chat model configured
in Jarvis; a request `model` field is ignored for selection and the response
reports the active master model id.
| Route | Purpose |
| --- | --- |
| `GET /health` | Liveness; no auth |
| `GET /v1/models` | Lists the loaded master model id |
| `POST /v1/chat/completions` | Chat completion; `stream: true` returns SSE |
Send `Authorization: Bearer <token>`. The token is `openaiApiKey` in
`~/.config/jarvis/config.json` (auto-generated on first start) or
`JARVIS_OPENAI_API_KEY`. Loopback and private-network clients may also use
`Bearer local`.
Example:
```bash
curl -sS http://127.0.0.1:18789/v1/models \
-H "Authorization: Bearer $JARVIS_OPENAI_API_KEY"
curl -sS http://127.0.0.1:18789/v1/chat/completions \
-H "Authorization: Bearer $JARVIS_OPENAI_API_KEY" \
-H 'content-type: application/json' \
-d '{"stream":false,"messages":[{"role":"user","content":"hi"}]}'
```
From Docker on Linux, use `http://172.17.0.1:18789/v1`. Completions run on the
schedulers `background` lane so voice stays higher priority.
## Diagnostic QVAC serve
QVAC's optional `qvac serve --openai` remains localhost-only at port `11434`.
It is a diagnostic surface only and must not run beside jarvisd in production.
Prefer jarvisds `/v1` for external clients. Native QVAC-only operations use
`/qvac/v1/*` where supported by the installed QVAC version.
+1
View File
@@ -23,6 +23,7 @@ loop and is wrapped rather than rewritten.
never call `loadModel()` directly.
- `qvac serve --openai` is an optional diagnostic/API surface and is never
started by `jarvisd`; it must not run beside the master in production.
External OpenAI clients should use jarvisds built-in `/v1` listener instead.
- GPU is mandatory for Jarvis runtime inference. The bridge requests GPU,
enables all GPU layers and GPU multimodal projection, and rejects a load
that QVAC reports as CPU. There is no silent CPU fallback.
+9 -6
View File
@@ -44,12 +44,15 @@ an existing file. Folder deletion only removes empty folders; organize folder
contents by moving individual files. There is no permanent-delete tool.
When memory is enabled, the agent uses `memory/*.md` and `memory_search` for new
durable memory instead of the built-in memory tools. Existing workspace memory
remains as legacy context; there is no automatic migration, synchronization, or
bulk disclosure to the vault. Settings can browse files, search notes/memory, and
read selected Markdown. Turning memory off hides and rejects `memory/` paths and
their trash records through the bridge. Other workspace files and broader file
access permissions remain governed by the existing agent settings.
durable memory. While the Obsidian bridge is enabled, workspace memory tools
(`memory_search`, `memory_get`, `memory_write`, `memory_recall`, `memory_remember`)
are removed and workspace `MEMORY.md` is not injected into the prompt — all
durable memory goes through the vault. Existing workspace notes remain on disk
as legacy files with no automatic migration, synchronization, or bulk disclosure
to the vault. Settings can browse files, search notes/memory, and read selected
Markdown. Turning memory off hides and rejects `memory/` paths and their trash
records through the bridge. Other workspace files and broader file access
permissions remain governed by the existing agent settings.
Hidden files, `.obsidian` configuration/plugin code, symlinks, hardlinks, traversal,
and special files are excluded from agent operations. The bridge does not execute
+11 -1
View File
@@ -38,7 +38,17 @@ wrapper the packaged service uses. Do not reload the daemon with
`node --watch`; Bare is the production loop.
Use `npm run qvac:serve:diagnostic` only when a separate local client needs the
OpenAI-compatible endpoint. Keep its host at `127.0.0.1`.
legacy diagnostic OpenAI endpoint on `127.0.0.1:11434`. Prefer jarvisds built-in
API on port **18789** (`/v1/chat/completions`) for local clients — it shares the
single QVAC master and always uses the configured Jarvis chat model. Do not run
`qvac serve` beside jarvisd in production.
## OpenAI-compatible API (jarvisd)
Enabled by default under Settings → External API. Listen address defaults to
`0.0.0.0:18789` so Docker can reach the host at `http://172.17.0.1:18789/v1`.
The bearer token is stored as `openaiApiKey` (or `JARVIS_OPENAI_API_KEY`).
See [API reference](api.md#local-http-jarvisd).
## User service