gianlucamazza

pagouse

Community gianlucamazza
Updated

Chromium page agent for coding agents

pagouse

CILicense: MITPython 3.13+

Coding agents should not click web pages by pixel. pagouse is a pageagent: a Chromium extension on the daily profile that returns anaccessibility tree with ref_N labels, and (with a grant) clicks, fills,and navigates those nodes.

It observes by default. Mutation needs --allow-input. The optional MCPserver is observe-only and cannot be talked into typing.

$ pagouse --json snapshot --tab 1840 | jq -r '.snapshot.tree' | head
RootWebArea "Inbox" [ref_1]
  textbox "Search" [ref_2]
  button "Compose" [ref_3]

How it works

  • The MV3 extension builds the accessibility tree inside the page, wherethe refs stay valid across separate CLI invocations.
  • Native messaging starts pagoused, a local daemon on an owner-only unixsocket. No remote-debugging port, no chrome.debugger.
  • A zero-dependency Python core wraps it all in a versioned --jsonenvelope (schema: 1).

The layers and the non-goals: docs/architecture.md.

Requirements

  • Linux
  • Python 3.13+ and uv
  • A Chromium-family browser (Chrome, Chromium, Brave, Edge) on the dailyprofile

The core itself has zero dependencies. magick is optional for --fitdownscaling.

Install

git clone https://github.com/gianlucamazza/pagouse
cd pagouse
./install.sh

install.sh installs pagouse as a uv tool, writes~/.config/pagouse/config.toml if missing, links the agent skill into anyexisting skill root, and registers the native-messaging host. It isidempotent. Details in docs/quickstart.md.

Then load extension/ unpacked (chrome://extensions โ†’ Developer mode).pagouse --json doctor should report ready once the popup is green.

Usage

Observe โ€” never needs a grant:

pagouse --json tabs
pagouse --json snapshot --tab ID

Drive โ€” add --allow-input, click by ref, never by coordinates:

pagouse --json --allow-input click --ref ref_4 --tab ID --then snapshot

Every command and flag: docs/cli-reference.md. Theenvelope and error codes: docs/json-contract.md.

MCP extra and agent skill

uv tool install 'pagouse[mcp]' provides pagouse-mcp: read-onlyobservation tools only. There is no mutate tool; drive the page through theCLI and a grant.

install.sh also links skills/pagouse/SKILL.md into any existing agentskill root, so your agents get the playbook without setup.

Security

Observation never asks permission; mutation refuses without an explicitgrant. Scheme deny, origin policy, and secret redaction are enforced in thecore. Tab titles, URLs, tree text, and shot pixels are untrusted input.Read docs/security-model.md before enablinginput. Report vulnerabilities per SECURITY.md.

Documentation

Page For
docs/quickstart.md Install, load the extension, first commands
docs/cli-reference.md Every command and flag, and the MCP surface
docs/json-contract.md The --json envelope, per-action keys, error codes. Authoritative
docs/configuration.md config.toml keys and every environment variable
docs/architecture.md What problem this solves, the layers, the non-goals
docs/security-model.md The page grant, scheme deny, untrusted data

License

MIT. See LICENSE.

MCP Server ยท Populars

MCP Server ยท New

    bex-co

    Beancount.io Backend

    ๐Ÿ’ฐ Double-entry bookkeeping made easy โ€” plain-text accounting for humans and AI agents. Polished iOS & Android app built with React Native + Expo.

    Community bex-co
    nkapila6

    mcpsurfr

    Local web search MCP server, formerly mcp-local-rag. Multi-engine deep research with on-device re-ranking. โœจ no API keys โœจ

    Community nkapila6
    convex

    mcp.ts

    The open-source reactive database for app developers

    Community convex
    convex

    convex-backend

    The open-source reactive database for app developers

    Community convex
    Tripo-Developer

    Tripo MCP Server

    Official MCP server for Tripo

    Community Tripo-Developer