Run Moli's CDP Server
Run one Moli CDP server and connect the requested CDP client to its endpoint. Preserve the client's existing API where Moli supports it.
Workflow
Resolve
molifromPATH. If it is unavailable, install the latest prebuilt release for the current platform:Linux or macOS:
curl --proto '=https' --tlsv1.2 -fsSL \ https://github.com/lexmount/moli/releases/latest/download/moli-installer.sh | shOn Windows, use PowerShell:
powershell -ExecutionPolicy ByPass -c "irm https://github.com/lexmount/moli/releases/latest/download/moli-installer.ps1 | iex"Resolve the installed binary again and run
moli --version. The default location is~/.local/bin/molion Linux/macOS and%LOCALAPPDATA%\Moli\bin\moli.exeon Windows when it is not yet onPATH.Start
moli serveon the default loopback endpointhttp://127.0.0.1:9222.Add
--layoutwhen the workflow needs real element geometry, coordinate input, screenshots, PDFs, or screencasts. Add--resourceonly when all optional visual/media resources are required.Probe
/json/versionbefore connecting the client.Connect with the client's remote/attach API; do not launch a second bundled browser.
Close CDP clients cleanly, then stop the Moli server if this workflow owns it.
Playwright over CDP
import { chromium } from "playwright";
const browser = await chromium.connectOverCDP("http://127.0.0.1:9222");
const context = browser.contexts()[0];
const page = context.pages()[0] ?? await context.newPage();
await page.goto("https://example.com");
console.log(await page.locator("body").innerText());
await browser.close();
Integration rules
- Bind to
127.0.0.1by default. Expose another host only when the user explicitly needs remote access and has addressed network access controls. - Treat Moli as a remote endpoint. Avoid Chrome launch flags and assumptions that require a local Chromium executable.
- Expect selected CDP coverage, not complete Chrome protocol parity. Preserve explicit unsupported errors.
- Use a unique port for parallel isolated runs.
- Persist state intentionally with
--profile-dir; otherwise keep runs disposable. - Pass proxy, cookie, resource, user-agent, and private-network policy to the Moli server, not to a nonexistent child browser process.
Read references/protocols.md for CDP discovery URLs, server options, client selection, and connection troubleshooting.