MonoClaw

Browser

Mona can browse the web using Playwright. This lets her read pages, fill forms, click buttons, and extract data.

Prerequisites

Playwright is installed automatically with the standard installer. If you need to reinstall:

cd ~/.monoclaw/monoclaw-runtime
npm install
npx playwright install chromium

Basic browsing

Search the web for "Hong Kong stock market news today"

Mona will:

  1. Search using your configured search provider
  2. Open relevant pages
  3. Extract and summarize the content

Direct page access

Read https://www.hkex.com.hk and tell me the latest announcements

Form filling

Go to https://example.com/login, fill in username "alex" and password "secret", and click login

Warning

Never ask Mona to log into sensitive accounts in shared or gateway sessions.

Data extraction

Scrape https://example.com/products and extract all product names and prices into a table

Screenshots

Take a screenshot of https://example.com and save it to screenshots/homepage.png

Browser configuration

# ~/.monoclaw/config.yaml
browser:
  headless: true          # Run without visible browser window
  timeout: 30000          # Page load timeout (ms)
  user_agent: "MonaBot/1.0"
  proxy: "http://proxy:8080"  # Optional proxy

JavaScript execution

Mona can execute JavaScript on pages:

On https://example.com, run this JavaScript: document.title

Limits

  • Max page size — 1MB of extracted text
  • Max pages per turn — 5
  • No downloads — File downloads are blocked for security
  • No uploads — File uploads are blocked

Security

  • Browser runs in the same sandbox as terminal commands
  • Pages are opened in ephemeral contexts (no cookies persist)
  • JavaScript execution is sandboxed
  • Sensitive domains can be blocked:
browser:
  blocked_domains:
    - "bank.com"
    - "internal.company.net"

Troubleshooting

ProblemFix
"Browser not available"Run npx playwright install chromium
Page won't loadCheck URL and network connectivity
Content missingSome sites block scrapers; try a different source
Slow responsesReduce browser.timeout or use simpler pages