diff --git a/README.md b/README.md index 42f826d..aaba170 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,28 @@ diagnostics and control surfaces, but Jarvis will not run inference on them. See [hardware compatibility](docs/hardware-compatibility.md) and [troubleshooting](docs/troubleshooting.md). +## Install with the web installer + +The recommended Gitea installer downloads the source snapshot at the current +rolling ref, then runs the reviewed user-local installer. It does not require +root access and does not install into system directories. + +~~~bash +curl -fsSL https://git.ssh.surf/snxraven/gnome-jarvis/raw/branch/main/packaging/web-installer.sh | bash -s -- --enable +~~~ + +Omit `--enable` to install without starting the service. Run the first-run +setup afterward: + +~~~bash +bash ~/.local/share/jarvis-qvac/packaging/first-run.sh +gnome-extensions enable jarvis@qvac.local +~~~ + +The installer requires Node.js 22.17+, npm, curl, and tar. For a mirror or a +specific Gitea ref, set `JARVIS_SERVER`, `JARVIS_REPO`, or `JARVIS_REF` before +the command. The downloaded ref must contain the repository packaging files. + ## Install from a checkout The harness is copied into vendor/agent-harness. It is not a symlink and the diff --git a/docs/operations.md b/docs/operations.md index 04b5f03..b35b4d9 100644 --- a/docs/operations.md +++ b/docs/operations.md @@ -6,6 +6,19 @@ Ubuntu GNOME 24.04 or newer, Node.js 22.17+, PipeWire/WirePlumber, GNOME desktop portals, GTK4/libadwaita, AT-SPI2, and a QVAC-visible GPU are required for the full runtime. See [hardware compatibility](hardware-compatibility.md). +## Web installation + +For the current Gitea rolling build: + +~~~bash +curl -fsSL https://git.ssh.surf/snxraven/gnome-jarvis/raw/branch/main/packaging/web-installer.sh | bash -s -- --enable +~~~ + +The installer downloads the source archive at the `rolling` ref and delegates +to the repository installer. Omit `--enable` to copy files without starting +the service. Pin a reviewed ref or use a mirror with `JARVIS_REF`, +`JARVIS_SERVER`, and `JARVIS_REPO`. + ## Development start ```bash diff --git a/docs/qvac-runtime.md b/docs/qvac-runtime.md index dce3c43..43c3d3a 100644 --- a/docs/qvac-runtime.md +++ b/docs/qvac-runtime.md @@ -14,7 +14,7 @@ flowchart LR CU[Computer vision] --> M J[Jobs: media / RAG] --> M M --> L{GPU admission} - L -->|fit| SDK[@qvac/sdk 0.19.1] + L -->|fit| SDK["QVAC SDK 0.19.1"] L -->|no fit| E[truthful unavailable error] SDK --> W[one QVAC worker] ``` diff --git a/packaging/web-installer.sh b/packaging/web-installer.sh new file mode 100755 index 0000000..94e06f1 --- /dev/null +++ b/packaging/web-installer.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Supported invocation: +# curl -fsSL https://git.ssh.surf/snxraven/gnome-jarvis/raw/branch/main/packaging/web-installer.sh | bash -s -- --enable +# Override JARVIS_SERVER and JARVIS_REPO for a mirror or private deployment. + +SERVER="${JARVIS_SERVER:-https://git.ssh.surf}" +REPO="${JARVIS_REPO:-snxraven/gnome-jarvis}" +REF="${JARVIS_REF:-rolling}" +TMP_DIR="" + +usage() { + cat <<'EOF' +JARVIS-QVAC web installer + +Usage: + curl -fsSL https://git.ssh.surf/snxraven/gnome-jarvis/raw/branch/main/packaging/web-installer.sh | bash -s -- [--enable] + +Options: + --enable Enable and start the per-user jarvisd.service after install. + --help Show this help. + +Environment: + JARVIS_SERVER Gitea server base URL. + JARVIS_REPO Gitea owner/repository, default snxraven/gnome-jarvis. + JARVIS_REF Gitea ref to install, default rolling. +EOF +} + +for arg in "$@"; do + case "$arg" in + --enable) ;; + --help|-h) usage; exit 0 ;; + *) echo "Unknown option: $arg" >&2; usage >&2; exit 2 ;; + esac +done + +command -v curl >/dev/null || { echo "curl is required" >&2; exit 1; } +command -v tar >/dev/null || { echo "tar is required" >&2; exit 1; } +command -v npm >/dev/null || { echo "Node.js/npm 22.17+ is required" >&2; exit 1; } +node -e 'const [major,minor]=process.versions.node.split(".").map(Number); if (major < 22 || (major === 22 && minor < 17)) process.exit(1)' \ + || { echo "Node.js 22.17+ is required" >&2; exit 1; } + +TMP_DIR="$(mktemp -d "${TMPDIR:-/tmp}/jarvis-web-install.XXXXXX")" +cleanup() { rm -rf "$TMP_DIR"; } +trap cleanup EXIT + +ARCHIVE_URL="${SERVER%/}/${REPO}/archive/${REF}.tar.gz" +ARCHIVE="${TMP_DIR}/jarvis.tar.gz" +echo "Downloading JARVIS-QVAC source ref '${REF}' from ${SERVER}" +curl --fail --location --silent --show-error --retry 3 --proto '=https' --tlsv1.2 \ + "$ARCHIVE_URL" -o "$ARCHIVE" +test -s "$ARCHIVE" +mkdir -p "$TMP_DIR/src" +tar -xzf "$ARCHIVE" -C "$TMP_DIR/src" +SOURCE_DIR="$(find "$TMP_DIR/src" -mindepth 1 -maxdepth 1 -type d -print -quit)" +test -n "$SOURCE_DIR" || { echo "Downloaded archive contained no source directory" >&2; exit 1; } +test -x "$SOURCE_DIR/packaging/install.sh" || { echo "Downloaded ref has no installer" >&2; exit 1; } + +echo "Installing into the current user account" +exec bash "$SOURCE_DIR/packaging/install.sh" "$@"