A real browser for AI agents.

REL is a native macOS browser with fully isolated and configurable Chromium sessions for use with agents, scripts or scheduled tasks. It can be a useful alternative to existing Browser Use environments that are restrictive. Every tab is an isolated browser session with its own proxy, profile, cache, and filtering. The browser footprint is fully customizable; not through JavaScript, the DevTools Protocol, or detectable page modifications, but through Chromium itself.

REL 0.1.13 · Apple silicon · macOS 15 or later

REL on macOS with an isolated Hacker News session and an agent summarizing comments from the top three stories in Chat
01 Isolated by default
Cookies, site data, private cache, storage, and routing stay with the tab.
02 Visible agent control
People and models work through the same persistent Chromium window.
03 Scriptable, never injected
Run structured actions through Chromium input—no injected JavaScript or DevTools Protocol.
04 Six page representations
Choose rendered HTML, Markdown, semantics, pixels, or synchronized combinations.

The browser layer, handled.

Each REL tab is a complete, persistent browser environment with its own storage, private cache, and network route. Start from a profile, then customize the session without affecting any other tab. Control that same visible browser from Chat, MCP, the bundled CLI, RPC v1, or the typed Rust client.

  1. One browser session per tab

    Each tab keeps its own cookies, site data, service workers, private cache, storage, and network route. Sessions stay open until you delete them, with no fixed count.

  2. Scriptable browser actions

    Run ordered click, wait, and link actions through the CLI, MCP, RPC v1, or Rust SDK. REL resolves the live page and dispatches native Chromium input, never injected JavaScript.

  3. Reusable profiles

    Save a proxy, AdBlock, image rules, and optional imported browser data as a template for new sessions. Existing sessions stay unchanged.

  4. Pause / Play

    Pause stops the active load and blocks new network requests for that tab. Play reconnects it and reloads the page.

  5. Per-session proxies

    Route each tab directly or through its own authenticated proxy. When proxy bandwidth is metered, pair it with Bandwidth Saver or AdBlock to reduce traffic from heavy images, ads, and trackers.

  6. Bandwidth Saver

    The built-in BandwidthSaver profile turns on AdBlock and blocks images larger than 10 kB. Set it as the default for new tabs to reduce data use on metered proxies.

  7. Image filtering

    Allow all images, block them, or set a size limit. Use Bandwidth Saver’s 10 kB image limit to avoid downloading large images over metered proxies.

  8. Brave AdBlock

    Block ads and trackers with EasyList, EasyPrivacy, Brave Specific, and Brave Unbreak. When a proxy charges by bandwidth, blocked requests also reduce metered data use.

  9. Safe shared caching

    Reuse eligible public assets across sessions on the same network route without sharing cookies, site storage, or private cache. This avoids repeated downloads over a metered proxy.

  10. Coherent browser identity

    Keep Chromium's native identity or set a consistent app-wide user agent, platform, locale, timezone, seed, and network profile.

  11. A terminal for every session

    Open Ghostty from any tab with REL_SESSION_ID and REL_SESSION_URL ready for the bundled CLI.

  12. Viewport presets

    Follow the REL window or pin exact desktop and mobile viewport sizes. Presets stay stable in visible and background tabs.

  13. Scheduled tasks

    Run a prompt on chosen days and times. REL creates a fresh session from the selected Profile and uses your default AI model.

  14. Model providers

    Connect OpenAI, Anthropic, Gemini, Ollama, or an OpenAI-compatible endpoint, then choose the default model for Chat and scheduled tasks.

Use the CLI for quick captures and persistent sessions.

For a single capture, pass REL a URL and redirect the rendered page wherever you need it. Page data goes to standard output; progress stays on standard error, so shell pipelines work without extra parsing.

Create a session for multi-step work. Later CLI calls select the newest session automatically, so you can navigate it, run ordered actions, and capture the result from the same visible tab.

01

Simple capture

Open a URL in visible Chromium and save the rendered page to a file.

rel https://example.com > example.html
02

Navigate, act, and capture

Create a persistent session, then let each command automatically target it.

rel session create --name Research
rel navigate https://rel.me
rel perform '[{"action":"wait-for","selector":"body"}]'
rel capture > rel.html

Use REL your way.

Start from the terminal, connect an agent, crawl with Python, or build directly on REL's local API.

  • CLI

    Capture and automate from the terminal.

  • Python crawler

    Run restartable crawls in a real browser.

  • Playwright for Python

    Keep familiar Playwright-shaped scraping code.

  • MCP server

    Give AI agents REL’s visible browser.

  • RPC v1

    Control REL through its local HTTP API.

  • Rust SDK

    Build typed integrations in Rust.

Choose what MCP returns.

Use semantic Markdown for focused reading and research. For interaction, request a semantic, hybrid, or visual observation with typed element refs, viewport geometry, and an optional synchronized image. Take a standalone screenshot when only the rendered pixels matter.

Observation refs are bounded to the stored page state that created them. REL validates the observation, document sequence, and target before every action, then returns a fresh observation. Rendered HTML remains available as a saved file resource for capture and diagnostics.

RepresentationWhat the model receivesBest for
HTMLRendered HTMLRendered markup saved and returned as an MCP file resource.Markup inspection and diagnostics.
MDSemantic MarkdownQuery-directed sections and links without action references or pixels.Research, excerpts, and broad reading.
SEMSemantic observationCompact content, element roles and states, bounds, viewport geometry, and typed references.Reading, extraction, and low-cost interaction.
SEM + PNGHybrid observationA semantic observation plus a synchronized current-viewport image.Reference-based interaction with visual grounding.
PNGVisual observationMinimal page semantics plus a synchronized current-viewport image.Canvas, charts, maps, and spatial inspection.
PNG / JPEG / WEBPStandalone screenshotA viewport or full-page image returned inline or saved as a file resource.Pixel inspection and saved visual evidence.