# Agentic Browser Chat
[](./LICENSE)
[](https://developer.chrome.com/docs/extensions/mv3/intro/)
[](./CONTRIBUTING.md)
## Table of contents
- [What it is](#what-it-is)
- [Screenshots](#screenshots)
- [Highlights](#highlights)
- [Features](#features)
- [Chat with any page](#chat-with-any-page)
- [Right-click menu and content selector](#right-click-menu-and-content-selector)
- [Attachments](#attachments)
- [Notes](#notes)
- [Tasks](#tasks)
- [Quiz](#quiz)
- [Agent tools](#agent-tools)
- [Memory, Skills, and Custom Instructions](#memory-skills-and-custom-instructions)
- [API call logs](#api-call-logs)
- [Cross-tab sync](#cross-tab-sync)
- [Rendering](#rendering)
- [Install](#install)
- [Quick start](#quick-start)
- [Configuration](#configuration)
- [Permissions: what each one is for](#permissions-what-each-one-is-for)
- [Privacy](#privacy)
- [Architecture](#architecture)
- [Project layout](#project-layout)
- [Bundled libraries](#bundled-libraries)
- [Development](#development)
- [Troubleshooting](#troubleshooting)
- [Roadmap & status](#roadmap--status)
- [Contributing](#contributing)
- [Security](#security)
- [License](#license)
- [Acknowledgements](#acknowledgements)
## What it is
Agentic Browser Chat is a Chrome extension that puts an AI assistant into an overlay panel injected into every page (a shadow-DOM UI on top of the page, **not** Chrome's built-in side panel API). It can:
- Read whatever page you are on and answer questions about it.
- Hold long-running conversations with searchable history, favorites, and per-chat model overrides.
- Take actions on your behalf through a built-in tool registry: page queries, form filling, code execution in a sandboxed worker, web search, web fetch, document and image generation, and more.
- Remember facts about you across chats, save reusable procedures as **skills**, and apply your own **custom instructions** to every chat.
- Manage your own notes (with version history and pop-out editor), tasks (with reminders), and quizzes — all alongside the chat.
- Attach files (PDF, DOCX, PPTX, XLSX, CSV, images), browser tabs, other chats, other notes, screenshots, and pasted spreadsheets.
It is designed to be **local-first**: all your data lives in your browser. There is no backend, no analytics, no developer-controlled server. Network requests go only to OpenRouter, the single LLM provider this extension uses.
## Screenshots
Chat — start a conversation about the current page
Page context — ask anything about what's on screen
Attachments — PDF, DOCX, PPTX, XLSX, CSV, images
Notes — build a personal knowledge base
Tasks — with due dates and reminders
Quizzes — practice from your notes
Image generation — inline via your selected model
Setup — paste your OpenRouter key once
Settings — model, theme, data management
## Highlights
A single browser-side agent that can read the current page, search the web and fetch URLs (under guardrails), run JavaScript inside a sandboxed Web Worker for precise computation, fill forms with a confirmation step, and generate Office documents (DOCX, PPTX, XLSX, PDF, CSV) and images. It carries a persistent **memory** the model can write to, a library of reusable **skills** you (or the model) can save, and your own **custom instructions** that ride on every chat. Notes, tasks, and quizzes live in the same panel so you can capture, schedule, and review knowledge without leaving the page. Everything is stored locally in IndexedDB; the only external network destination is OpenRouter, with your own API key.
## Features
### Chat with any page
- **Per-page chat** with the LLM, with full markdown, code, diagram, and math rendering.
- **Persistent chat history**: searchable, sortable, pinnable. Old chats can be auto-pruned on a threshold you set.
- **Suggested prompts** on every new chat (*Summarise this for me*, *Explain this to me*, *Help me with this task/question*).
- **Per-chat model override**: pick any OpenRouter model for an individual conversation without changing your default.
- **Favorites**: pin the chats you keep coming back to and switch to the Favs view to filter the list.
- **Quick Question**: a lightweight modal triggered from right-clicking a selection. Each Quick Question becomes its own short chat in a separate **Quick Q** log so it doesn't clutter your main history.
- **Copy raw chat** for export or sharing.
- **Reduce-to-float / Expand** panel modes: shrink the panel to a floating bubble, or expand it to take over the viewport.
### Right-click menu and content selector
- **Right-click menu** entries:
- On a text selection: *Explain selection*, *Summarize selection*, *Proofread selection*, *Quick Question about selection*, *Add selection to chat*.
- On an image: *Add image to chat*.
- **Content selector**: a hover-highlight mode you can toggle on. Click any page element to add its content to the chat. Right-clicking the highlight opens a small menu that lets you choose **Add simple HTML to chat** (cleaned, flattened representation) or **Add raw HTML to chat** (the literal markup).
- **Leave-warning**: if you try to navigate away while the agent is mid-task, the extension warns you before the page unloads.
### Attachments
Attach context to a chat via the **`+`** button in the input area:
| Source | Notes |
|---|---|
| **Image upload** | `.png`, `.jpg`, `.webp`, `.gif` |
| **File upload** | `.txt`, `.md`, `.json`, `.csv`, `.pdf`, `.docx`, `.xlsx`, `.xls`, `.ods`, `.pptx` (and other `text/*`) |
| **Take screenshot** | Snapshots the current tab and attaches the image inline |
| **Browser tab content** | Pick another open tab; its content gets flattened and attached |
| **Note** | Attach an existing note as context |
| **Chat summary** | Attach a summary of another chat |
| **Spreadsheet from clipboard** | Paste tabular data from your clipboard and treat it as a spreadsheet attachment |
Inside the **Notes** editor, you can also attach files to the note itself (the same file types as chat input).
### Notes
- A full note editor inside the panel with **Edit** mode and a separate **read view**.
- **Pop-out**: open any note in its own floating window so you can keep editing while you browse and chat in the main panel.
- **Version history**: changes are versioned so you can recover earlier drafts.
- **Favorites** and **search**.
- **File attachments** on each note.
- **Skill notes**: a note can be marked as a skill with a slug like `calculate-worksheet-discrepancy`. The agent can then load it on demand via the `skill` tool. See [Memory, Skills, and Custom Instructions](#memory-skills-and-custom-instructions).
### Tasks
- Title, optional description, **`dueAt`**, **`reminderAt`**.
- Filter by **All / Pending / Completed**.
- **Chrome notifications** when reminders fire.
- Optional **alert sound** played alongside the notification.
- **Configurable reminder lead time** (default minutes before due) in Settings.
- Reminder alarms are checked every minute by the service worker.
### Quiz
- Generate questions from any source material — pasted text, an attached note, or a chat — via the `generate_questions` tool.
- Supports **MCQ** (multiple choice), **FITB** (fill-in-the-blank), and a **mix** of the two.
- Optional **focus** parameter scopes generation to a specific topic.
- **Spaced practice**: each question has a `pausedUntil` field so you can mark it answered and have it disappear from the active pool for a chosen interval.
### Agent tools
The agent calls these tools mid-conversation. Grouped by purpose, with safeguards highlighted:
**Filesystem-style operations on the notes corpus**
- `read`, `write`, `edit` — read, create, and modify note content.
- `grep`, `ls` — discover notes by regex (content or title scope) or list them.
**Page interaction**
- `page_query` — query elements on the current page using selectors and return their content / state. Its `select_option` sub-operation also drives **custom dropdowns** (div/ARIA comboboxes like React Select, MUI, Headless UI): it opens the dropdown and clicks the matching option, handling portal-rendered lists, type-to-filter, and virtualized lists.
- `page_fill_form` — fill native form fields (inputs, textareas, single `