Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added assets/images/rook/rook-install-public.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 7 additions & 8 deletions docs/rook-ci-cd.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ import BrandName, { BRAND_URL } from '@site/src/component/BrandName';

Rook's headless commands use the same discovery, generation, profile, permission, execution, judging, and evidence paths as the interactive TUI. Use them to create a release gate after you have proved the workflow interactively against the same agent and profile.

:::warning Public 0.1.0 is not ready for a production gate
As verified on August 17, 2026, the default production controller hostname in the public 0.1.0 package is not resolvable. Keep CI integration disabled until <code>rook doctor</code> and a real controller-backed smoke command succeed from the runner. A binary that installed successfully is not proof that the testing service is reachable.
:::

## Prepare the Project Interactively

Before enabling a pipeline:
Expand Down Expand Up @@ -159,13 +163,8 @@ jobs:
with:
node-version: 20

- name: Install pinned Rook build
env:
GH_TOKEN: ${{ secrets.ROOK_REPOSITORY_TOKEN }}
ROOK_VERSION: <reviewed-commit-sha>
run: |
curl -fsSL -H "Authorization: Bearer ${GH_TOKEN}" \
https://raw.githubusercontent.com/LambdatestIncPrivate/rook/stage/scripts/install.sh | bash
- name: Install pinned public Rook release
run: npm install -g @testmuai/rook@0.1.0

