Skip to content

ChrisFeldmeier/seebro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Seebro

Give your AI agent eyes.
12MB binary. HTTP API. 10x cheaper than screenshots.

πŸͺΌ See the web through your agent's eyes

Go 12MB REST MIT


The Problem

Browser automation tools are designed for humans, not agents. Playwright, Puppeteer, Selenium – they all return massive DOM dumps or screenshots that burn through tokens. And most agent-specific solutions are locked into their own ecosystems.

Seebro takes a different approach: accessibility trees over HTTP.

# Get page content β€” ~800 tokens instead of 10,000+
curl localhost:9867/text

# Interact with elements using stable refs
curl -X POST localhost:9867/action -d '{"kind":"click","ref":"e5"}'

How It Compares

Seebro Typical Browser Tools
Token cost ~800 (text) / ~3,600 (interactive) 10,000+ (full DOM/screenshot)
Interface HTTP – works with any agent Framework-specific
Output format Structured a11y tree Raw HTML or pixels
Bot detection Built-in stealth Manual configuration
Session handling Automatic persistence Usually ephemeral
Deployment Single 12MB binary Complex dependencies

Bottom line: 5-13x cheaper for typical browsing tasks, and it works with any agent that can make HTTP calls.

Getting Started

Option 1: Docker

docker run -d -p 9867:9867 --security-opt seccomp=unconfined seebro/seebro
curl http://localhost:9867/health

Option 2: Build from Source

go build -o seebro .
BRIDGE_HEADLESS=true ./seebro

Option 3: Let Your Agent Handle It

If you're using OpenClaw, just ask your agent to set up Seebro. The skill file has everything it needs.

Running Modes

Headless (Production)

BRIDGE_HEADLESS=true ./seebro

Chrome runs invisibly. This is what Seebro is optimized and tested for. Best for servers, CI pipelines, and automated workflows.

Headed (Development)

./seebro

Opens a Chrome window you can watch and interact with. Useful for debugging and manual logins. Note: headed mode has some rough edges – profile management is manual, and some sites behave differently.

Core Concepts

Accessibility Tree & Refs

Instead of HTML, Seebro returns the browser's accessibility tree – the same structure screen readers use. Each element gets a stable ref (e0, e1, e2...) that you use for interactions.

e0:RootWebArea "Example Domain"
e1:heading "Example Domain"
e2:link "More information..."

Click e2 and the link activates. No coordinate guessing, no CSS selectors that break.

Token Efficiency

Real measurements from a search results page:

Method Tokens
Full accessibility snapshot ~10,500
Interactive elements only (?filter=interactive) ~3,600
Text content (/text) ~800
Screenshot (vision model) ~2,000

For a 50-page monitoring task:

  • Screenshots: ~$0.30
  • Full snapshots: ~$0.16
  • Seebro /text: ~$0.01

Session Persistence

Log in once, stay logged in. Seebro maintains a Chrome profile at ~/.seebro/chrome-profile/ that persists cookies, auth tokens, and open tabs across restarts.

API Reference

Reading State

Endpoint Purpose
GET /health Check connection status
GET /tabs List open browser tabs
GET /snapshot Get accessibility tree
GET /text Extract readable content
GET /screenshot Capture JPEG image
GET /cookies Retrieve cookies
GET /stealth/status Check stealth configuration

Taking Actions

Endpoint Purpose
POST /navigate Load a URL
POST /action Click, type, scroll, etc.
POST /actions Batch multiple actions
POST /evaluate Run JavaScript
POST /tab Create or close tabs
POST /tab/lock Reserve tab for exclusive use
POST /tab/unlock Release tab reservation
POST /cookies Set cookies
POST /fingerprint/rotate Change browser fingerprint
POST /shutdown Graceful shutdown

Snapshot Options

Parameter Effect
filter=interactive Only buttons, links, inputs (~75% fewer tokens)
format=compact Minimal one-line-per-node output
format=text Indented tree format
diff=true Only changed elements since last call
depth=N Limit tree depth
selector=CSS Scope to element subtree
maxTokens=N Truncate to token budget

Configuration

Environment variables control behavior:

Variable Default Purpose
BRIDGE_PORT 9867 Server port
BRIDGE_TOKEN – Auth token (set this in production!)
BRIDGE_HEADLESS false Run without visible window
BRIDGE_PROFILE ~/.seebro/chrome-profile Browser profile location
BRIDGE_STEALTH light Stealth level: light or full
BRIDGE_BLOCK_IMAGES false Skip image loading
BRIDGE_NO_ANIMATIONS false Freeze CSS animations
CDP_URL – Connect to existing Chrome instance

Full list in the configuration docs.

Stealth Mode

Seebro patches common automation fingerprints:

  • Removes navigator.webdriver flag
  • Spoofs realistic plugins and languages
  • Hides CDP artifacts
  • Optional: canvas noise, WebGL vendor spoofing, font metric fuzzing

light mode (default) handles most sites. full mode adds fingerprint randomization but can break some pages.

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Agent     β”‚  ── HTTP ───►    β”‚  Seebro  β”‚  ── CDP ───►     β”‚ Chrome  β”‚
β”‚  (any kind) β”‚   JSON req/res   β”‚  (Go)    β”‚   DevTools       β”‚         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Seebro is a translation layer. Agents speak HTTP, Chrome speaks CDP. Seebro handles the conversion, adds stealth, manages sessions, and compresses output to save tokens.

Security Notice

Seebro gives agents real browser access with your real accounts.

When you log into sites, those sessions persist. Any agent with Seebro access can act as you – read messages, make purchases, access sensitive data.

Essential precautions:

  • Set BRIDGE_TOKEN – without it, anyone on your network has access
  • Treat ~/.seebro/ as sensitive – it contains your browser profile
  • Start with test accounts – don't connect production accounts until you trust your agent
  • Firewall appropriately – Seebro binds to all interfaces by default

Think of it as handing someone an unlocked laptop. Powerful when intentional. Dangerous when careless.

Dependencies

Package Purpose License
chromedp CDP driver MIT
cdproto CDP types MIT
gobwas/ws WebSocket MIT

Everything else is Go standard library.

Requirements

Development

git clone https://github.com/ChrisFeldmeier/seebro.git
cd seebro
go build -o seebro .
go test ./...

Contributors

Chris Feldmeier
Chris Feldmeier Β· Creator

OpenClaw Integration

Seebro works natively with OpenClaw, the open-source AI assistant. Use it as your agent's browser backend for efficient, low-cost web automation.


Star History

About

πŸͺΌ Give your AI agent eyes (Lightweight 12MB AI browser automation library for Go)

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors