Installer Internals
Installer internals
RemoteClaw ships three installer scripts, served from remoteclaw.org.
| Script | Platform | What it does |
|---|---|---|
install.sh | macOS / Linux / WSL | Installs Node if needed, installs RemoteClaw via npm (default) or git, and can run onboarding. |
install-cli.sh | macOS / Linux / WSL | Installs Node + RemoteClaw into a local prefix (~/.remoteclaw). No root required. |
install.ps1 | Windows (PowerShell) | Installs Node if needed, installs RemoteClaw via npm (default) or git, and can run onboarding. |
Quick commands
curl -fsSL --proto '=https' --tlsv1.2 https://remoteclaw.org/install.sh | bashcurl -fsSL --proto '=https' --tlsv1.2 https://remoteclaw.org/install.sh | bash -s -- --helpcurl -fsSL --proto '=https' --tlsv1.2 https://remoteclaw.org/install-cli.sh | bashcurl -fsSL --proto '=https' --tlsv1.2 https://remoteclaw.org/install-cli.sh | bash -s -- --helpiwr -useb https://remoteclaw.org/install.ps1 | iex& ([scriptblock]::Create((iwr -useb https://remoteclaw.org/install.ps1))) -Tag beta -NoOnboard -DryRunIf install succeeds but remoteclaw is not found in a new terminal, see Node.js troubleshooting.
install.sh
Recommended for most interactive installs on macOS/Linux/WSL.
Flow (install.sh)
-
Detect OS
Supports macOS and Linux (including WSL). If macOS is detected, installs Homebrew if missing.
-
Ensure Node.js 22+
Checks Node version and installs Node 22 if needed (Homebrew on macOS, NodeSource setup scripts on Linux apt/dnf/yum).
-
Ensure Git
Installs Git if missing.
-
Install RemoteClaw
npmmethod (default): global npm installgitmethod: clone/update repo, install deps with pnpm, build, then install wrapper at~/.local/bin/remoteclaw
-
Post-install tasks
- Runs
remoteclaw doctor --non-interactiveon upgrades and git installs (best effort) - Attempts onboarding when appropriate (TTY available, onboarding not disabled, and bootstrap/config checks pass)
- Defaults
SHARP_IGNORE_GLOBAL_LIBVIPS=1
- Runs
Source checkout detection
If run inside an RemoteClaw checkout (package.json + pnpm-workspace.yaml), the script offers:
- use checkout (
git), or - use global install (
npm)
If no TTY is available and no install method is set, it defaults to npm and warns.
The script exits with code 2 for invalid method selection or invalid --install-method values.
Examples (install.sh)
curl -fsSL --proto '=https' --tlsv1.2 https://remoteclaw.org/install.sh | bashcurl -fsSL --proto '=https' --tlsv1.2 https://remoteclaw.org/install.sh | bash -s -- --no-onboardcurl -fsSL --proto '=https' --tlsv1.2 https://remoteclaw.org/install.sh | bash -s -- --install-method gitcurl -fsSL --proto '=https' --tlsv1.2 https://remoteclaw.org/install.sh | bash -s -- --dry-runFlags reference
| Flag | Description |
|---|---|
--install-method npm|git | Choose install method (default: npm). Alias: --method |
--npm | Shortcut for npm method |
--git | Shortcut for git method. Alias: --github |
--version <version|dist-tag> | npm version or dist-tag (default: latest) |
--beta | Use beta dist-tag if available, else fallback to latest |
--git-dir <path> | Checkout directory (default: ~/remoteclaw). Alias: --dir |
--no-git-update | Skip git pull for existing checkout |
--no-prompt | Disable prompts |
--no-onboard | Skip onboarding |
--onboard | Enable onboarding |
--dry-run | Print actions without applying changes |
--verbose | Enable debug output (set -x, npm notice-level logs) |
--help | Show usage (-h) |
Environment variables reference
| Variable | Description |
|---|---|
REMOTECLAW_INSTALL_METHOD=git|npm | Install method |
REMOTECLAW_VERSION=latest|next|<semver> | npm version or dist-tag |
REMOTECLAW_BETA=0|1 | Use beta if available |
REMOTECLAW_GIT_DIR=<path> | Checkout directory |
REMOTECLAW_GIT_UPDATE=0|1 | Toggle git updates |
REMOTECLAW_NO_PROMPT=1 | Disable prompts |
REMOTECLAW_NO_ONBOARD=1 | Skip onboarding |
REMOTECLAW_DRY_RUN=1 | Dry run mode |
REMOTECLAW_VERBOSE=1 | Debug mode |
REMOTECLAW_NPM_LOGLEVEL=error|warn|notice | npm log level |
SHARP_IGNORE_GLOBAL_LIBVIPS=0|1 | Control sharp/libvips behavior (default: 1) |
install-cli.sh
Designed for environments where you want everything under a local prefix (default ~/.remoteclaw) and no system Node dependency.
Flow (install-cli.sh)
-
Install local Node runtime
Downloads Node tarball (default
22.22.0) to<prefix>/tools/node-v<version>and verifies SHA-256. -
Ensure Git
If Git is missing, attempts install via apt/dnf/yum on Linux or Homebrew on macOS.
-
Install RemoteClaw under prefix
Installs with npm using
--prefix <prefix>, then writes wrapper to<prefix>/bin/remoteclaw.
Examples (install-cli.sh)
curl -fsSL --proto '=https' --tlsv1.2 https://remoteclaw.org/install-cli.sh | bashcurl -fsSL --proto '=https' --tlsv1.2 https://remoteclaw.org/install-cli.sh | bash -s -- --prefix /opt/remoteclaw --version latestcurl -fsSL --proto '=https' --tlsv1.2 https://remoteclaw.org/install-cli.sh | bash -s -- --json --prefix /opt/remoteclawcurl -fsSL --proto '=https' --tlsv1.2 https://remoteclaw.org/install-cli.sh | bash -s -- --onboardFlags reference
| Flag | Description |
|---|---|
--prefix <path> | Install prefix (default: ~/.remoteclaw) |
--version <ver> | RemoteClaw version or dist-tag (default: latest) |
--node-version <ver> | Node version (default: 22.22.0) |
--json | Emit NDJSON events |
--onboard | Run remoteclaw onboard after install |
--no-onboard | Skip onboarding (default) |
--set-npm-prefix | On Linux, force npm prefix to ~/.npm-global if current prefix is not writable |
--help | Show usage (-h) |
Environment variables reference
| Variable | Description |
|---|---|
REMOTECLAW_PREFIX=<path> | Install prefix |
REMOTECLAW_VERSION=<ver> | RemoteClaw version or dist-tag |
REMOTECLAW_NODE_VERSION=<ver> | Node version |
REMOTECLAW_NO_ONBOARD=1 | Skip onboarding |
REMOTECLAW_NPM_LOGLEVEL=error|warn|notice | npm log level |
REMOTECLAW_GIT_DIR=<path> | Legacy cleanup lookup path (used when removing old Peekaboo submodule checkout) |
SHARP_IGNORE_GLOBAL_LIBVIPS=0|1 | Control sharp/libvips behavior (default: 1) |
install.ps1
Flow (install.ps1)
-
Ensure PowerShell + Windows environment
Requires PowerShell 5+.
-
Ensure Node.js 22+
If missing, attempts install via winget, then Chocolatey, then Scoop.
-
Install RemoteClaw
npmmethod (default): global npm install using selected-Taggitmethod: clone/update repo, install/build with pnpm, and install wrapper at%USERPROFILE%\.local\bin\remoteclaw.cmd
-
Post-install tasks
Adds needed bin directory to user PATH when possible, then runs
remoteclaw doctor --non-interactiveon upgrades and git installs (best effort).
Examples (install.ps1)
iwr -useb https://remoteclaw.org/install.ps1 | iex& ([scriptblock]::Create((iwr -useb https://remoteclaw.org/install.ps1))) -InstallMethod git& ([scriptblock]::Create((iwr -useb https://remoteclaw.org/install.ps1))) -InstallMethod git -GitDir "C:\remoteclaw"& ([scriptblock]::Create((iwr -useb https://remoteclaw.org/install.ps1))) -DryRun# install.ps1 has no dedicated -Verbose flag yet.Set-PSDebug -Trace 1& ([scriptblock]::Create((iwr -useb https://remoteclaw.org/install.ps1))) -NoOnboardSet-PSDebug -Trace 0Flags reference
| Flag | Description |
|---|---|
-InstallMethod npm|git | Install method (default: npm) |
-Tag <tag> | npm dist-tag (default: latest) |
-GitDir <path> | Checkout directory (default: %USERPROFILE%\remoteclaw) |
-NoOnboard | Skip onboarding |
-NoGitUpdate | Skip git pull |
-DryRun | Print actions only |
Environment variables reference
| Variable | Description |
|---|---|
REMOTECLAW_INSTALL_METHOD=git|npm | Install method |
REMOTECLAW_GIT_DIR=<path> | Checkout directory |
REMOTECLAW_NO_ONBOARD=1 | Skip onboarding |
REMOTECLAW_GIT_UPDATE=0 | Disable git pull |
REMOTECLAW_DRY_RUN=1 | Dry run mode |
If -InstallMethod git is used and Git is missing, the script exits and prints the Git for Windows link.
CI and automation
Use non-interactive flags/env vars for predictable runs.
curl -fsSL --proto '=https' --tlsv1.2 https://remoteclaw.org/install.sh | bash -s -- --no-prompt --no-onboardREMOTECLAW_INSTALL_METHOD=git REMOTECLAW_NO_PROMPT=1 \ curl -fsSL --proto '=https' --tlsv1.2 https://remoteclaw.org/install.sh | bashcurl -fsSL --proto '=https' --tlsv1.2 https://remoteclaw.org/install-cli.sh | bash -s -- --json --prefix /opt/remoteclaw& ([scriptblock]::Create((iwr -useb https://remoteclaw.org/install.ps1))) -NoOnboardTroubleshooting
Why is Git required?
Git is required for git install method. For npm installs, Git is still checked/installed to avoid spawn git ENOENT failures when dependencies use git URLs.
Why does npm hit EACCES on Linux?
Some Linux setups point npm global prefix to root-owned paths. install.sh can switch prefix to ~/.npm-global and append PATH exports to shell rc files (when those files exist).
sharp/libvips issues
The scripts default SHARP_IGNORE_GLOBAL_LIBVIPS=1 to avoid sharp building against system libvips. To override:
SHARP_IGNORE_GLOBAL_LIBVIPS=0 curl -fsSL --proto '=https' --tlsv1.2 https://remoteclaw.org/install.sh | bashWindows:
Install Git for Windows, reopen PowerShell, rerun installer.
Windows:
Run npm config get prefix, append \bin, add that directory to user PATH, then reopen PowerShell.
Windows: how to get verbose installer output
install.ps1 does not currently expose a -Verbose switch.
Use PowerShell tracing for script-level diagnostics:
Set-PSDebug -Trace 1& ([scriptblock]::Create((iwr -useb https://remoteclaw.org/install.ps1))) -NoOnboardSet-PSDebug -Trace 0remoteclaw not found after install
Usually a PATH issue. See Node.js troubleshooting.