fix(install): serve install.sh from GitHub Pages, make it the canonical URL

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) <noreply@anthropic.com>
This commit is contained in:
krypticmouse
2026-05-23 19:05:26 +00:00
co-authored by Claude Opus 4.7
parent bced6cc274
commit cf8d3e2cbe
9 changed files with 47 additions and 31 deletions
+9 -12
View File
@@ -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
```
+21
View File
@@ -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())
+10 -11
View File
@@ -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.
+1 -1
View File
@@ -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.
+1 -1
View File
@@ -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.
+1 -1
View File
@@ -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.
+1
View File
@@ -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:
+2 -4
View File
@@ -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
+1 -1
View File
@@ -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