+38
-4
@@ -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
|
||||
scheduler’s `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 jarvisd’s `/v1` for external clients. Native QVAC-only operations use
|
||||
`/qvac/v1/*` where supported by the installed QVAC version.
|
||||
|
||||
@@ -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 jarvisd’s 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
@@ -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
@@ -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 jarvisd’s 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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user