AI-powered UI feedback system. Annotate webpage elements and send feedback directly to OpenCode sessions via MCP sampling.
Inspired by benjitaylor/agentation — the original visual feedback tool for AI agents. See my proposal for a Chrome Extension version.
No setup required for basic usage!
The Chrome Extension works standalone — just load it and use Copy to Clipboard. Paste into ChatGPT, Claude, or any AI chat.
MCP setup is only needed for Send to AI (direct OpenCode integration).
| Feature | Extension Only | With MCP Setup |
|---|---|---|
| Annotate elements | ✅ | ✅ |
| Copy to Clipboard | ✅ | ✅ |
| Send to AI (direct) | ❌ | ✅ |
Extension-only install:
git clone https://github.com/GutMutCode/agentation.git
# Then: chrome://extensions/ → Developer mode → Load unpacked → packages/extension| Original | This Project | |
|---|---|---|
| Type | React component | Chrome Extension |
| Usage | npm install in your app |
Works on any website |
| Output | Copy to clipboard | Direct to AI via MCP |
| Integration | Manual paste to AI | Auto-sends to OpenCode session |
git clone https://github.com/GutMutCode/agentation.git && cd agentation && ./setup.shThen load Chrome extension: chrome://extensions/ → Developer mode → Load unpacked → packages/extension
Note: The
--recursiveflag is only needed if you want to build OpenCode from source (./setup.sh --source). By default,setup.shdownloads pre-built binaries.
┌─────────────────────────────────────────────────────────────────────────┐
│ │
│ ┌─────────────┐ WebSocket ┌─────────────┐ MCP Sampling │
│ │ Chrome │ ◄──────────────► │ Agentation │ ◄────────────────► │
│ │ Extension │ localhost:19989 │ MCP Server │ │
│ └─────────────┘ └─────────────┘ │
│ │ │ │
│ │ User annotations │ sampling/createMessage │
│ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Web Page │ │ OpenCode │ ──► LLM Session │
│ │ (target) │ │ (fork) │ │
│ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
- Node.js 20+
- pnpm or npm (pnpm recommended:
npm install -g pnpm) - Chrome browser
- bun - Only if building OpenCode from source (
curl -fsSL https://bun.sh/install | bash)
Note: Windows support is experimental. macOS and Linux are fully supported.
Package Manager: Examples use
pnpm, butnpmworks too. Replacepnpmwithnpmin commands.
./setup.sh # Download pre-built binary (default)
./setup.sh --source # Build OpenCode from source (requires bun)
./setup.sh --force # Re-download/rebuild even if already installedAgentation auto-updates on every startup. Both the agentation code and OpenCode binary are automatically checked and updated.
For existing users (installed before auto-update feature):
cd agentation
git pull
./setup.sh --force # Regenerate wrapper script with auto-updateManual update (if needed):
./update.sh # Check and update now
./update.sh --force # Force re-download even if up-to-dateClick to expand manual setup instructions
# For pre-built binary (recommended)
git clone https://github.com/GutMutCode/agentation.git
cd agentation
# For building from source (requires bun)
git clone --recursive https://github.com/GutMutCode/agentation.git
cd agentationpnpm install
pnpm buildOption A: Download pre-built binary
Download from OpenCode Fork Releases:
| Platform | File |
|---|---|
| macOS Apple Silicon | opencode-darwin-arm64.tar.gz |
| Linux x64 | opencode-linux-x64.tar.gz |
| Linux ARM64 | opencode-linux-arm64.tar.gz |
| Windows x64 | opencode-windows-x64.zip |
# Example for macOS Apple Silicon
tar -xzf opencode-darwin-arm64.tar.gz
mv opencode-darwin-arm64 external/opencode/packages/opencode/dist/
# Example for Windows (PowerShell)
Expand-Archive -Path opencode-windows-x64.zip -DestinationPath external/opencode/packages/opencode/dist/Note: macOS Intel users must build from source (Option B).
Option B: Build from source
cd external/opencode/packages/opencode && bun run build && cd ../../../..Create ~/.config/opencode/agentation.json:
{
"mcp": {
"agentation": {
"type": "local",
"command": ["node", "AGENTATION_PATH/packages/mcp-server/dist/cli.js"]
}
},
"sampling": {
"agentation": {
"mode": "auto",
"maxTokens": 4096
}
}
}Replace AGENTATION_PATH with your actual path:
pwd # Example output: /Users/yourname/agentationNote: This config is separate from
opencode.json. When runningagentation, it will be merged with your existing OpenCode settings (plugins, providers, etc.).
Sampling modes:
| Mode | Behavior |
|---|---|
auto |
Auto-approve all requests (default) |
prompt |
Ask for approval each time |
deny |
Block all requests |
Security Note: If you want manual approval for each AI request, change
"mode": "auto"to"mode": "prompt". This shows an Allow/Deny dialog before processing each feedback.
- Open
chrome://extensions/ - Enable Developer mode (top right toggle)
- Click Load unpacked
- Select
packages/extensionfolder
agentationNote: If
agentationis not found, add~/.local/binto your PATH (setup.sh shows instructions).
Important: Agentation must be running before using the extension.
- Start Agentation
- Open any webpage in Chrome
- Find Agentation toolbar (floating button, bottom-right corner)
- Enable annotation mode (click the toggle icon)
- Click any element to add feedback annotation
- Enter your feedback in the popup
- Click "AI에게 지시하기" (Send to AI)
- In OpenCode TUI: Approve the sampling request (Allow/Deny dialog)
- Continue conversation in the OpenCode session
When annotating elements, you can select design terms to communicate your design intent more precisely.
- Click on an element to open the annotation popup
- Click "Choose Design Style" button
- Browse categories: Layout, Interaction, Feedback, Visual, Animation, Concept
- Hover over a term to see a live preview demo
- Click to select (multiple selections allowed)
- Selected terms appear as chips below the button
- Send feedback — design terms are included automatically
| Category | Examples |
|---|---|
| Layout | GNB, Sticky Header, Hero Section, Card Grid, Masonry |
| Interaction | Hover Effect, Drag & Drop, Infinite Scroll, Pull to Refresh |
| Feedback | Toast, Skeleton Loading, Progress Bar, Empty State |
| Visual | Glassmorphism, Neumorphism, Gradient, Blur Effect |
| Animation | Fade, Slide, Bounce, Morph, Parallax |
| Concept | Dark Mode, Responsive, Accessibility, Micro-interaction |
When you select design terms, they appear in the AI prompt:
**Design References:**
- Glassmorphism - Frosted glass effect (blur + transparency)
- Skeleton Screen - Loading placeholder UI
**Feedback:**
Make this card look more modern- Check if OpenCode is running
- Check if agentation MCP server is loaded: Press
Ctrl+Min OpenCode TUI
- Verify
samplingconfig inopencode.json - Check mode is not
deny
- Refresh the webpage
- Check extension is enabled in
chrome://extensions/
Using Agentation on multiple browser tabs simultaneously is fully supported. Each tab maintains its own connection, and feedback is routed back to the correct tab.
Only one Agentation session can run at a time (port 19989 is shared). If you try to start a second instance, it will fail to bind to the port. Close the first session before starting another.
| Package | Description |
|---|---|
packages/extension |
Chrome extension for UI annotation |
packages/mcp-server |
MCP server with WebSocket + sampling |
packages/shared |
Shared types |
external/opencode |
OpenCode fork (submodule) |
./uninstall.sh # Remove binaries and build artifacts
./uninstall.sh --keep-project # Only remove wrapper scriptsNote: This removes
agentation.jsononly. Youropencode.jsonsettings are untouched.
Then manually remove Chrome extension: chrome://extensions/ → Find Agentation → Remove
For the best experience, use Agentation together with Playwriter — a browser automation MCP that controls your existing Chrome.
| Tool | Role |
|---|---|
| Agentation | Annotate UI elements → Send feedback to AI |
| Playwriter | AI controls browser → Test, verify, interact |
| Feature | Playwright MCP | Playwriter |
|---|---|---|
| Browser | Spawns new Chrome | Uses your Chrome |
| Login state | Fresh (logged out) | Already logged in |
| Extensions | None | Your existing ones |
| Bot detection | Always detected | Can bypass |
| Context usage | Screenshots (100KB+) | A11y snapshots (5-20KB) |
- Install Playwriter Chrome Extension
- Click extension icon on a tab (turns green when connected)
- Add to
~/.config/opencode/agentation.json:
{
"mcp": {
"agentation": {
"type": "local",
"command": ["node", "AGENTATION_PATH/packages/mcp-server/dist/cli.js"]
},
"playwriter": {
"type": "local",
"command": ["npx", "-y", "playwriter@latest"],
"environment": {
"PLAYWRITER_AUTO_ENABLE": "1"
}
}
},
"sampling": {
"agentation": {
"mode": "auto",
"maxTokens": 4096
}
}
}Note:
PLAYWRITER_AUTO_ENABLE=1auto-creates a tab when needed (no manual extension click required).
1. Browse website → spot UI issue
2. Use Agentation to annotate the problem
3. Click "Send to AI" → AI receives visual feedback
4. AI uses Playwriter to interact with the page and fix/verify
pnpm dev # Watch mode
pnpm typecheck # Type check- benjitaylor/agentation — Original concept and inspiration
- opencode-ai/opencode — Terminal-based AI coding assistant
MIT — See LICENSE
This project is an independent implementation inspired by benjitaylor/agentation. No code was copied from the original project.