diff --git a/README.md b/README.md index 71b5795d..2b98c9c4 100644 --- a/README.md +++ b/README.md @@ -31,11 +31,22 @@ OpenJarvis is that stack. It is a framework for local-first personal AI, built a ## Installation +**macOS / Linux:** + ```bash curl -fsSL https://openjarvis.ai/install.sh | bash ``` -> **If you see `sslv3 alert handshake failure` on `openjarvis.ai`** ([issue #337](https://github.com/open-jarvis/OpenJarvis/issues/337)), use the GitHub mirror until the domain is restored: +**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: + ```powershell + 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. + +> **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 @@ -51,7 +62,7 @@ jarvis The Rust extension and bigger models continue downloading in the background while you chat. Run `jarvis doctor` to see status. -**Platforms:** macOS (Intel + Apple Silicon), Linux, WSL2 on Windows. +**Platforms:** macOS (Intel + Apple Silicon), Linux, WSL2 on Windows. Native Windows is not supported — use WSL2 or the desktop binary. **Manual install / contributors:** see [docs/getting-started/install.md](docs/getting-started/install.md). diff --git a/frontend/src-tauri/src/lib.rs b/frontend/src-tauri/src/lib.rs index 5108979d..5643640f 100644 --- a/frontend/src-tauri/src/lib.rs +++ b/frontend/src-tauri/src/lib.rs @@ -495,14 +495,33 @@ async fn boot_backend(backend: SharedBackend, status: SharedStatus) { let uv_bin = resolve_bin("uv"); - // Verify uv is actually installed + // Verify uv is actually installed. Concrete per-OS instructions — + // the generic "install it from astral.sh" was the #1 source of + // confusion on the Discord support thread; users couldn't tell whether + // to use winget, scoop, pip, or the official installer. if !std::path::Path::new(&uv_bin).exists() && uv_bin == "uv" { let mut s = status.lock().await; - s.error = Some( - "Could not find 'uv' (Python package manager). \ - Install it from https://astral.sh/uv then relaunch." - .into(), - ); + #[cfg(target_os = "windows")] + let msg = "Could not find 'uv' (Python package manager). \ + To install on Windows, open PowerShell and run:\n\n\ + powershell -ExecutionPolicy Bypass -c \"irm https://astral.sh/uv/install.ps1 | iex\"\n\n\ + Then close and relaunch this app. \ + (If the install completes but the app still can't find uv, \ + you may need to log out and back in so PATH refreshes.)"; + #[cfg(target_os = "macos")] + let msg = "Could not find 'uv' (Python package manager). \ + To install on macOS, open Terminal and run:\n\n\ + curl -LsSf https://astral.sh/uv/install.sh | sh\n\n\ + Then relaunch this app."; + #[cfg(target_os = "linux")] + let msg = "Could not find 'uv' (Python package manager). \ + To install on Linux, open a terminal and run:\n\n\ + curl -LsSf https://astral.sh/uv/install.sh | sh\n\n\ + Then relaunch this app."; + #[cfg(not(any(target_os = "windows", target_os = "macos", target_os = "linux")))] + let msg = "Could not find 'uv' (Python package manager). \ + Install it from https://astral.sh/uv then relaunch."; + s.error = Some(msg.into()); return; } diff --git a/scripts/install/install.sh b/scripts/install/install.sh index 2fa0d0d9..ef3c4041 100755 --- a/scripts/install/install.sh +++ b/scripts/install/install.sh @@ -29,6 +29,40 @@ for arg in "$@"; do esac done +# ---- non-WSL Windows refusal ---- +# Running the installer in Git Bash / MSYS2 / Cygwin on native Windows +# (i.e. NOT inside WSL2) gets the user into a confusing failure state: +# uv/git tooling installs to Windows paths the rest of OpenJarvis can't +# reach, and Ollama integration silently breaks. The supported Windows +# path is WSL2. Bail early with a clear next step rather than letting +# users discover this 3 minutes into a doomed install. +case "$(uname -s 2>/dev/null)" in + MINGW*|MSYS*|CYGWIN*) + cat >&2 <<'EOF' +install.sh: native Windows (Git Bash / MSYS2 / Cygwin) is not supported. + +OpenJarvis runs on Windows via WSL2. Two paths: + + 1. WSL2 (recommended for the CLI). One-time setup in an admin PowerShell: + + wsl --install -d Ubuntu-24.04 + + 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.) + + 2. Desktop app — download the .exe from the Releases page: + https://github.com/open-jarvis/OpenJarvis/releases + +See the WSL2 install guide for the full walkthrough: + https://open-jarvis.github.io/OpenJarvis/getting-started/wsl2/ +EOF + exit 1 + ;; +esac + # ---- root refusal ---- if [[ "$(id -u)" -eq 0 ]]; then cat >&2 <<'EOF'