# Install and update

`wb` is the open source reference engine and command-line client for the Workbench standard. It is installed as `workbench` with `wb` as an alias. Native binaries are available for macOS and Linux on arm64 and x64. There is no Windows build.

## Install

```sh
curl -fsSL https://workbenches.dev/install.sh | sh
```

The installer:

- verifies the release's published SHA-256 checksum,
- installs `workbench` to `$XDG_BIN_HOME` when it is set, else `~/.local/bin`, and creates the `wb` alias,
- never invokes `sudo` and never edits shell startup files.

To read the installer before running it:

```sh
curl -fsSLO https://workbenches.dev/install.sh
less install.sh
sh install.sh
rm install.sh
```

### Installer options

| Option                | Effect                                                         |
| --------------------- | -------------------------------------------------------------- |
| `--version <version>` | Install a specific release, prereleases included.              |
| `--bin-dir <dir>`     | Install somewhere else. `WORKBENCH_INSTALL_DIR` does the same. |

Flags passed through a pipe need `sh -s --`:

```sh
curl -fsSL https://workbenches.dev/install.sh | sh -s -- --version 1.0.0
curl -fsSL https://workbenches.dev/install.sh | sh -s -- --bin-dir ~/bin
```

The default, `latest`, is the newest stable release by version among the 100 newest GitHub release records, which matches what `wb update` picks on a stable build.

### Put it on PATH

`~/.local/bin` is often not on `PATH`. If `wb` is not found after installing, add it for the current shell:

```sh
export PATH="$HOME/.local/bin:$PATH"
```

Add the same line to your shell profile, such as `~/.zshrc` or `~/.bashrc`, to make it permanent.

### Install the skills instead

A coding agent can install and drive `wb` itself. Give it the four Workbench skills:

```sh
npx skills add pompeii-labs/workbenches
```

| Skill           | What it teaches                                                                |
| --------------- | ------------------------------------------------------------------------------ |
| `wb-cli`        | Install `wb`, connect credentials, and run, resume, and supervise Workbenches. |
| `wb-subagents`  | Delegate bounded, checkable work to a Workbench and collect the result.        |
| `wb-authoring`  | Author, review, and trial a spec 1 Workbench package, gate first.              |
| `wb-publishing` | Push a Workbench to your organization and submit it for public review.         |

Install one skill globally with `--skill` and `-g`:

```sh
npx skills add pompeii-labs/workbenches --skill wb-subagents -g
```

## Install a runner

`wb` does not ship a model harness. Every Workbench names a runner, and the runner must be installed where the run happens: on the host for the `local` runtime, inside the image for `docker`, `e2b`, and `daytona`.

| Runner      | Manifest name | CLI on PATH | Install                                          |
| ----------- | ------------- | ----------- | ------------------------------------------------ |
| OpenCode    | `opencode`    | `opencode`  | `npm install -g opencode-ai`                     |
| Pi          | `pi`          | `pi`        | `npm install -g @earendil-works/pi-coding-agent` |
| Claude Code | `claude-code` | `claude`    | `npm install -g @anthropic-ai/claude-code`       |

As a non-root user, a global npm install can fail on the global prefix. Install to `~/.local` instead and keep `~/.local/bin` on `PATH`:

```sh
npm install -g --prefix ~/.local opencode-ai
```

A missing runner fails before any model request:

```text
Runner CLI is unavailable: opencode. Install opencode and rerun this command.
```

The verified runner versions and what each supports are on [Models and connections](/docs/cli/models#runners).

## Check the install

```sh
wb --version
wb update --check
```

Bare `wb` prints command help. `wb <command> --help` prints the flags of your installed version.

## Update

```sh
wb update --check   # report a newer release
wb update           # replace the binary in place
```

`wb update` updates the CLI. `wb upgrade` is a different command: it refreshes saved Workbench packages from their sources. See [Find and inspect](/docs/cli/discover#upgrade-saved-workbenches).

## Anonymous counts

The CLI reports anonymous save and run counts only for registry Workbenches published by an organization you hold no login for. Saves and runs of your own organizations' packages, local paths, GitHub sources, and private versions are never reported. A report carries the immutable version ID, the kind (`save` or `run`), the CLI version, and a timestamp, and no execution content.

Before the first report, the CLI prints once:

```text
Workbench reports anonymous save and run counts for registry Workbenches published by other organizations. Set DO_NOT_TRACK=1 to disable.
```

Set `DO_NOT_TRACK` to any non-empty value other than `0` to suppress every report and the notice.

## Stability

Within 1.x these do not change incompatibly: the spec 1 manifest, the `--json` event stream of `run`, `resume`, and `attach`, the `wait --json` result, the `send`, `answer`, and detached `run` and `resume` `--json` receipts, `smoke --json`, the documented exit codes, `install.sh`, and `wb update`. Everything else, including human-readable output and piped tab-separated output, may change in a minor version. Parse `--json`, never the human renderer. See [JSON output](/docs/cli/json).
