Skip to content

Repository files navigation

Obot Logo

Obot

AI assistant browser extension and backend built with Cloudflare Workers, Durable Objects, and React.

Extension Release v0.1.0 Chrome Extension Cloudflare Workers React 19 Cloudflare D1

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.


📦 Latest Extension Release

You can download pre-built, ready-to-install extension bundles directly from GitHub Releases:

  • Download the obot-extension-v*.zip asset from the latest release.
  • Unzip/extract the file on your computer.
  • Open chrome://extensions, enable Developer mode, and click Load unpacked.

✨ Key Features

  • 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/codemode to generate and run JavaScript that orchestrates MCP plugin actions.
  • OAuth 2.0: Uses Google Identity to authenticate users and persist configuration state across sessions.

🚀 Quick Start

This repository is set up as a monorepo containing both the extension and worker backend.

Prerequisites

  • Node.js (v18 or higher recommended)
  • Wrangler CLI (for Cloudflare deployment)
  • A Cloudflare account with D1 and KV enabled

1. Backend Setup (Worker)

Navigate to the worker/ directory and configure the environment:

cd worker
cp .dev.vars.example .dev.vars

Add your credentials (such as Google OAuth keys, AI provider secrets, etc.) to .dev.vars.

Run D1 database migrations to initialize the schema:

npm run migrate

Start the local worker dev server:

npm run dev

2. Frontend Setup (Extension)

For local development (runs the WXT dev server, loads the unpacked extension automatically, and connects to http://127.0.0.1:8787):

npm run dev:ext

To build the extension for production (default worker URL https://api.linkos.in; override with WXT_WORKER_URL in extension/.env):

npm run build:ext

The build output is generated into extension/.output/chrome-mv3/.

3. Load the Extension in Chrome

  1. Open Google Chrome and navigate to chrome://extensions/.
  2. Toggle the Developer mode switch in the top-right corner.
  3. Click Load unpacked in the top-left corner.
  4. Select the extension/.output/chrome-mv3/ directory generated by npm run build:ext.
  5. Click the Extensions puzzle icon in the toolbar, pin Obot, and click it to open the side panel.

💻 Workspace Command Reference

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

🛡️ Architecture & Tech Stack

Frontend Stack

  • React 19 & Lucide Icons for the side panel UI.
  • WXT for the extension scaffold and asset bundling.
  • agents SDK & @cloudflare/ai-chat to manage persistent WebSocket connections directly to Cloudflare Durable Objects.

Backend Stack

  • 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.

About

A Gemini-inspired Chrome extension with fully customizable models and plugins

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages