A Chrome Extension (Manifest V3) that acts as a mini AI coding assistant on any webpage. Select text to get instant AI analysis — code explanations, bug detection, optimization, and more. Runs in a separate popup window for maximum stealth.
- Automatically detects text selection on any webpage
- Intelligent code vs. natural text detection
- 400ms debounce to prevent spam
- Minimum 5-character filter
- General text: Clear explanations, answers, and summaries
- Code detection: Automatic language identification
- Bug finding: Identifies errors and potential issues
- Optimization: Suggests performance improvements
- Best practices: Flags code standard violations
- Dark theme with glassmorphism design
- Runs in a separate popup window (not injected into the page)
- Scrollable message history
- Markdown rendering with code blocks
- Copy-to-clipboard for code snippets
- Loading animations
- Follow-up question input
- ZERO DOM injection — nothing is added to the webpage
- Chat runs in a separate Chrome window — invisible to tab-capture
- DOM inspection on the page will find nothing
- Auto-hides when tab loses focus or page goes fullscreen
- Auto-restores when you return to the tab
- Quick keyboard shortcuts for instant show/hide
| Shortcut | Action |
|---|---|
Ctrl+X |
Open chatbot (when no text selected) |
Ctrl+Z |
Close chatbot (when not in input field) |
Ctrl+Shift+Y |
Toggle chatbot |
Ctrl+Shift+H |
Quick hide chatbot |
- API keys stored only on the backend server
- No sensitive data in extension files
- Rate limiting on API requests
- Helmet security headers
chatbotchrome/
├── extension/ # Chrome Extension
│ ├── manifest.json # Manifest V3 configuration
│ ├── content.js # Text selection detection (zero UI injection)
│ ├── background.js # Popup window management + commands
│ ├── popup-chat.html # Stealth popup window chat UI
│ ├── popup.html # Extension toolbar popup
│ ├── popup.js # Popup logic
│ ├── popup.css # Popup styles
│ ├── styles.css # Legacy styles (unused in stealth mode)
│ └── icons/ # Extension icons
├── backend/ # Node.js Server
│ ├── server.js # Express API server (NVIDIA AI)
│ ├── package.json # Dependencies
│ ├── .env # Your API key (never commit this!)
│ ├── .env.example # Environment template
│ └── .gitignore
└── README.md
- Node.js 18+ installed → download here
- Google Chrome browser
- NVIDIA API key → get one here
Open the file backend/.env and replace the placeholder with your real key:
NVIDIA_API_KEY=nvapi-your-real-key-here
Open a terminal and run:
cd chatbotchrome/backend
npm install
npm startYou should see:
╔══════════════════════════════════════════════════╗
║ AI Smart Selection Assistant — Backend ║
║ Server running on http://localhost:3001 ║
║ API Key: ✅ Configured ║
╚══════════════════════════════════════════════════╝
Keep this terminal open! The server must be running.
- Open Chrome
- Type
chrome://extensions/in the address bar and press Enter - Turn ON "Developer mode" (toggle in the top-right corner)
- Click the "Load unpacked" button
- Navigate to and select the
chatbotchrome/extensionfolder - The extension icon will appear in your Chrome toolbar
- Go to any webpage (e.g., google.com, stackoverflow.com, github.com)
- Select any text with your mouse → a popup window opens with AI analysis
- Press
Ctrl+X→ opens the chatbot popup - Press
Ctrl+Z→ closes the chatbot popup - Type a question in the input box at the bottom of the popup
- Select text on any page → AI responds in the popup window
- Ctrl+X opens chat, Ctrl+Z closes it
- The popup is a separate window — drag it anywhere, even to a second monitor
- Tab switch → chatbot auto-hides, returns when you come back
- Fullscreen → chatbot auto-hides
- Click the extension icon in toolbar to check backend status
| Variable | Default | Description |
|---|---|---|
NVIDIA_API_KEY |
(required) | Your NVIDIA API key |
PORT |
3001 |
Server port |
MODEL |
openai/gpt-oss-20b |
AI model |
- Make sure the backend is running:
cd backend && npm start - Check that port 3001 is not used by another app
- Check
backend/.envhas a validNVIDIA_API_KEY - No extra spaces or quotes around the key
- Check if the extension is enabled in
chrome://extensions/ - Refresh the webpage (content script loads once per page)
- Check browser console (F12) for errors
Ctrl+Xonly opens chat when no text is selected (to preserve Cut)Ctrl+Zonly closes chat when not in an input field (to preserve Undo)- Check
chrome://extensions/shortcutsto verify shortcuts
- Click "Errors" button on the extension card in
chrome://extensions/ - Common fix: click the refresh icon on the extension card
MIT License — Free to use, modify, and distribute.


