Learning web-surfing consultant and browser automation chooser for agents. Agents call Surfari; Surfari picks the best browser backend available.
uvx --from git+https://github.com/eidos-agi/surfari.git surfari Surfari gives agents a stable browser surface. The caller asks Surfari to browse; Surfari checks the available providers, picks the best backend for the task, runs it, and records proof above the backend.
Right now the default provider is agent-browser through the Eidos ab wrapper. Browserbase handles remote sessions when configured. The learning layer lives above every backend, so playbooks and proof survive provider churn.
The PyPI name surfari is already occupied by another project, so install the Eidos build from GitHub for now.
uvx --from git+https://github.com/eidos-agi/surfari.git surfari --help
pip install git+https://github.com/eidos-agi/surfari.git
pip install 'eidos-surfari[browserbase] @ git+https://github.com/eidos-agi/surfari.git' surfari doctor
surfari browse status --json
surfari browse open https://example.com
surfari browse snapshot
surfari browse open --remote --keep-alive https://example.com
surfari browser status --json
surfari browserbase status --json Use --provider auto|agent-browser|browserbase only when proof or debugging needs a pinned backend. Otherwise leave provider selection to Surfari.
On the Mac mini, Surfari currently auto-selects the Eidos agent-browser wrapper:
SURFARI_HEADED=0 surfari browse open --session surfari-headless https://example.com
SURFARI_HEADED=1 surfari browse snapshot --session surfari-headed Browserbase support is optional and stays behind the browserbase extra. Surfari reads only these environment names and reports their values as present or missing:
BROWSERBASE_API_KEY
BROWSERBASE_PROJECT_ID
SURFARI_BROWSERBASE_TIMEOUT
SURFARI_BROWSERBASE_KEEP_ALIVE Use keep-alive only when a later command needs to reconnect to the same remote session, then release it explicitly. Normal callers can stay on surfari browse; surfari browserbase remains available for provider-specific debugging.
surfari browse open --remote --keep-alive https://example.com
surfari browse snapshot --provider browserbase
surfari browse screenshot --provider browserbase --out evidence/browserbase-smoke.png
surfari browse release --provider browserbase SURFARI_HEADED.A token-savings case study is in preparation. Private evidence shows multi-million-token cached browser sessions, but the public savings claim will ship only after the baseline and comparison model are explicit. This page intentionally avoids unsupported savings claims and raw private evidence.
Surfari should stop for human approval before sending messages, uploading files, submitting forms, changing settings, paying, purchasing, deleting, filing, or using credentials and MFA. Browser profiles, cookies, authenticated screenshots, and private page text do not belong in public evidence.