Run Ministral 3B entirely locally in your browser using WebGPU. Summarize pages, analyze text — all private, all local. No data leaves your device.
- 100% Local: The entire AI model runs in your browser. No API calls, no cloud processing.
- WebGPU Accelerated: Leverages your GPU for fast inference.
- Privacy First: Your data never leaves your device.
- Page Summarization: Instantly summarize any webpage with one click.
- Chrome 113+ or Edge with hardware acceleration enabled
- A GPU with WebGPU support (most modern GPUs work)
- ~3GB free disk space (for model cache)
- Clone and install dependencies:
cd meteor
npm install-
nvm skip this shi
-
Build the extension:
# Development mode with HMR
npm run dev
# Production build
npm run build-
Load in Chrome:
- Open
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked"
- Select the
dist/folder (after building) or project root (for dev)
- Open
-
Open the Side Panel:
- Click the Meteor extension icon
- Wait for the model to download (~2.5GB, happens once)
- Start summarizing!
┌─────────────────────────────────────────────────────────┐
│ SIDE PANEL (Brain) │
│ ┌─────────────────────────────────────────────────────┐│
│ │ React App + Transformers.js + WebGPU Runtime ││
│ │ • Holds model weights in memory ││
│ │ • Processes all AI inference ││
│ │ • Manages UI state ││
│ └─────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────┘
▲
│ Messages
▼
┌─────────────────────────────────────────────────────────┐
│ SERVICE WORKER (Nervous System) │
│ • Lightweight event handler │
│ • Opens Side Panel on icon click │
│ • NO AI processing here │
└─────────────────────────────────────────────────────────┘
▲
│ Messages
▼
┌─────────────────────────────────────────────────────────┐
│ CONTENT SCRIPT (Eyes) │
│ • Injects into web pages │
│ • Scrapes and sanitizes DOM │
│ • Returns clean text to Side Panel │
└─────────────────────────────────────────────────────────┘
- User clicks "Summarize This Page"
- Side Panel → Content Script:
METEOR_READ_PAGE - Content Script scrapes DOM, removes noise, truncates to 15K chars
- Content Script → Side Panel: Page content
- Side Panel wraps content in prompt template
- WebGPU model generates response, streams tokens to UI
| Component | Technology |
|---|---|
| Framework | React 18 + TypeScript |
| Build | Vite + CRXJS |
| AI Engine | Transformers.js 3.x |
| Inference | WebGPU + ONNX Runtime |
| Styling | Tailwind CSS |
| Model | Ministral 3B (Q4 Quantized) |
meteor/
├── src/
│ ├── background/ # Service worker (lightweight)
│ │ └── index.ts
│ ├── content/ # Content script (page scraper)
│ │ └── index.ts
│ ├── sidepanel/ # React app (AI brain)
│ │ ├── App.tsx
│ │ ├── main.tsx
│ │ ├── index.html
│ │ └── index.css
│ ├── hooks/
│ │ └── useMeteor.ts # AI model lifecycle hook
│ ├── components/
│ │ ├── BootstrapView.tsx
│ │ ├── ChatView.tsx
│ │ └── MessageBubble.tsx
│ └── types/
│ └── index.ts
├── icons/ # Extension icons
├── manifest.json # Chrome extension manifest
├── vite.config.ts
├── tailwind.config.js
└── package.json
// Quantization for optimal performance/quality balance
dtype: {
embed_tokens: 'fp16', // Token embeddings at half precision
vision_encoder: 'q4', // Vision (unused in text-only mode)
decoder_model_merged: 'q4f16' // Main model at 4-bit with fp16 compute
}const MAX_CONTENT_LENGTH = 15000; // Prevents WebGPU OOM
const NOISY_TAGS = ['script', 'style', 'nav', 'footer', 'svg', ...];- Ensure you're using Chrome 113+ or Edge
- Go to
chrome://settings/→ System → Enable "Use hardware acceleration" - Restart the browser
- Close other tabs to free GPU memory
- The model needs ~3GB VRAM
- Try restarting Chrome
- Cannot read
chrome://orchrome-extension://pages - Some sites block content scripts (banking, etc.)
- No network requests: After initial model download, zero network activity
- No telemetry: No analytics, no tracking
- Local storage only: Model cached in browser's IndexedDB
- Open source: Audit the code yourself
MIT
- Transformers.js by Hugging Face
- Mistral AI for Ministral 3B
- CRXJS for excellent Vite integration
