🌘 umbra
i wanted to drive my own signed-in chrome from whatever llm i'm working with, not just claude in chrome. so i built umbra. pair it with a local key, point any mcp client at it, and it runs your browser in the background without stealing focus. nothing leaves the machine.
it's two pieces: a chrome extension that owns every browser action, and a small companion server on your machine that hands a browser tool surface to your mcp client. they talk over a websocket on 127.0.0.1, signed with an hmac of a key you generate yourself. the extension does nothing until that pairing exists.




the short version
- model-agnostic. any mcp client works. you're not tied to one assistant.
- stays out of your way. actions run in the background, on owned tabs, without pulling chrome to the front.
- owned tabs only. a tab you opened yourself can't be read, clicked, or closed by any agent.
- local by construction. the only host it can reach is a program on your own machine.
get it
install the extension from the chrome web store, then pair the companion server with one command:
npx -y @umbra-mcp/server pair that prints the config block to drop into your mcp client. the privacy details are here (short version: it collects nothing).