# Pagerunner > The browser runtime for AI agents. Runs locally. Learns from every session. Works with any LLM. ## What is Pagerunner? Pagerunner is a browser automation MCP server that gives AI coding agents a real Chrome browser. It runs locally on your machine, keeps your data private, and learns from every session through site adapters and selector tracking. Free and open source under the Apache 2.0 license. ## Key Features - 46 MCP tools for browser automation - Persistent profiles with encrypted state (AES-256-GCM) - Site knowledge that compounds (adapters, selector tracking, API discovery) - PII anonymization (local ONNX NER model) - KV store for multi-agent coordination - Session checkpoints and snapshots - Daemon mode for background operation - Stealth mode for bot detection bypass - Domain allowlisting and SSRF protection - Audit logging - Session recordings with video rendering - Secrets management (sealed store, never exposed to LLM) - macOS notifications - Autonomous agent mode ## Installation brew install enreign/tap/pagerunner claude mcp add pagerunner -- pagerunner mcp ## Works With Claude Code, Cursor, Windsurf, Codex CLI, OpenClaw, any MCP client ## Configuration Config file: ~/.config/pagerunner/config.toml Environment variables: PAGERUNNER_CONFIG, ANTHROPIC_API_KEY ## Complete Tool List (46 tools) ### Session Management - list_profiles — List all configured profiles - open_session — Open a new browser session with a profile (params: profile, stealth, allowed_domains, max_navigations, sanitize_content, scan_injections, allowed_tools, blocked_tools, anonymize, anonymization_profile, anonymization_entities, anonymization_mode) - attach_session — Attach to an already-running Chrome instance (params: debug_port, debug_url, profile) - close_session — Close a session and its Chrome instance (params: session_id) - list_sessions — List all active sessions - list_tabs — List tabs in a session (params: session_id) - new_tab — Open a new tab (params: session_id, url) - close_tab — Close a specific tab (params: session_id, target_id) ### Navigation & Interaction - navigate — Navigate a tab to a URL (params: session_id, target_id, url) - get_content — Get page content as text, links, forms (params: session_id, target_id) - screenshot — Take a screenshot of the current page (params: session_id, target_id) - evaluate — Execute JavaScript in the page (params: session_id, target_id, expression, store_as_secret) - click — Click an element (params: session_id, target_id, selector) - type_text — Type text via keyboard events (params: session_id, target_id, text, selector) - fill — Fill a form field with a value (params: session_id, target_id, selector, value) - select — Select an option from a dropdown (params: session_id, target_id, selector, value) - scroll — Scroll the page or an element (params: session_id, target_id, x, y, selector) - wait_for — Wait for a condition: element, navigation, or time (params: session_id, target_id, selector, url, ms, timeout_ms) ### State Management - save_snapshot — Save cookies + localStorage for an origin (params: session_id, target_id, origin) - restore_snapshot — Restore a saved snapshot (params: session_id, target_id, origin, from_profile) - list_snapshots — List all saved snapshots (params: latest_only, profile) - delete_snapshot — Delete a snapshot (params: profile, origin, saved_at) - save_tab_state — Save all tab URLs and order (params: session_id) - restore_tab_state — Restore saved tab state (params: session_id) - save_session_checkpoint — Save full session state (params: session_id, name) - restore_session_checkpoint — Restore from a checkpoint (params: session_id, checkpoint_id) - list_session_checkpoints — List checkpoints (params: profile) - delete_session_checkpoint — Delete a checkpoint (params: profile, checkpoint_id) ### KV Store - kv_set — Store a value (params: namespace, key, value) - kv_get — Retrieve a value (params: namespace, key) - kv_delete — Delete a key (params: namespace, key) - kv_list — List keys in a namespace (params: namespace, prefix, include_values) - kv_clear — Clear all keys in a namespace (params: namespace) ### Secrets - extract_secret — Extract a value from a page and store as secret (params: session_id, target_id, expression, name) - use_secret — Inject a secret into a CLI command via stdin (params: name, command) - list_secrets — List secret names (values never shown) - delete_secret — Delete a secret (params: name) ### Network & Console - get_network_log — Query captured network requests (params: session_id, target_id, url_pattern, method, status_min, status_max, lookback_ms, limit, include_request_body, full_response, all_tabs) - get_console_log — Get browser console messages (params: session_id, target_id, limit) ### Site Knowledge - get_site_knowledge — Get learned knowledge about a site (params: origin) - register_adapter — Register a site adapter / reusable JS function (params: origin, name, description, js_code, params_schema) - call_site_api — Call a registered adapter (params: session_id, target_id, origin, name, params) - generate_adapter — Auto-generate an adapter using AI (params: origin, name, description) ### Recordings - start_recording — Start recording a session (params: session_id, target_id, name, tags, flow) - stop_recording — Stop recording (params: session_id) - add_marker — Add a timestamped marker to the recording (params: session_id, label, description) - list_recordings — List recordings (params: profile, flow, tag) - get_recording — Get recording details (params: recording_id) - delete_recording — Delete a recording (params: recording_id) - render_recording — Render recording to video (params: recording_id, format, with_overlays, position, font, font_size, text_color, bg_color, bar_height) ### Notifications - notify — Send a macOS notification (params: title, body, level, session_id) ### Autonomous Agent - agent_run — Run an autonomous browsing agent (params: goal, profile, model, max_steps) ## Links - Documentation: https://pagerunner.dev/docs/ - Getting Started: https://pagerunner.dev/docs/getting-started/ - Installation: https://pagerunner.dev/docs/installation/ - Configuration: https://pagerunner.dev/docs/configuration/ - Tools Reference: https://pagerunner.dev/docs/tools-reference/ - Profiles: https://pagerunner.dev/docs/profiles/ - Sessions & Tabs: https://pagerunner.dev/docs/sessions/ - Site Knowledge: https://pagerunner.dev/docs/site-knowledge/ - PII Anonymization: https://pagerunner.dev/docs/pii-anonymization/ - KV Store: https://pagerunner.dev/docs/kv-store/ - Secrets: https://pagerunner.dev/docs/secrets/ - Security: https://pagerunner.dev/docs/security/ - Daemon Mode: https://pagerunner.dev/docs/daemon/ - Recordings: https://pagerunner.dev/docs/recordings/ - Examples: https://pagerunner.dev/docs/examples/ - CLAUDE.md Setup: https://pagerunner.dev/docs/claude-md/ - Troubleshooting: https://pagerunner.dev/docs/troubleshooting/ - GitHub: https://github.com/Enreign/pagerunner - Comparisons: https://pagerunner.dev/vs/ - Changelog: https://pagerunner.dev/changelog/