@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: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.