From cf8d3e2cbefeb25d09daa70e8b585e0f743a718b Mon Sep 17 00:00:00 2001 From: krypticmouse Date: Sat, 23 May 2026 19:05:26 +0000 Subject: [PATCH] fix(install): serve install.sh from GitHub Pages, make it the canonical URL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The documented install command pointed at `https://openjarvis.ai/install.sh`, but that domain is community-operated (not controlled by this project) and its TLS config broke — every new user hit `sslv3 alert handshake failure` (#337, #352). Since we can't fix a domain we don't control, this moves the installer onto infrastructure we DO control: the project's GitHub Pages docs site. Changes: - **`docs/gen_install_script.py`** (new) + **`mkdocs.yml`**: a `gen-files` hook copies `scripts/install/install.sh` verbatim into the built site at `install.sh` on every `mkdocs build`. Single source of truth — the script stays at `scripts/install/install.sh` (still bundled into the wheel as `_install_scripts/`); the published copy can't drift. Verified locally: `mkdocs build` emits `site/install.sh` byte-identical to the source. New canonical URL: `https://open-jarvis.github.io/OpenJarvis/install.sh` — HTTPS always valid (GitHub's cert), fully under project control. - **`README.md`**: canonical command switched to the github.io URL for both the Installation and Quick Start blocks. Also addresses the uv discoverability gap — explicitly states the curl installer downloads uv for you (no prerequisite), and that the Windows **desktop .exe** expects uv to be installed first, with the exact PowerShell command. - **`docs/getting-started/{install,wsl2,macos,linux}.md`**: canonical URL switched to github.io. `install.md` gains an "Install URL" info note explaining the github.io URL is canonical and that the older `openjarvis.ai` URL is community-operated with intermittent TLS issues. - **`scripts/install/install.sh`** + **`jarvis-wrapper.sh`**: usage comment, the WSL re-run hint (added in #399), and the wrapper's re-install message all updated to the github.io URL. Migration note for maintainers: ask whoever operates `openjarvis.ai` to CNAME it to `open-jarvis.github.io`. Once they do, `openjarvis.ai/install.sh` will serve this same GitHub Pages content with a valid GitHub-managed cert, and the nicer brand URL can become canonical again with zero further code changes. Until then, the github.io URL works and is under our control. Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 21 +++++++++------------ docs/gen_install_script.py | 21 +++++++++++++++++++++ docs/getting-started/install.md | 21 ++++++++++----------- docs/getting-started/linux.md | 2 +- docs/getting-started/macos.md | 2 +- docs/getting-started/wsl2.md | 2 +- mkdocs.yml | 1 + scripts/install/install.sh | 6 ++---- scripts/install/jarvis-wrapper.sh | 2 +- 9 files changed, 47 insertions(+), 31 deletions(-) create mode 100644 docs/gen_install_script.py diff --git a/README.md b/README.md index 2b98c9c4..72c13b3f 100644 --- a/README.md +++ b/README.md @@ -34,9 +34,11 @@ OpenJarvis is that stack. It is a framework for local-first personal AI, built a **macOS / Linux:** ```bash -curl -fsSL https://openjarvis.ai/install.sh | bash +curl -fsSL https://open-jarvis.github.io/OpenJarvis/install.sh | bash ``` +The installer handles everything for you — including [uv](https://docs.astral.sh/uv/), the Python venv, Ollama, and a small starter model. You don't need to install anything first. + **Windows:** the installer is a `bash` script and won't run in PowerShell or `cmd`. Pick one of: - **WSL2 (recommended for the CLI / Python SDK)** — one-time setup in an admin PowerShell, then run the same `curl … | bash` inside Ubuntu: @@ -44,17 +46,12 @@ curl -fsSL https://openjarvis.ai/install.sh | bash wsl --install -d Ubuntu-24.04 ``` Open the Ubuntu shell that gets installed, then follow [WSL2 install instructions](https://open-jarvis.github.io/OpenJarvis/getting-started/wsl2/). -- **Desktop app** — download the `.exe` from the [Releases page](https://github.com/open-jarvis/OpenJarvis/releases) for the GUI experience, no terminal required. +- **Desktop app** — download the `.exe` from the [Releases page](https://github.com/open-jarvis/OpenJarvis/releases) for the GUI experience, no terminal required. **Prerequisite:** the desktop app expects [uv](https://docs.astral.sh/uv/) to be installed already — if it isn't, install it first in PowerShell, then launch the app: + ```powershell + powershell -ExecutionPolicy Bypass -c "irm https://astral.sh/uv/install.ps1 | iex" + ``` -> **If `curl` fails on `openjarvis.ai` with `sslv3 alert handshake failure`** ([issue #337](https://github.com/open-jarvis/OpenJarvis/issues/337)), use the GitHub mirror until the domain is restored: -> -> ```bash -> curl -fsSL https://raw.githubusercontent.com/open-jarvis/OpenJarvis/main/scripts/install/install.sh | bash -> ``` -> -> Same script, served straight from this repo. The installer itself fetches everything else (uv, the project source, Ollama) from independent CDNs, so the rest of install proceeds normally. - -That's it. The installer handles everything: uv, the Python venv, Ollama, and pulling a small starter model. About 3 minutes on a typical broadband connection. Then: +About 3 minutes on a typical broadband connection. Then: ```bash jarvis @@ -69,7 +66,7 @@ The Rust extension and bigger models continue downloading in the background whil ## Quick Start ```bash -curl -fsSL https://openjarvis.ai/install.sh | bash +curl -fsSL https://open-jarvis.github.io/OpenJarvis/install.sh | bash jarvis ``` diff --git a/docs/gen_install_script.py b/docs/gen_install_script.py new file mode 100644 index 00000000..48a16add --- /dev/null +++ b/docs/gen_install_script.py @@ -0,0 +1,21 @@ +"""Publish the canonical install.sh into the docs site. + +Serves the installer at ``https://open-jarvis.github.io/OpenJarvis/install.sh`` +so users have an HTTPS-valid, project-controlled install URL that does not +depend on the externally-hosted ``openjarvis.ai`` domain — whose TLS config +broke and which the project does not control (issue #337). + +Single source of truth: the script lives at ``scripts/install/install.sh`` +(also bundled into the wheel as ``_install_scripts/``). This copies it +verbatim into the built site at ``install.sh`` on every ``mkdocs build``, +so the published copy can never drift from the canonical one. +""" + +from pathlib import Path + +import mkdocs_gen_files + +_SRC = Path("scripts/install/install.sh") + +with mkdocs_gen_files.open("install.sh", "wb") as dst: + dst.write(_SRC.read_bytes()) diff --git a/docs/getting-started/install.md b/docs/getting-started/install.md index df3862d9..2465a9da 100644 --- a/docs/getting-started/install.md +++ b/docs/getting-started/install.md @@ -3,20 +3,19 @@ OpenJarvis ships a one-line installer for macOS, Linux, and WSL2. ```bash -curl -fsSL https://openjarvis.ai/install.sh | bash +curl -fsSL https://open-jarvis.github.io/OpenJarvis/install.sh | bash ``` -!!! warning "`openjarvis.ai` SSL fallback (issue #337)" - If `curl` fails on `openjarvis.ai` with `sslv3 alert handshake failure`, - fetch the same script from the GitHub mirror until the domain is restored: +The installer downloads everything for you — including [uv](https://docs.astral.sh/uv/) +(the Python package manager), the Python venv, Ollama, and a small starter +model. **You don't need to install uv or any other prerequisite first.** - ```bash - curl -fsSL https://raw.githubusercontent.com/open-jarvis/OpenJarvis/main/scripts/install/install.sh | bash - ``` - - The installer itself pulls everything else (uv, the project source, - Ollama) from independent CDNs (`astral.sh`, `github.com`, - `ollama.com`), so the rest of install proceeds normally. +!!! info "Install URL" + This script is served straight from the project's own GitHub Pages site, + so HTTPS always works. You may also see `https://openjarvis.ai/install.sh` + referenced in older docs — that domain is community-operated and has had + intermittent TLS issues ([#337](https://github.com/open-jarvis/OpenJarvis/issues/337)). + The `open-jarvis.github.io` URL above is the canonical one. About 3 minutes on a typical broadband connection. Type `jarvis` to start chatting. diff --git a/docs/getting-started/linux.md b/docs/getting-started/linux.md index e1437905..a9237c28 100644 --- a/docs/getting-started/linux.md +++ b/docs/getting-started/linux.md @@ -1,7 +1,7 @@ # Linux Install ```bash -curl -fsSL https://openjarvis.ai/install.sh | bash +curl -fsSL https://open-jarvis.github.io/OpenJarvis/install.sh | bash ``` Tested on: Ubuntu 22.04 / 24.04, Fedora 40, Debian 12, Arch. diff --git a/docs/getting-started/macos.md b/docs/getting-started/macos.md index a6e83249..9736f84d 100644 --- a/docs/getting-started/macos.md +++ b/docs/getting-started/macos.md @@ -1,7 +1,7 @@ # macOS Install ```bash -curl -fsSL https://openjarvis.ai/install.sh | bash +curl -fsSL https://open-jarvis.github.io/OpenJarvis/install.sh | bash ``` Works on Intel and Apple Silicon. The installer auto-detects your CPU/GPU. diff --git a/docs/getting-started/wsl2.md b/docs/getting-started/wsl2.md index e99bb725..8259f71d 100644 --- a/docs/getting-started/wsl2.md +++ b/docs/getting-started/wsl2.md @@ -15,7 +15,7 @@ Then open the Ubuntu (or Debian) shell that gets installed. ## Install OpenJarvis ```bash -curl -fsSL https://openjarvis.ai/install.sh | bash +curl -fsSL https://open-jarvis.github.io/OpenJarvis/install.sh | bash ``` About 3 minutes. Type `jarvis` to start. diff --git a/mkdocs.yml b/mkdocs.yml index f62af62c..ad42712c 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -56,6 +56,7 @@ plugins: - gen-files: scripts: - docs/gen_ref_pages.py + - docs/gen_install_script.py - literate-nav: nav_file: SUMMARY.md - mkdocstrings: diff --git a/scripts/install/install.sh b/scripts/install/install.sh index ef3c4041..3cd25e0c 100755 --- a/scripts/install/install.sh +++ b/scripts/install/install.sh @@ -2,7 +2,7 @@ # install.sh — OpenJarvis curl-pipe-bash installer. # # Usage: -# curl -fsSL https://openjarvis.ai/install.sh | bash +# curl -fsSL https://open-jarvis.github.io/OpenJarvis/install.sh | bash # # Flags (only used in tests / power users): # --no-bg-orchestrator Skip the detached background orchestrator @@ -49,9 +49,7 @@ OpenJarvis runs on Windows via WSL2. Two paths: Open the Ubuntu shell that gets installed, then re-run: - curl -fsSL https://openjarvis.ai/install.sh | bash - - (or the github mirror — see README if openjarvis.ai is down.) + curl -fsSL https://open-jarvis.github.io/OpenJarvis/install.sh | bash 2. Desktop app — download the .exe from the Releases page: https://github.com/open-jarvis/OpenJarvis/releases diff --git a/scripts/install/jarvis-wrapper.sh b/scripts/install/jarvis-wrapper.sh index e3294afd..11ad6a44 100755 --- a/scripts/install/jarvis-wrapper.sh +++ b/scripts/install/jarvis-wrapper.sh @@ -7,7 +7,7 @@ VENV="$OPENJARVIS_HOME/.venv" if [[ ! -d "$VENV" ]]; then echo "jarvis: venv not found at $VENV" >&2 - echo "Re-run the installer: curl -fsSL https://openjarvis.ai/install.sh | bash" >&2 + echo "Re-run the installer: curl -fsSL https://open-jarvis.github.io/OpenJarvis/install.sh | bash" >&2 exit 1 fi