Skip to content
PEN Docs

References

Specs, libraries, and prior art that shaped PEN.

Core Specifications

Chrome DevTools Protocol

The CDP spec covers every domain PEN talks to:

DomainPurposeReference
RuntimeConsole messages, JS evaluationRuntime
NetworkRequest/response interception, waterfallNetwork
PageNavigation, screenshots, lifecyclePage
HeapProfilerHeap snapshots, allocation trackingHeapProfiler
ProfilerCPU profilingProfiler
DebuggerSource maps, script sourcesDebugger
TracingPerformance tracesTracing
AuditsLighthouse-style auditsAudits
TargetTab management, target discoveryTarget

Model Context Protocol

Go Libraries

LibraryVersionPurpose
github.com/modelcontextprotocol/go-sdkv1.3.1MCP server implementation
github.com/chromedp/chromedpv0.13.6Chrome DevTools Protocol client
github.com/chromedp/cdproto(transitive)CDP type definitions
github.com/charmbracelet/huhv1.0.0Interactive terminal wizard (pen init)
github.com/charmbracelet/lipglossv1.1.0Terminal output styling

All versions pulled from go.mod. Requires Go 1.24.2+.

Prior Art

Tools and projects that influenced PEN:

ToolRelationship to PEN
Chrome DevToolsPEN exposes the same browser internals, but over MCP instead of a GUI
PuppeteerNode.js CDP library; PEN uses chromedp (Go) for the same protocol
PlaywrightMulti-browser automation; PEN is Chrome-only, MCP-native
Lighthouse CLIPEN shells out to the Lighthouse CLI via exec.CommandContext rather than wrapping CDP audit domains directly
web-vitalsClient-side metrics library; PEN grabs the same data server-side via CDP

Architecture References

  • Go concurrency: sync.Mutex for operation locks, context.Context for cancellation, goroutines for event listeners
  • Graceful degradation: Partial results over hard failures (see Error Handling)
  • Token-aware output: Everything shaped for LLM context windows (see Output Design)
ResourceURL
Source codegithub.com/edbnme/pen
Documentationpen-docs (this site)
Go modulegithub.com/edbnme/pen
LicenseMIT