Give your AI agent eyes.
12MB binary. HTTP API. 10x cheaper than screenshots.
πͺΌ See the web through your agent's eyes
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"}'| 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.
docker run -d -p 9867:9867 --security-opt seccomp=unconfined seebro/seebro
curl http://localhost:9867/healthgo build -o seebro .
BRIDGE_HEADLESS=true ./seebroIf you're using OpenClaw, just ask your agent to set up Seebro. The skill file has everything it needs.
BRIDGE_HEADLESS=true ./seebroChrome runs invisibly. This is what Seebro is optimized and tested for. Best for servers, CI pipelines, and automated workflows.
./seebroOpens 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.
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.
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
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.
| 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 |
| 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 |
| 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 |
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.
Seebro patches common automation fingerprints:
- Removes
navigator.webdriverflag - 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.
βββββββββββββββ ββββββββββββ βββββββββββ
β 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.
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.
| Package | Purpose | License |
|---|---|---|
| chromedp | CDP driver | MIT |
| cdproto | CDP types | MIT |
| gobwas/ws | WebSocket | MIT |
Everything else is Go standard library.
- Go 1.25+ (or download a release binary)
- Chrome or Chromium
git clone https://github.com/ChrisFeldmeier/seebro.git
cd seebro
go build -o seebro .
go test ./...
Chris Feldmeier Β· Creator
Seebro works natively with OpenClaw, the open-source AI assistant. Use it as your agent's browser backend for efficient, low-cost web automation.
