Brotto

Run it yourself

One container on your machine, about 510 MB — and the extension in Chrome. Free, permanent, Apache 2.0. No account, no operator, no cap. Everything Brotto keeps lands on your disk.

The install path in three steps. Step one is the server: an AI prompt or four commands, with Docker the only ask. Step two is a container on your machine at 127.0.0.1:8000. Step three is the Chrome extension with two settings, and then a task running in the tab you are already signed in to.
Two doors in, one path out. The AI prompt and the four commands do the same job.

Let your AI do it

You do not have to read a terminal tutorial to run Brotto. If you use an AI coding tool (Cursor, Claude Code, Copilot, Windsurf — whatever you already have), paste the block below into it. The tool does the work; you paste two things into the extension yourself, at the end.

This sets up the server only. The extension is the next step and needs no agent — it installs from the Chrome Web Store in one click.

Set up Brotto's server on this machine. Brotto is an AI browser agent: a
Chrome extension talks to a small local server that runs the agent loop.

Prerequisite: Docker.

1. Clone https://github.com/suryanshgupta9933/Brotto and work in that
   directory.

2. Copy .env.example to .env. Generate a long random AGENT_SECRET — a
   password generator, or `openssl rand -hex 32`, is fine. Do not reuse a
   password I use anywhere else. Never commit the .env file.

3. Start the server: docker compose up -d

4. Confirm it answers: curl -s http://127.0.0.1:8000/health

5. Stop there. Tell me the server address (http://127.0.0.1:8000) and that
   AGENT_SECRET is what I will paste into the extension's Settings →
   Connection.

Do not paste a model API key into any file. I will add that myself in the
extension's Settings — it belongs there, not in .env.

Do it by hand

Same four commands. Docker is the only thing you need installed first.

git clone https://github.com/suryanshgupta9933/Brotto.git
cd Brotto

cp .env.example .env      # set AGENT_SECRET to any long random string
docker compose up -d

That is the whole server. It listens on http://127.0.0.1:8000 and never opens a browser of its own. Check it with:

curl -s http://127.0.0.1:8000/health

If that answers, the server is up and the rest is the extension.

The extension

Two ways. The store install is the default path; building from source is there for people who want it.

Chrome Web Store — the easy path

Open the side panel and fill in two Settings screens:

Settings · Connection

Server address

http://127.0.0.1:8000, and paste the AGENT_SECRET you generated.

Settings · Model

Your model key

Your key, any of the providers Brotto supports. Held in memory for the run and never written to disk. It goes here, in the extension — not in .env, and not in any file on the server.

Build it yourself — the other path

cd clients/brotto-extension
npm ci && npm run build

Then open chrome://extensions, turn on Developer mode, and Load unpacked → clients/brotto-extension/dist. Same settings as above.

What you have

Free, permanent, and yours

A browser agent that runs where you are already signed in, with no account and no operator on the other end. Free, permanent, Apache 2.0 — read it, fork it, ship it.

The same three gates

The gates that cannot be switched off are the same ones the cloud beta has, and the record of every run is a file on your disk.

Still to come

A one-command installer is planned, not built. Until it is, these are the steps. If you would rather skip them entirely, Brotto Cloud is the other door — same extension, someone else's server, invite-only while it is in beta.

Get Brotto · Privacy · Security · Back to the front page