Skip to content

OpenChrome MCP v1.12.9

Latest

Choose a tag to compare

@shaun0927 shaun0927 released this 20 Jun 00:07
· 108 commits to main since this release

OpenChrome MCP v1.12.9

OpenChrome MCP v1.12.9 is a reliability release focused on making parallel MCP sessions safe by default. The release completes the parallel-session stability plan across issues #1499#1504 and aligns the runtime with the SSOT D3 topology:

Exactly one direct Chrome/CDP owner per (port, userDataDir), with additional MCP clients connecting through the broker proxy path.

This release does not reintroduce unsafe multi-controller sharing. The --allow-unsafe-shared-attach flag remains the explicit debug escape hatch for that topology.

Highlights

Stable parallel MCP sessions by default

Direct openchrome serve --auto-launch sessions now use coordinated auto-election by default. When multiple MCP clients start against the same Chrome port/profile:

  • one process becomes the direct Chrome/CDP owner;
  • the owner publishes live broker metadata;
  • surplus clients attach as broker clients instead of starting another independent direct controller;
  • duplicate direct-owner remediation is preserved when auto-elect is explicitly disabled.

This makes the common multi-client setup safer for Codex, Claude, and other MCP hosts without requiring users to manually preconfigure broker owner/client roles.

CLI entrypoint parity

The package bin wrapper now forwards runtime status commands to the full CLI surface, including:

  • openchrome check
  • openchrome doctor
  • openchrome serve

This prevents installed-package entrypoints from silently missing the diagnostics needed to understand runtime topology problems.

Broker metadata is live-validated

Broker discovery now validates that discovered metadata points to a live broker before proxying clients through it. Stale broker files are ignored/cleaned instead of being treated as authoritative.

This prevents surplus MCP clients from attaching to dead owner metadata and getting stuck behind a stale proxy target.

Half-zombie owner recovery

Startup failure handling now shares the same owner self-release primitive used by the watchdog path. If a process acquires the controller lock but cannot reach Chrome/CDP, it can release ownership after confirming Chrome is unreachable.

This avoids a half-zombie owner holding the direct-controller lock while no usable Chrome connection exists.

Safer setup/config topology presets

Generated MCP configs now default to the safe coordinated topology:

openchrome serve --auto-launch --auto-elect

New/updated presets include:

  • auto-elect — default safe coordinated mode;
  • single-owner — direct owner with --no-auto-elect for explicit fail-fast behavior;
  • broker-owner — explicit broker owner mode;
  • broker-client — explicit broker client mode;
  • existing isolated/dev/CI presets retained.

Docs were updated to describe when to use each topology and how to verify parallel behavior.

Topology-aware diagnostics

doctor and duplicate-controller diagnostics now distinguish between unsafe direct-controller conflicts and safe broker-client participation.

Diagnostics now account for:

  • wrapper parent/child process collapse;
  • broker owners and broker clients;
  • auto-elect owner/client classification;
  • stale broker metadata;
  • independent direct controllers that still need remediation;
  • --no-auto-elect owner command metadata.

This should reduce false positives while still flagging the dangerous case: multiple independent direct CDP owners for the same (port, userDataDir).

Real parallel verification harness

The release adds a real-client verification harness:

npm run verify:parallel-auto-elect
node scripts/verify/parallel-auto-elect.mjs --clients 4

The harness uses temporary user data directories and temporary broker registries; it does not mutate the user's MCP config or real Chrome profile.

It verifies that:

  • N >= 3 MCP clients can start against the same port/profile;
  • exactly one direct owner exists;
  • N - 1 clients proxy through the broker;
  • all clients complete MCP initialize;
  • all clients complete a non-trivial tools/list check;
  • --no-auto-elect still preserves duplicate-controller fail-fast remediation.

Included issue plan

This release completes:

  • #1499 — CLI entrypoint parity for check / doctor / serve
  • #1500serve --auto-launch coordinated auto-elect default
  • #1501 — setup/config topology presets and docs
  • #1502 — live broker metadata validation and stale cleanup
  • #1503 — startup half-zombie owner self-release
  • #1504 — topology-aware diagnostics and real parallel-session verification

Verification

The final release tree was verified before tagging:

  • npm run build
  • npm test -- --runInBand
  • npm run verify:auto-elect-smoke
  • npm run verify:parallel-auto-elect
  • node scripts/verify/parallel-auto-elect.mjs --clients 4
  • node dist/cli/index.js check --help
  • node dist/cli/index.js doctor --help
  • npm pack --dry-run
  • GitHub Actions CI on main / release promotion:
    • Ubuntu Node 18
    • Ubuntu Node 20 shards 1/3, 2/3, 3/3
    • Ubuntu Node 22
    • macOS Node 20
    • Windows Node 20

Upgrade notes

For most users, no manual migration is required after installing the new package. Newly generated MCP configs use the safer auto-elect topology by default.

If you maintain a hand-written MCP config, the recommended direct auto-launch command is now:

openchrome serve --auto-launch --auto-elect

Use --no-auto-elect only when you intentionally want legacy direct-owner fail-fast behavior.

Non-goals / compatibility notes

  • This release does not make unsafe multi-controller direct CDP sharing a supported normal mode.
  • Existing explicit broker owner/client configurations continue to work.
  • Existing isolated/dev/CI topology presets are retained.
  • Verification scripts intentionally avoid the user's real Chrome profile and real MCP config files.

Publishing

The GitHub release and tag are prepared for npm publishing. To publish the package manually:

npm publish