Skip to main content
@reticlehq/server is the Reticle bridge, MCP server and CLI in one Node package. It hosts the WebSocket your app dials into, exposes the MCP tools your agent calls, and ships the reticle binary. You do not add it to your project: your agent runs it with npx @reticlehq/server mcp. Licensed under Apache-2.0, the same as every other Reticle package.

Why it exists

Agents speak MCP. Browsers speak WebSocket. Somebody has to be fluent in both, and own the .reticle/ directory where flows, baselines, capsules and runs are stored. It never imports a DOM API.

Do you install it?

Not into your project. Your agent launches it:
The bin entry is reticle. Run any command as npx @reticlehq/server <command>, or as reticle <command> after the one-line installer puts the package on your machine.

Dependencies

Runtime: @modelcontextprotocol/sdk, @reticlehq/browser, @reticlehq/core, @reticlehq/engine, @reticlehq/init, open-verification, ws, zod, zod-to-json-schema. Optional: playwright (also a peer dependency, >=1.50), pixelmatch, pngjs. Optional on purpose: Reticle observes the browser you already have. You need Playwright only for the paths that launch or compare a browser: the zero-install lease, reticle try, reticle drive, reticle verify and visual baselines. reticle open uses your own browser and does not need it.

Exports map

Starting a server in process

start(options?: StartOptions): Promise<RunningServer> boots the bridge plus the MCP stdio transport. startDaemon(options?: StartOptions): Promise<RunningServer> is what the detached daemon runs.

StartOptions

RunningServer

bridge: Bridge, close(): Promise<void>, and the optional realInput, verifyPort, isIdle(), agentAttached(), token, announceShutdown() and onShutdownRequest(handler). The last one runs handler when an authenticated POST /shutdown asks the daemon to stop.

What else the barrel exports

A large surface, because the test runner and the CI paths are built on it. The families:

Every CLI command

The commands this package installs, one page each.
Last modified on October 29, 2026