Skip to content

Installation

Agent Browser is private. Consume it through GitHub Packages so every repo gets normal package-manager behavior: semver pins, lockfiles, repeatable CI installs, and simple rollbacks.

@cmmd-center/agent-browser

Add this to the consuming repo’s .npmrc:

@cmmd-center:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}

For local development, set GITHUB_TOKEN to a GitHub token that can read private packages for CMMD-Center. Do not commit a real token. In GitHub Actions, use the workflow GITHUB_TOKEN when it has package access, or store a read-only package token in repository secrets.

Use the package manager already used by the consuming repo:

Terminal window
npm install @cmmd-center/agent-browser
pnpm add @cmmd-center/agent-browser
bun add @cmmd-center/agent-browser
Terminal window
npm update @cmmd-center/agent-browser
pnpm update @cmmd-center/agent-browser
bun update @cmmd-center/agent-browser

For production integration branches, pin a published package version in the lockfile. Do not leave Forge or another production repo pinned to a moving Git branch.

The root import is intentionally light. It does not require Playwright.

Install optional peers only when the consuming app imports the matching subpath:

Terminal window
pnpm add playwright
pnpm exec playwright install chromium
Terminal window
pnpm add express zod

Use Playwright for @cmmd-center/agent-browser/playwright or CDP-backed automation. Use express and zod when hosting the HTTP server.

ImportUse
@cmmd-center/agent-browserCore runtime, controller, safety, events, stores, and shared types.
@cmmd-center/agent-browser/clientHTTP client for agent tool routers.
@cmmd-center/agent-browser/serverHTTP server routes for browser tools and preview/debug workflows.
@cmmd-center/agent-browser/hostHost bridge for app-owned browser sessions.
@cmmd-center/agent-browser/embeddedEmbedded backend transport.
@cmmd-center/agent-browser/embedded-hostIn-process embedded host contract.
@cmmd-center/agent-browser/playwrightPlaywright backend.
@cmmd-center/agent-browser/cdpCDP backend.
@cmmd-center/agent-browser/extensionChrome extension transport backend.
@cmmd-center/agent-browser/adapters/electronElectron IPC adapter.
@cmmd-center/agent-browser/adapters/tauriTauri command adapter.
import { AgentBrowser, createAgentBrowserRuntime } from "@cmmd-center/agent-browser";
import { AgentBrowserHttpClient } from "@cmmd-center/agent-browser/client";

If that compiles without importing Playwright, the consuming repo is using the package boundary correctly.