# Dejo: browser automation MCP that remembers websites

> Dejo is an open-source browser automation MCP server for Claude Code, Codex and Cursor. It learns a website once, then replays it with zero model calls.

Canonical: https://dejo.run/

> For AI agents: the index of this site is https://dejo.run/llms.txt, and every page is also served as markdown (add .md to its address, or send Accept: text/markdown).

Your AI agent learns a website once. Every run after that is one tool call, with zero model calls.

## How it works

1. **Learn once.** The first time, your agent explores the site the normal way. Dejo saves every step it takes as a trail.
2. **Replay in one call.** Every run after that is one tool call. Dejo walks the trail in plain code and checks each page as it goes. Zero model calls.
3. **Repair what moved.** When a site changes, only the broken step fails. Your agent fixes that one step, and Dejo saves the fix for every run after.

## Benchmark

On 19 tasks on real, lesser-known websites, each in a brand-new Claude session (Claude Sonnet 5, medium effort), Dejo's first run used 38% fewer tokens than Playwright MCP (251K against 409K) and answered 19 of 19 right (Playwright MCP 17, Playwright CLI 18). Every run after replayed from memory with 78% fewer tokens (89K), in a single tool call on 17 of 19 tasks. On a separate 50-site reliability test with the same fixed steps for each tool and no model, Dejo 0.3.1 found and used the right element on 47 of 50 sites, plain Playwright on 43. These are our own measurements; the method and raw data are public. Dejo is not cheaper on single-page, one-line lookups. [Method, results and raw data](https://dejo.run/benchmark).

## Features

- **Sign in once.** A real browser window opens and you sign in yourself. The profile stays signed in, and Dejo never asks for your password.
- **Many accounts, side by side.** Give a customer, a vendor and an admin a profile each. They stay signed in together, and your agent switches between them instantly.
- **Knows every page it saw.** Dejo remembers what was on each page it visited. A new task on a known site starts from that map, not from zero.
- **One trail, many questions.** Learn how to count the issues on one repo, then ask the same of any other repo. Dejo swaps the subject and walks the same route.
- **Shared trails.** Pick up a trail another agent on your machine already made, or share your own. Typed values and which account was used never travel.
- **Forget anytime.** One command wipes everything Dejo knows about a site. Your memory, your call.

## Get started

Python 3.11 or newer.

```
pip install dejo-mcp
playwright install chromium
```

Then add it to your agent.

Claude Code, in your terminal:

```
claude mcp add --scope user dejo -- dejo-mcp
```

Codex, in ~/.codex/config.toml:

```
[mcp_servers.dejo]
command = "dejo-mcp"
```

Cursor, in ~/.cursor/mcp.json:

```
{
  "mcpServers": {
    "dejo": { "type": "stdio", "command": "dejo-mcp" }
  }
}
```

Any MCP client, as a stdio server:

```
dejo-mcp
```

## FAQ

### Is Dejo just a cache?

No. A cache replays and hopes. Every step Dejo saves carries a check that proves it landed: the page changed, the file downloaded, the field holds what was typed. So it can tell a changed site from a working one, and fix only the step that moved.

### What happens when a website changes?

Each step keeps up to nine ways to find its control, so most redesigns cost nothing. If every way to one control is gone, Dejo stops at that step and asks your agent about that one control. The fix is saved and the rest of the route is untouched. If more than half the steps break, the route is relearned, starting from what Dejo already knows about the site.

### Does Dejo call an AI model?

No. Replay is plain code with zero model calls, and there is no API key to set. The agent you already use does the thinking, on the first run and when a step needs fixing.

### Is it cheaper on every task?

No. The first run costs the most, because Dejo does the job and learns the route. On a single page with a one-line answer there is nothing to remember, so it is not cheaper there. It pays off on tasks with steps that you run again.

### Where is the memory kept, and can I delete it?

On your machine, in a local file. One command wipes everything Dejo knows about a site, its map included. After that the next run says the memory is gone. It does not quietly fall back to guessing.

### Does it store my passwords?

No. You sign in yourself, in a real browser window. A step that needs a password records only that a password goes there; the value is read at run time from an environment variable or a local secrets file. Export a trail and search it: there is nothing to find.

### Which agents does it work with?

Dejo is one standard MCP server with no arguments, so any agent that can run an MCP server can use it, including Claude Code, Codex and Cursor.

### Is it free?

Yes. Dejo is free and open source under the MIT license.

## Source

- [GitHub](https://github.com/dejohq/dejo-mcp): source code, MIT license
- [PyPI](https://pypi.org/project/dejo-mcp/): the dejo-mcp package

## Related

- [Getting started with Dejo](https://dejo.run/docs)
- [Playwright MCP token usage, measured on 19 real websites](https://dejo.run/benchmark)
- [Playwright MCP alternative that remembers websites](https://dejo.run/compare/playwright-mcp)
- [Chrome DevTools MCP vs Playwright MCP (measured)](https://dejo.run/compare/chrome-devtools-mcp)
- [Blog](https://dejo.run/blog)
