Standalone OpenChrome CLI

July 28, 2026 ยท View on GitHub

OpenChrome releases may include optional self-contained CLI executables. These artifacts run the same MCP and command surfaces as the npm package without a separately installed Node.js or npm runtime.

The standalone CLI is additive:

  • npm remains the broadest installation path;
  • the desktop app continues to use the same sidecar build pipeline;
  • Chrome or Chromium is not bundled;
  • only assets present on a specific release are certified for that release.

Certified asset names

PlatformAsset
macOS Apple Siliconopenchrome-macos-arm64
macOS Intelopenchrome-macos-x64
Windows x64openchrome-windows-x64.exe
Linux x64openchrome-linux-x64

Every executable has a sibling .sha256 file and .metadata.json file. The metadata records the OpenChrome version, source commit, target triple, Bun version, byte size, and SHA-256 digest.

macOS or Linux

Pin the release version. Do not download from a moving latest URL in host configuration or automation.

VERSION=1.13.0 # Example: choose a release that lists standalone assets.
ASSET=openchrome-macos-arm64 # or openchrome-macos-x64 / openchrome-linux-x64
BASE="https://github.com/shaun0927/openchrome/releases/download/v${VERSION}"

curl -fL "${BASE}/${ASSET}" -o openchrome
curl -fL "${BASE}/${ASSET}.sha256" -o "${ASSET}.sha256"
chmod +x openchrome

# The checksum file names the release asset, so verify from a temporary copy.
cp openchrome "${ASSET}"
shasum -a 256 -c "${ASSET}.sha256"  # Linux may use: sha256sum -c
rm "${ASSET}"

./openchrome --version
./openchrome build-info
./openchrome config --client codex

If the chosen release does not contain the named asset, use the npm package for that host instead of downloading an artifact from another version.

Windows PowerShell

$Version = "1.13.0" # Example: choose a release that lists standalone assets.
$Asset = "openchrome-windows-x64.exe"
$Base = "https://github.com/shaun0927/openchrome/releases/download/v$Version"

Invoke-WebRequest "$Base/$Asset" -OutFile $Asset
Invoke-WebRequest "$Base/$Asset.sha256" -OutFile "$Asset.sha256"

$Expected = (Get-Content "$Asset.sha256").Split(" ")[0].ToLowerInvariant()
$Actual = (Get-FileHash $Asset -Algorithm SHA256).Hash.ToLowerInvariant()
if ($Actual -ne $Expected) { throw "OpenChrome checksum mismatch" }

.\openchrome-windows-x64.exe --version
.\openchrome-windows-x64.exe build-info
.\openchrome-windows-x64.exe config --client codex

MCP configuration

Use the absolute verified executable path in MCP host configuration:

{
  "mcpServers": {
    "openchrome": {
      "command": "/absolute/path/to/openchrome",
      "args": ["serve", "--auto-launch", "--minimal"]
    }
  }
}

The release workflow certifies command help, config output, full/minimal tool manifests, and an MCP initialize plus tools/list handshake with PATH cleared. On macOS arm64 and Linux x64 it also runs doctor, navigates to a controlled local fixture in the Chrome build pinned by the repository's Puppeteer runtime, reads the page back through MCP, and verifies managed Chrome shutdown. These checks prove the executable does not locate Node.js at runtime; normal browser calls still require a supported Chrome or Chromium installation.