AI assistant browser extension and backend built with Cloudflare Workers, Durable Objects, and React.
Obot is a full-stack AI assistant consisting of a Chrome Extension Side Panel (frontend) and a Cloudflare Workers backend. It uses Cloudflare Durable Objects, Workers AI, and the Model Context Protocol (MCP) to provide real-time chat and tool-calling capabilities.
You can download pre-built, ready-to-install extension bundles directly from GitHub Releases:
- Download the
obot-extension-v*.zipasset from the latest release. - Unzip/extract the file on your computer.
- Open
chrome://extensions, enable Developer mode, and click Load unpacked.
- Chrome Extension: React-based panel that lets you chat, ask questions about your active tab, and summarize page content.
- Model Context Protocol (MCP): Integrates with external APIs (such as Exa Search, Mem0, Apify, and custom self-hosted MCP servers) using the MCP standard.
- Durable Objects Architecture: Manages stateful chat sessions as Durable Objects over persistent WebSocket connections.
- Cloudflare Workers AI: Uses open-source LLMs (Llama 3.2, Gemma 2B, Qwen, GLM, GPT-OSS) hosted on Cloudflare's platform.
- Dynamic Code Execution: Uses
@cloudflare/codemodeto generate and run JavaScript that orchestrates MCP plugin actions. - OAuth 2.0: Uses Google Identity to authenticate users and persist configuration state across sessions.
This repository is set up as a monorepo containing both the extension and worker backend.
- Node.js (v18 or higher recommended)
- Wrangler CLI (for Cloudflare deployment)
- A Cloudflare account with D1 and KV enabled
Navigate to the worker/ directory and configure the environment:
cd worker
cp .dev.vars.example .dev.varsAdd your credentials (such as Google OAuth keys, AI provider secrets, etc.) to .dev.vars.
Run D1 database migrations to initialize the schema:
npm run migrateStart the local worker dev server:
npm run devFor local development (runs the WXT dev server, loads the unpacked extension automatically, and connects to http://127.0.0.1:8787):
npm run dev:extTo build the extension for production (default worker URL https://api.linkos.in; override with WXT_WORKER_URL in extension/.env):
npm run build:extThe build output is generated into extension/.output/chrome-mv3/.
- Open Google Chrome and navigate to
chrome://extensions/. - Toggle the Developer mode switch in the top-right corner.
- Click Load unpacked in the top-left corner.
- Select the
extension/.output/chrome-mv3/directory generated bynpm run build:ext. - Click the Extensions puzzle icon in the toolbar, pin Obot, and click it to open the side panel.
You can run these scripts from the root directory to orchestrate the entire project:
| Command | Action |
|---|---|
npm run dev:worker |
Starts wrangler local development server for the backend (http://127.0.0.1:8787) |
npm run dev:ext |
Runs the WXT dev server for the Chrome extension side panel (auto-loads unpacked) |
npm run build:ext |
Builds the Chrome extension for production (https://api.linkos.in) |
npm run build:worker |
Deploys the worker backend directly to Cloudflare |
npm run migrate |
Runs the initial D1 schema migrations for the database |
- React 19 & Lucide Icons for the side panel UI.
- WXT for the extension scaffold and asset bundling.
agentsSDK &@cloudflare/ai-chatto manage persistent WebSocket connections directly to Cloudflare Durable Objects.
- Hono Framework for routing, OAuth flow, and API endpoints.
- Durable Objects (
ChatAgent) to host stateful, persistent chat threads and manage active MCP plugins per-user. - Workers AI & D1 (SQLite) for database operations, session storage, and LLM inference.