Open Source · MIT License · Private by Design

Sepia
Private AI Browser

An open-source secure AI browser engine built for the agentic era.

Describe it. Sepia finds it, acts on it, scales it — privately.

80

Median tokens
per page view

231

Tests passing
in CI

18

MCP tools
available

The Problem

Browser Automation Is Broken

Every existing tool sends the model too much noise, breaks on redesigns, and is trivially detected by modern anti-bot systems. Enterprises deploying AI agents face three compounding failures.

Token Bloat

Raw HTML dumps average 8,700+ tokens of noise per page. Screenshots are opaque. DOM trees carry structure without meaning. Every model call burns budget on content the model can't use.

<div class="wrapper"><div class="inner"><div...

Fragile Selectors

CSS selectors break the moment a class is renamed. XPath breaks when a wrapper <div> is added. One redesign cycle takes down entire automation pipelines — maintenance costs compound faster than value delivered.

// Broke after redesign                     
#wrapper > div.new-class > button

Trivial Detection

Header-level User-Agent spoofing is a decade-old technique. Modern anti-bot systems fingerprint TLS ClientHello, HTTP/2 frame ordering, Canvas, and WebGL — cross-correlating signals in milliseconds. A Chrome UA with Firefox TLS is detectable instantly.

User-Agent: Mozilla/5.0 Chrome...
// TLS: JA3 = firefox_v120 ✗

The Business Impact

Every failed automation run costs engineering time to diagnose, customer experience to lose, and AI budget to waste. At enterprise scale, these failures compound into millions in hidden operational cost.

The Solution

Three Hard Problems. Solved Together.

Sepia addresses token cost, layout fragility, and detection resistance in one unified engine — designed from the ground up for the agentic era.

Compact Semantic View

80 tokens median

Sepia distills each page to a compact semantic outline from the accessibility tree. One line per meaningful element. The model reasons about handles like [e12] button "Sign in" — never raw selectors.

// 80 tokens vs 8,700 raw HTML
[e1] heading "Pricing"
[e2] button "Monthly"
[e3] button "Annual"
[e4] link "Get started $12/mo"

Stable Semantic Handles

Survives redesigns

Handles derive from meaning, not structure: role + accessible name + ordinal. When a site ships a redesign that moves your button to a different container, the handle is unchanged. When the element is gone, Sepia marks it stale and stops.

// DOM path changed — handle unchanged
Before: #app > main > button
After:  #app > section > div > button
Handle: [e4] button "Sign in" ✓

Coherent Browser Profile

JS/header validated

The configured fingerprint preset — UA, locale, timezone, viewport — is applied at context creation and validated before the session starts. navigator.webdriver is masked. If signals contradict each other, the session refuses to start.

// Coherence harness runs at startup
profile: chrome-149-linux-x86_64
UA: Chrome/149 Linux ✓
webdriver: masked ✓
session: ready
Use Cases

What You Can Build

From a single plain-language goal to scaled workflows across thousands of pages — Sepia handles the full spectrum of enterprise browser automation.

Authenticated Workflows

Automate login, session management, and multi-step authenticated flows. Credentials never enter the model context — privacy module redacts secrets before every observation.

"Sign in to app.example.com with stored credentials"

Search & Data Extraction

Navigate search results, extract structured data, and aggregate information across pages. Returns typed RunTrace JSON — ready for downstream pipelines.

"Search 'TypeScript async patterns' on MDN, return first 3 results"

Form Completion & Submission

Fill complex multi-step forms — dropdowns, checkboxes, file uploads — with typed action validation. Model output is never eval'd; only a typed action enum is dispatched.

"Fill contact form: name='Alice', email='alice@co.com', submit"

Multi-Page Navigation Flows

Chain actions across multiple pages in a single goal — add to cart, navigate to checkout, apply coupon, confirm. The agent loop maintains state across page transitions.

"Add first result to cart, proceed to checkout"

Scaled Batch Processing

Run the same goal across N inputs in parallel. HTTP server mode supports up to configurable concurrent sessions with bearer-token-protected API. Kubernetes Helm chart included for enterprise scale.

"Run price check for each of these 500 SKUs"

Competitive Intelligence

Monitor pricing pages, track feature launches, and aggregate competitor data into structured reports. Ephemeral browser profiles ensure clean-session isolation between runs.

"What are the current plan prices on competitor pricing pages?"
Architecture

Plan → Observe → Act → Verify

A deterministic core with side effects only at the edge. The serializer and resolver are pure functions — no LLM calls, fully unit-tested, identical in production and CI.

🎯

Plan

Parse plain-language goal into task

👁️

Observe

Build compact view from AX tree

Act

Validate & dispatch typed action

Verify

Check confidence, retry or stop

CLI

One-shot agent runs from the terminal. Returns structured RunTrace JSON with full step audit trail.

sepia run "What are the Node.js
LTS versions?" --answer-only

HTTP Server

REST API for enterprise integrations. Bearer-token auth required. Configurable concurrency. Kubernetes Helm chart for scale.

POST /run → RunTrace
GET  /health → status
max-concurrent: 5–N

MCP Stdio

18 tools for Claude Code, Claude Desktop, and Codex. No model key required — the host agent reasons; Sepia drives the browser.

claude mcp add sepia -- sepia mcp
# 18 tools: observe, click,
# type, scroll, tabs, ...

Privacy by Design

  • Credentials are redacted before every model observation — never enter LLM context
  • Ephemeral browser profiles cleared at session end — no cross-run contamination
  • At-rest encryption (AES-256-GCM) for profile credentials — no plaintext mode
  • Telemetry off by default — opt-in only

Security Hardening

  • Model output never evaluated as code — typed action enum only
  • URL validation rejects file://, data://, javascript: schemes
  • Confidence threshold (0.7 default) — refuses to act on ambiguous elements
  • HTTP server requires authentication — open runs require explicit opt-out
Model Compatibility

Works With Any OpenAI-Compatible Endpoint

Configure any model provider via environment variables. Local inference with Ollama needs no API key.

Anthropic

Claude Sonnet / Opus

OpenAI

GPT-4o / o3

OpenRouter

400+ models

Ollama

Local · no API key

Technical Whitepaper

Deep-dive into Sepia's architecture, security model, token economics, enterprise deployment patterns, and ROI analysis. Designed for CTOs, architects, and security teams evaluating AI browser infrastructure.