Skip to content

docs(rfc): pooled HTTP Playwright MCP server for generated claws - #40

Open
BoldBlackBot wants to merge 1 commit into
boldblackai:mainfrom
BoldBlackBot:rfc/pooled-http-playwright-mcp
Open

docs(rfc): pooled HTTP Playwright MCP server for generated claws#40
BoldBlackBot wants to merge 1 commit into
boldblackai:mainfrom
BoldBlackBot:rfc/pooled-http-playwright-mcp

Conversation

@BoldBlackBot

Copy link
Copy Markdown
Contributor

Summary

  • Adds a Proposed RFC: an opt-in pooled browser backend for generated claws — a long-lived Playwright MCP server in HTTP mode (--port + --isolated) started by the container boot command, before the exec hermes gateway.
  • One chromium launch, one BrowserContext per MCP client: bounds browser memory for multi-client workloads (~(N−1) × 1.0 GiB saved for N clients) and removes cross-client tab/session collisions (upstream microsoft/playwright-mcp#893 failure mode).
  • Daemon lifetime is tied to the container: gateway death = container exit = the whole PID namespace (daemon + browser tree) is reaped. No orphaned browser processes are possible; recreate deployments bounce daemon + gateway atomically.
  • Opt-in via stack parameter EnablePooledPlaywright (default false) — default-path output stays byte-identical, golden test regenerates only for the enabled path.

Design highlights

  • Boot-command daemon with restart loop, bound to loopback (--host 127.0.0.1), version-pinned server (no @latest), chromium installed to the persistent volume via the pinned server's own install-browser.
  • Client entry in agent_home/config.yaml (type: streamable-http, url: http://127.0.0.1:8931/mcp) pushed by the existing manage overlay; RFC documents the stack-parameter-before-overlay ordering and rollback.
  • Memory accounting section: pooling pays only when concurrent MCP clients > 1; single-client claws are better served by idle-recycle lifecycle settings (out of scope here).

Test plan

  • RFC review — no code changes in this PR
  • Implementation lands as a follow-up per the RFC checklist (template.yaml parameter + command, config entry, skill phases, README, golden regen)

RFC: rfcs/2026-08-16_pooled-http-playwright-mcp.md

Propose an opt-in pooled browser backend: a long-lived Playwright MCP
server in HTTP mode (--port + --isolated) started by the container boot
command — one chromium launch, one BrowserContext per client. Bounds
browser memory for multi-client workloads and removes cross-client
tab/session collisions. Daemon lifetime is tied to the container, so no
orphaned browser processes are possible.

Co-authored-by: capotej <6135+capotej@users.noreply.github.com>
@BoldBlackBot
BoldBlackBot force-pushed the rfc/pooled-http-playwright-mcp branch from f02c0e2 to b0aa7c4 Compare August 18, 2026 21:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants