v1.1.3
v1.1.3 — Safer installs, accurate access modes, and an operations CLI
A patch release that hardens the install, deployment, and update lifecycle. Re-running setup no
longer loses configuration or data, access-mode behaviour and documentation match the deployed
configuration, and a new jarvis-research CLI manages updates and uninstalls transactionally.
This release changes application code, so the :1.1.3 images differ from :1.1.2.
Security
- Credential exchange is refused over plaintext off loopback. The API-key exchange and
magic-link verification endpoints reject requests from non-loopback hosts over plain HTTP, so a
bearer exchange cannot cross the network unencrypted. - First-admin bootstrap is locked in production. The initial-admin setup path is gated in
production, and the setup token is surfaced everywhere it is needed. - Passkeys are not offered for IP-address origins. A raw-IP origin is not a valid WebAuthn
relying party, so passkey enrolment is hidden there instead of failing mid-flow. - The setup token stays out of server logs. The setup wizard reads its token from the URL
fragment, and the setup link is always printed with a loopback host, so the token is never sent
over the network. - SMTP credentials are passed to the application as a Docker secret rather than an environment
variable.
Added
jarvis-researchoperations CLI. update, status, start, stop, restart, logs, doctor, repair,
register, and uninstall, resolved from a registration file. Updates verify that the target
release's images are published, classify new migrations read from the target tag, require a fresh
checksum-verified backup before destructive migrations, stage all images before advancing the
checkout (fast-forward only), and commit only after services report healthy. Rollback guidance
distinguishes image rollback from schema rollback.- Tiered uninstall. Four scoped tiers (stop, images, data, purge) with a complete dry-run
enumeration, typed confirmations that flags cannot bypass, an offer to export the backup
encryption key before a purge, and a refusal with a resource inventory when the Docker daemon is
unavailable. --public-originflag. Configures and probes a named private HTTPS origin end to end,
reporting the edge as pending until the probe succeeds.
Fixed
- Re-running setup preserves configuration and data. The existing
.envis kept byte-for-byte,
including operator-added keys; template keys new to a release are appended; and only settings
supplied to the current invocation are changed. A rolling snapshot is taken before any rebuild,
with a restore command printed if setup fails before the stack starts. The certificate-repair path
that removed the dashboard container together with its volumes has been deleted. - GPU detection is more accurate on virtualized and non-Intel hosts, and Vulkan is opt-in. Render
nodes are matched by PCI vendor ID, GPU overlays pass numeric group IDs that resolve inside the
container, and Intel and AMD-without-KFD hosts default to CPU with a hint. A failed GPU start
offers a CPU retry. This resolves an arm64 VM install that could not start Ollama. - LAN access is reported as plain HTTP. The displayed URL, reachability probe, and CORS origins
reflect HTTP, and the LAN address joins the accepted-host list. - The local HTTPS profile no longer collides with the dashboard port — it runs on 3443 — and
Let's Encrypt installs report success only after the certificate answers a bounded health poll. - Email delivery reports its real result. Admin responses include a manual sign-in link when
delivery did not occur, and account email verification is only marked sent on actual delivery. - Preflight and readiness are more thorough and correctly ordered. Preflight now covers python3,
the minimum Compose version the overlays require, the host ports the deployment will bind, WSL
environments, and the NVIDIA container toolkit. The readiness script distinguishes warnings from
failures in its exit code — warnings no longer abort production installs — and the completion
banner prints only after the checks pass. - The host-port pre-check honors exported overrides, matching how Compose itself resolves publish
addresses. update.shstages every image before recreating any service, reports services without
healthchecks explicitly, gains a--yesflag for unattended runs, and installs the CLI after a
successful update so existing installs pick it up.- Pulse stage-1 scoring tolerates structured author IDs and applies topic dampening.
- Citations to nonexistent sources are marked unverified rather than treated as resolved.
- Flashcard generation receives the paper text verbatim.
Documentation
- The access-modes and deployment guides describe the shipped configuration: encryption and
certificate claims that did not apply to plain-HTTP routes are removed, each supported ingress
adapter has a documented trust contract, and a new test asserts the documented route table matches
the installer's route registry.
Model and backend defaults
No model, backend, reranker, or embedding default changes in this release. Local-first defaults
remain unchanged.
Upgrading
Run ./update.sh; it pulls the new application images (use --build-local to rebuild from source)
and installs the jarvis-research CLI. To roll back to a previously published release, pin
JARVIS_VERSION to that tag and pull it.