- name: Verify Rook environment
run: |
Expand Down Expand Up @@ -195,7 +194,7 @@ jobs:
path: .testmuai/rook/agents/refund-desk/runs/
```

Pin Rook by commit SHA and review updates before changing it. Scope the repository token to read access for the private release repository.
Pin Rook by an exact public semantic version and review the [Rook changelog](https://github.com/LambdaTest/rook/blob/main/CHANGELOG.md) before changing it. The public npm package does not require a GitHub repository token.

## Separate Generation From the Gate

Expand Down
27 changes: 15 additions & 12 deletions docs/rook-command-doctor.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ slug: rook-command-doctor/

# <code>/doctor</code> Command

Use <code>/doctor</code> as the first diagnostic when Rook cannot start, authenticate, discover an agent, or reach its controller.
Use <code>/doctor</code> as the first diagnostic when Rook cannot start, authenticate, or find the expected workspace. Headless <code>rook doctor</code> prints the configured controller and API endpoints without probing them. Interactive <code>/doctor</code> can contact the controller while resolving a signed-in session, but it is not a general connectivity test.

<img loading="lazy" src={require('../assets/images/rook/commands/rook-command-doctor.png').default} alt="Rook doctor command help" width="1556" height="1466" className="doc_img"/>

Expand All @@ -30,22 +30,23 @@ rook doctor

| Check | <code>rook doctor</code> | Interactive <code>/doctor</code> |
|---|---|---|
| Rook and Node.js versions | Yes | Rook version only |
| Environment and controller URL | Yes | Yes |
| Controller reachability and providers | Yes | Yes |
| Authentication | Locally cached state; not a live token verification | Cached state, plus a live controller verification when signed in |
| Workspace and TTY | Both | Workspace |
| Rook version | Exact installed version | First row shows <code>rook v&lt;version-label&gt;</code> |
| Active Node.js runtime version | Yes | No |
| Environment, controller URL, and API URL | Yes | Yes |
| Controller DNS or HTTP reachability | No | Conditional: signed-in authentication resolution can contact the controller |
| Authentication | Cached, signed-out, or local-development state | Current session state |
| Workspace and TTY | Both | Workspace storage directory only |
| Registered project entities | No | Yes |

Neither form tests the endpoint in an agent invocation profile.
Neither form tests the endpoint in an agent invocation profile. A signed-out interactive session also provides no controller-reachability result.

## Step-by-step troubleshooting

1. Run <code>rook doctor</code> outside the TUI if the TUI will not start.
2. Fix the first failing check.
3. Verify authentication with <code>rook whoami</code>.
4. Return to the intended workspace.
5. Start Rook and retry the original command.
2. Confirm the version, environment, endpoint URLs, workspace, and TTY are the ones you intended.
3. Resolve the printed controller hostname with your normal DNS tools, or retry the controller-backed command and read its specific error.
4. Verify authentication with <code>rook whoami</code> after the controller is reachable.
5. Return to the intended workspace, start Rook, and retry the original command.

## Real-world examples

Expand All @@ -57,7 +58,9 @@ rook doctor
rook whoami
~~~

When a remote agent is unreachable, also test the profile's exported request with <code>/profile curl</code>; doctor checks Rook's controller, not every target endpoint.
When a remote agent is unreachable, also test the profile's exported request with <code>/profile curl</code>; doctor shows Rook's configured service URLs, not the health of every target endpoint.

As verified on August 17, 2026, public Rook 0.1.0 <code>rook doctor</code> can exit successfully while the configured production controller hostname is not resolvable. Treat the printed endpoint as configuration, not a green health check.

## Privacy

Expand Down
200 changes: 135 additions & 65 deletions docs/rook-installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@ id: rook-installation
title: Install the Rook CLI
hide_title: false
sidebar_label: Install the CLI
description: Install and authenticate the published Rook CLI without cloning or building the Rook source code.
description: Install the public Rook CLI with npm, the checksummed shell installer, or Homebrew without cloning or building Rook.
keywords:
- install rook cli
- rook authentication
- rook npm
- rook homebrew
- rook installer
url: https://www.testmuai.com/support/docs/rook-installation/
site_name: TestMu AI
Expand All @@ -16,141 +17,210 @@ canonical: https://www.testmuai.com/support/docs/rook-installation/

# Install the Rook CLI

This page installs the packaged Rook CLI. You do not need to clone the Rook repository, install its source dependencies, start a controller, or build any code.
Rook is publicly available as an npm package, a checksummed platform archive, and a Homebrew formula. You install only the CLI. You do not need to clone the Rook source repository, build Rook, start its backend services, or provide a model API key.

:::note Current access
Rook is currently distributed from a private GitHub repository. Your GitHub account must be allowed to read <code>LambdatestIncPrivate/rook</code>. This requirement is for downloading the packaged CLI, not for accessing the source during normal use.
The current public release is **0.1.0**. See the [Rook changelog](https://github.com/LambdaTest/rook/blob/main/CHANGELOG.md) for release notes and later fixes.

:::warning Rook 0.1.0 service availability
As verified on August 17, 2026, the production controller hostname configured in the public 0.1.0 package is not resolvable. Installation, command help, local diagnostics, and the read-only viewer work, but model-backed commands such as <code>/explore</code>, <code>/generate</code>, and <code>/run</code> cannot complete until the production service is available. After installing, use <code>rook doctor</code> and confirm controller availability before starting an end-to-end run.
:::

## Prerequisites
## Choose an Installation Method

| Method | Best for | Node.js requirement |
|---|---|---|
| npm | Developers who already manage Node.js and npm | Node.js 20 or newer and npm are required to install the package |
| Shell installer | macOS or Linux machines where you do not want to install Node.js | No system Node.js; the archive includes Node.js 24.19.0 |
| Homebrew | macOS or Linux users who manage CLIs with Homebrew | No Node.js prerequisite; the formula installs Node as a dependency but Rook runs on its bundled runtime |

Support differs by installation method:

| Operating system | npm | Shell installer | Homebrew |
|---|---|---|---|
| macOS x64 and arm64 | Supported | Supported | Supported |
| Linux x64 and arm64 | Supported | Supported | Supported |
| Windows x64 | Package published, but not fully validated in 0.1.0 | Not supported | Not supported |
| Windows arm64 | Not supported | Not supported | Not supported |

- macOS or Linux.
- Node.js 20 or newer.
- A LambdaTest account with Rook access.
- GitHub CLI authenticated to an approved GitHub account, or a GitHub token with private-repository read access.
- The runtime needed by your own target agent. For example, a remote HTTP agent must be reachable and a local command agent must be installed on <code>PATH</code>.
The npm package publishes a Windows x64 runtime and uses npm's Windows command shim. In version 0.1.0, resolving the bundled Windows runtime is a known gap and has not been fully validated. If you evaluate this path, install Node.js 20 or newer and do not use it as a release gate until startup is confirmed on your machine. The shell release archive contains a POSIX launcher, and the shell installer does not accept Windows. For the fully validated 0.1.0 journey, use macOS, Linux, or WSL.

Check Node.js:
## Option 1: Install with npm

### Prerequisites

Check Node.js and npm:

~~~bash
node --version
npm --version
~~~

The major version must be 20 or newer.

## Step 1: Authenticate GitHub CLI
Node.js must be version 20 or newer.

If <code>gh</code> is already authenticated, confirm it:
### Install and verify

~~~bash
gh auth status
npm install -g @testmuai/rook
rook --version
rook doctor
~~~

As verified on August 17, 2026, the current release prints:

~~~text
0.1.0
~~~

Otherwise run:
Update later with:

~~~bash
gh auth login
npm update -g @testmuai/rook
~~~

This login only authorizes the package download from the private repository.
## Option 2: Install with the Shell Installer

## Step 2: Install the Packaged CLI
:::warning v0.1.0 pipe-install defect
Do not run the published <code>curl ... | bash</code> one-liner with version 0.1.0. It exits with <code>BASH_SOURCE[0]: unbound variable</code>. Until the changelog records a fix, download the same public script and execute it as a file using the working steps below.
:::

Run:
The affected published command is <code>curl -fsSL https://raw.githubusercontent.com/LambdaTest/rook/main/install.sh | bash</code>.

### Download, inspect, and run the script

~~~bash
curl -fsSL -H "Authorization: Bearer $(gh auth token)" \
https://raw.githubusercontent.com/LambdatestIncPrivate/rook/stage/scripts/install.sh | bash
rook_installer="$(mktemp "${TMPDIR:-/tmp}/rook-install.XXXXXX")"
curl -fsSL https://raw.githubusercontent.com/LambdaTest/rook/main/install.sh \
-o "$rook_installer" &&
less "$rook_installer" &&
bash "$rook_installer"
rm -f "$rook_installer"
~~~

The installer:

1. Checks for Node.js 20 or newer.
2. Finds the newest Rook CLI release.
3. Downloads and verifies the release archive.
4. Installs it below <code>~/.testmuai/rook/versions/&lt;version&gt;</code>.
5. Links the <code>rook</code> executable into a writable directory on <code>PATH</code>.
1. Detects macOS or Linux and the x64 or arm64 architecture.
2. Resolves the latest public release.
3. Downloads the matching platform archive and its SHA-256 sidecar.
4. Computes the archive checksum locally and refuses a mismatch.
5. Installs the versioned runtime under <code>~/.testmuai/rook-&lt;version&gt;</code>.
6. Creates <code>~/.local/bin/rook</code> by default.

If the final message prints a PATH command, run that exact command and open a new terminal.
If <code>~/.local/bin</code> is not on <code>PATH</code>, run the PATH command printed by the installer and open a new terminal.

## Step 3: Verify the CLI
Verify that the bundled runtime works:

~~~bash
rook --version
rook doctor
~~~

<code>rook doctor</code> checks the CLI version, Node.js, workspace, selected environment, controller reachability, authentication, and terminal support.
### Install a specific version

## Step 4: Sign In to Rook
~~~bash
rook_installer="$(mktemp "${TMPDIR:-/tmp}/rook-install.XXXXXX")"
curl -fsSL https://raw.githubusercontent.com/LambdaTest/rook/main/install.sh \
-o "$rook_installer" &&
bash "$rook_installer" --version 0.1.0
rm -f "$rook_installer"
~~~

Start browser authentication:
### Install the command link in another directory

~~~bash
rook login
rook_installer="$(mktemp "${TMPDIR:-/tmp}/rook-install.XXXXXX")"
curl -fsSL https://raw.githubusercontent.com/LambdaTest/rook/main/install.sh \
-o "$rook_installer" &&
bash "$rook_installer" --dir "$HOME/bin"
rm -f "$rook_installer"
~~~

Or start the interactive terminal and enter <code>/login</code>:
The versioned runtime still lives under <code>~/.testmuai</code>; <code>--dir</code> changes where the <code>rook</code> command link is created.

## Option 3: Install with Homebrew

Add the public tap and install the fully qualified formula:

~~~bash
rook
brew tap lambdatest/rook https://github.com/LambdaTest/rook.git
brew install lambdatest/rook/rook
~~~

After the browser flow, verify the account:
On macOS arm64 and Linux x64, Homebrew pours a precompiled bottle. Intel macOS and Linux arm64 can build the formula from source, so installation takes longer on those platforms.

Rook uses the Node.js runtime bundled into the installed formula, including when Homebrew builds the formula from source. In version 0.1.0, the formula also declares Homebrew Node as a dependency used to run npm during installation, so Homebrew may install or upgrade Node and related packages even when it pours a bottle. You do not need to install Node manually before running the command.

Verify the formula:

~~~bash
rook whoami
rook --version
~~~

Authentication is global. Multiple Rook terminals on the same machine use the credentials stored below <code>~/.testmuai/rook/</code>.
Update later with:

<img loading="lazy" src={require('../assets/images/rook/commands/rook-command-whoami.png').default} alt="Rook whoami command help in a terminal" width="1556" height="956" className="doc_img"/>
~~~bash
brew update
brew upgrade lambdatest/rook/rook
~~~

## Install Without GitHub CLI
## Verify the First-Run Environment

Use a GitHub token with repository read access:
Run:

~~~bash
export ROOK_GITHUB_TOKEN="<github-token>"

curl -fsSL -H "Authorization: Bearer $ROOK_GITHUB_TOKEN" \
https://raw.githubusercontent.com/LambdatestIncPrivate/rook/stage/scripts/install.sh | bash
command -v rook
rook --version
rook doctor
~~~

Avoid putting the token in project files, screenshots, or shared shell history.
<img loading="lazy" src={require('../assets/images/rook/rook-install-public.png').default} alt="Public Rook 0.1.0 installation verification showing the version and doctor output" width="1280" height="720" className="doc_img"/>

## Install a Specific Release
<code>rook doctor</code> prints the installed Rook version, active Node.js runtime version, selected environment, controller and API URLs, workspace, cached authentication state, and TTY availability. It does not label that Node.js process as bundled or system-provided, and it does not by itself prove that the configured controller hostname is reachable. Verify DNS and connectivity if a model-backed command reports a controller error.

Rook release identifiers use a commit SHA. Pin a known version for CI or a controlled rollout:
## Sign In to Rook

~~~bash
export ROOK_VERSION="<commit-sha>"
When the production controller is available, start browser authentication:

curl -fsSL -H "Authorization: Bearer $(gh auth token)" \
https://raw.githubusercontent.com/LambdatestIncPrivate/rook/stage/scripts/install.sh | bash
~~~bash
rook login
~~~

Installed versions remain side by side, so installing a new build does not overwrite the previous version directory.
Or start the interactive terminal and enter <code>/login</code>:

## Update Rook
~~~bash
rook
~~~

Run the same installer again, then verify the selected version:
After the browser flow, verify the account:

~~~bash
rook --version
rook doctor
rook whoami
~~~

Authentication is global. Multiple Rook terminals on the same machine use credentials stored below <code>~/.testmuai/rook/</code>.

## Release Integrity

The public release process builds the CLI once, generates a changelog, waits for an approved human to authorize publication, and only then publishes npm, GitHub release, and Homebrew artifacts. The shell archives include a bundled runtime and a SHA-256 sidecar; the installer compares the downloaded archive with that published digest before copying release files into place. This detects corruption or unexpected rewriting in transit, but the archive and digest come from the same release origin and do not protect against that origin itself being compromised.

Use these public sources when reviewing an installation:

- [Rook repository](https://github.com/LambdaTest/rook)
- [Release notes](https://github.com/LambdaTest/rook/releases)
- [Changelog](https://github.com/LambdaTest/rook/blob/main/CHANGELOG.md)
- [npm package](https://www.npmjs.com/package/@testmuai/rook)

## Troubleshooting

| Symptom | What to do |
|---|---|
| <code>rook: command not found</code> | Run the PATH or link command printed by the installer, then open a new terminal. |
| Node.js version error | Install Node.js 20 or newer and rerun the installer. |
| GitHub returns 401 or 404 | Confirm that the authenticated account can read the private repository. |
| Release asset connection resets | Retry outside the VPN or corporate proxy; the download uses GitHub's release asset CDN. |
| Rook account is not recognized | Run <code>rook login</code>, then <code>rook whoami</code>. |
| <code>rook: command not found</code> | Open a new terminal. For the shell installer, add <code>~/.local/bin</code> to <code>PATH</code>. |
| npm reports an unsupported Node.js version | Install Node.js 20 or newer, then repeat the npm installation. |
| The piped shell command reports <code>BASH_SOURCE[0]</code> | Use the download-then-run steps on this page until a later release fixes the v0.1.0 installer. |
| Homebrew proposes Node.js and dependency upgrades | This is current 0.1.0 formula behavior. Review the proposed changes before confirming, or use the shell installer to avoid Homebrew dependencies. |
| The checksum does not match | Do not bypass the check. Delete the download and retry from the public release. |
| <code>/explore</code> reports that the controller is unreachable | Run <code>rook doctor</code> and check DNS for the printed controller host. As verified on August 17, 2026, the public 0.1.0 production endpoint was unavailable. |
| Rook account is not recognized | After the controller is available, run <code>rook login</code>, then <code>rook whoami</code>. |

## Next Step

Continue with [Test Your First Agent](/support/docs/rook-quickstart/). You only need your own PRD, documentation, source workspace, or live endpoint from this point onward.
Continue with [Test Your First Agent](/support/docs/rook-quickstart/) after <code>rook doctor</code> shows the expected environment and the controller is reachable. Your workspace only needs your own PRD, documentation, checked-out source, or live-agent connection details.
Loading