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 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. Pause / Play

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

  4. Image filtering

    Allow all images, block them all, or filter files above a size you choose. The default size limit is 100 kB.

  5. Brave AdBlock

    Block ads and trackers with EasyList, EasyPrivacy, Brave Specific, and Brave Unbreak. Apply the rules to one tab or the entire app.

  6. Per-session proxies

    Route each tab directly or through its own authenticated proxy. Credentials stay in Rust and macOS Keychain, and Oxylabs sticky sessions can rotate on demand.

  7. Profiles and session defaults

    Start with Direct, AdBlock, or BandwidthSaver. Session defaults set the proxy and filtering copied into each new tab without changing existing sessions.

  8. Safe shared caching

    Reuse eligible public assets across sessions without sharing cookies, site storage, or private cache. Shared entries stay partitioned by network route.

  9. Coherent browser identity

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

  10. A terminal for every session

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

  11. Viewport presets

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

  12. Per-session logs

    Inspect each session's append-only activity log without exposing it as another public API.

  13. Request-scoped cancellation

    Closing a client connection cancels its navigation, waits, and actions without closing REL or the persistent browser session.

Use the CLI for quick captures and persistent sessions.

For a one-off 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. Navigate it, run ordered actions, and capture the result from the same visible tab without handing the workflow to a second browser process.

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 one persistent session, interact with it, and capture the resulting page.

session_id="$(rel session create --name Research --id-only)"

rel navigate https://rel.me --session-id="$session_id"
rel perform '[{"action":"wait-for","selector":"body"}]' --session-id="$session_id"
rel capture --session-id="$session_id" > rel.html

Give the visible browser to a model.

Connect an MCP client to REL's bundled stdio server and control the same visible Chromium sessions you use in the app. Fourteen focused tools cover reading, navigation, observation-scoped actions, screenshots, persistent sessions, and proxies. Every call runs through the public Rust client and local RPC v1 API.

ToolOperation
rel_statusCheck the installed REL app, local agent, Browser Proxy, and Chromium bridge.
rel_notificationsList notifications the user opted in to share as untrusted website content.
rel_captureLoad a page, perform optional ordered actions, and save its rendered HTML.
rel_page_attachAttach an ephemeral automation page to a persistent browser session.
rel_navigateNavigate by URL, history, or reload and immediately observe the result.
rel_readRead a URL or current page as bounded, query-directed Markdown and links.
rel_page_actionPerform one canonical action on an attached page and return rendered HTML.
rel_take_screenshotCapture a viewport or full-page PNG, JPEG, or WebP image.
rel_observeRead compact rendered semantics and an optional synchronized viewport image.
rel_findSearch a stored observation for matching content or actionable refs.
rel_actionPerform up to 32 ordered observation-scoped actions and return a fresh observation.
rel_list_sessionsList persistent browser sessions and their canonical IDs.
rel_close_session_groupClose every persistent browser session in a named group.
rel_list_proxiesList configured proxy aliases and non-secret configuration.

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.

Join the waitlist. Download with a code.

Leave your email for release updates. If you already have an access code, use it to download the private macOS DMG.

01

Join the waitlist

Get a note when REL is ready for broader access.

Product updates only. No spam.

 

02

Download REL

Already have an access code? Use it to unlock the macOS DMG.