Turn your browser into an AI browser.
Haro is a Chrome MV3 extension that adds a quiet, page-aware AI layer to the browser. It includes a sidebar-first experience, local model provider settings, a low-profile window.browserAgent gateway, site permissions, memory, skills, and call observability.
- React
- TypeScript
- Vite
- Chrome Manifest V3
- Tailwind CSS
- shadcn-inspired local UI primitives
- Vitest
pnpm install
pnpm test
pnpm run build- Run
pnpm run build. - Open
chrome://extensions. - Enable Developer mode.
- Click Load unpacked.
- Select the
distdirectory.
- Open the extension options page.
- Add one or more model provider profiles.
- Choose OpenAI-compatible or Anthropic-compatible format for each profile.
- Add your API key, custom Base URL if needed, and model names.
- Test the provider connection and choose the default provider/model.
- Open any webpage.
- Open the Haro side panel and run a page task.
Authorized websites can call:
const access = await window.browserAgent.requestAccess({
appName: "Example App",
scopes: ["model.chat", "page.read", "page.act", "agent.run"],
autoRun: true
});
if (access.ok) {
const status = await window.browserAgent.getStatus();
const chat = await window.browserAgent.chat({
messages: [{ role: "user", content: "Summarize this page." }]
});
const run = await window.browserAgent.run({
task: "Extract the main action items from this page.",
mode: "auto"
});
}Gateway responses use a stable v1 envelope:
{ ok: true, requestId: "...", result: ... }
{ ok: false, requestId: "...", code: "permission_denied", error: { code, message } }First-release scopes are model.chat, page.read, page.act, agent.run, and gated debugger.control.
API keys stay inside extension storage and are never exposed to webpages.
Call logs and debug logs are kept lightweight and redact provider secrets.
Debugger mode is an advanced control capability built on the Chrome Debugger API. It is not enabled by default, only works on the current active tab, and requires a separate debugger.control site authorization before Haro can attach. Use it when DOM mode is not reliable enough for page inspection or input.