onUI
Annotate elements, draw regions, and ship cleaner UI faster.
onUI
Annotate Any UI for AI Agents
Lightweight browser extension (Chrome + Edge + Firefox) + local MCP bridge for annotation-first UI pair programming.
Powered by onLLM.dev.
[!NOTE]
onUIis now stable and production-ready.
Demo
Click the preview above to play the full demo video.
✨ Why onUI
- 🧩 No integration into app code
- 🎛️ Per-tab ON/OFF control (off by default)
- 🎯 In-page annotation dialog with intent + severity
- ✍️ Draw mode for region annotations (rectangle + ellipse)
- ⚙️ Compact toolbar with pop-out settings (output level + clear on copy)
- 👀 Visual markers and hover targeting
- 🧾 Export outputs in compact / standard / detailed / forensic formats
- 🛡️ Shadow DOM isolation for stable styling
- 🔌 Local MCP server + native bridge (no cloud backend required)
Install (Current)
Option A: Browser Extension Stores (recommended)
Chrome Web Store: https://chromewebstore.google.com/detail/onui/hllgijkdhegkpooopdhbfdjialkhlkan?authuser=0&hl=en-GB
Microsoft Edge Add-ons: https://microsoftedge.microsoft.com/addons/detail/onui/fkcmlckehjhcicihbnmhkadfhjhfnond
Option B: One-command installer from latest GitHub release
Use this if you want the latest version (store updates may lag) or for Firefox:
macOS/Linux:
curl -fsSL https://github.com/onllm-dev/onUI/releases/latest/download/install.sh | bash
macOS/Linux (Firefox artifact):
curl -fsSL https://github.com/onllm-dev/onUI/releases/latest/download/install.sh | bash -s -- --firefox
Windows (PowerShell):
irm https://github.com/onllm-dev/onUI/releases/latest/download/install.ps1 | iex
Windows (PowerShell, Firefox artifact):
iwr https://github.com/onllm-dev/onUI/releases/latest/download/install.ps1 -OutFile install.ps1; .\install.ps1 -Firefox
The installer handles extension install and can set up MCP in the same run.
When prompted with Set up local MCP bridge now? [y/N], enter y to enable MCP.
Then load it in Chrome or Edge:
- Open
chrome://extensionsoredge://extensions - Enable Developer mode
- Click Load unpacked
- Select
~/.onui/extensions/current(or%USERPROFILE%\.onui\extensions\currenton Windows)
Chromium browsers require this final manual step for unpacked extensions.
Firefox (manual from release artifact):
- Download
onui-firefox-add-ons-vX.Y.Z.zipfrom the GitHub release page. - Extract it to a local folder.
- Open
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on...
- Select the extracted
manifest.json.
🧠 Usage
- Open any supported website tab.
- Click the onUI extension icon.
- Enable
This Tab. - Use the on-page launcher to open the compact toolbar.
- Toggle Annotate mode for element targeting or Draw mode for region targeting.
- Hold
Shiftand click multiple elements to batch-select targets. - Release
Shiftto open a shared annotation dialog for selected targets. - Save once to create one annotation per selected element (or one region annotation in draw flow).
- Open toolbar Settings to choose output level and configure Clear on copy.
- Copy exported output from the toolbar.
🔌 Local MCP Setup
Recommended path: use the same installer command above and answer y when prompted.
If you want to force MCP setup in non-interactive mode:
macOS/Linux (--mcp):
curl -fsSL https://github.com/onllm-dev/onUI/releases/latest/download/install.sh | bash -s -- --mcp
Windows (PowerShell, set env var before running installer):
$env:ONUI_INSTALL_MCP=1; irm https://github.com/onllm-dev/onUI/releases/latest/download/install.ps1 | iex
MCP setup now uses a prebuilt release bundle (no local build required), but still needs Node 20+.
Manual MCP setup from source is still supported:
pnpm build:mcp
pnpm setup:mcp
pnpm doctor:mcp
Manual JSON config for custom MCP routers/clients
If your MCP router uses an object-style mcpServers map, use this canonical entry:
{
"mcpServers": {
"onui-local": {
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/onUI/packages/mcp-server/dist/bin/onui-cli.js",
"mcp"
]
}
}
}
Use an absolute path for onui-cli.js (relative paths are often rejected or resolved incorrectly by routers).
If your router uses a list/array schema instead of an object map, adapt the same command/args shape like this:
{
"servers": [
{
"name": "onui-local",
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/onUI/packages/mcp-server/dist/bin/onui-cli.js",
"mcp"
]
}
]
}
The list example above is a schema adaptation pattern, not a claim about any specific router's exact key names.
Setup/verification notes:
-
Run
pnpm build:mcpfirst sopackages/mcp-server/dist/bin/onui-cli.jsexists. -
Keep the server entry name as
onui-local. -
Run
pnpm doctor:mcpafter wiring config to confirm local setup health. -
Auto-registers
onui-localfor Claude Code and Codex when those CLIs are installed. -
Browser support in this release: Chrome stable + Edge stable + Firefox stable (unpacked).
-
@onui/mcp-serveris workspace-local (private: true), so run setup/doctor from this repo.
See:
docs/mcp-setup.mddocs/doctor.mddocs/release.md
Maintainer Build + Release
app.sh is the local release entrypoint (no CI/CD dependency).
Local validation + artifact packaging
./app.sh --build
This runs:
- Prereq checks (Node 20+, pnpm, git, zip)
- Build order:
@onui/core->@onui/extension->@onui/mcp-server - MCP tests
- MCP doctor smoke check (warnings allowed, errors fail)
- Artifact packaging into
artifacts/vX.Y.Z/
Artifacts:
onui-extension-unpacked-vX.Y.Z.ziponui-chrome-web-store-vX.Y.Z.zip(manifestkeystripped for CWS)onui-edge-add-ons-vX.Y.Z.zip(manifestkeystripped for Edge Add-ons)onui-firefox-add-ons-vX.Y.Z.ziponui-mcp-bundle-vX.Y.Z.zipinstall.shinstall.ps1checksums.txt
Local release + GitHub publish
./app.sh --release
Release gates:
- Clean git tree
- Current branch is
main gh auth statussucceeds
Release actions:
- Auto patch bump from root
package.json - Sync version across extension + MCP runtime strings
- Run full
--build - Commit + tag
vX.Y.Z - Push commit/tag
- Create GitHub release with packaged assets
🛠️ Development
pnpm install
pnpm check
pnpm test:coverage
🗂️ Repository Structure
packages/
core/ Shared annotation/report types + formatters
extension/ Browser extension runtime (background/content/popup)
mcp-server/ Local MCP server + native bridge setup/doctor tooling
⭐ Support
If onUI is useful to you, please star the repo: https://github.com/onllm-dev/onUI
It helps other users discover the product.
Star History
📄 License
GPL-3.0
相关服务器
Scout Monitoring MCP
赞助Put performance and error data directly in the hands of your AI assistant.
Alpha Vantage MCP Server
赞助Access financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
Remote MCP Server (Authless)
A simple, auth-less MCP server on Cloudflare Workers that provides the current time in the US Eastern timezone.
MCP Configuration Editor
Edit the mcp.json configuration file for tools like AWS Q Developer and Claude Desktop.
Allyson
AI-powered SVG animation generator that transforms static files into animated SVG components using the Allyson platform
Cloudflare Remote MCP Server
A remote MCP server example deployable on Cloudflare Workers without authentication.
SpecLock
AI constraint engine — persistent memory + active enforcement. Stops AI from breaking locked code. Semantic conflict detection, file-level guards, session continuity. 19 MCP tools.
Android Tester MCP
Automate Android devices using the Gbox SDK.
Abstract MCP Server
Caches large tool responses to files and returns compact resource links to save LLM context window space.
SeaLights
An MCP server for interacting with the SeaLights platform for quality intelligence.
Polarion MCP Servers
MCP server for integrating with Polarion Application Lifecycle Management (ALM).
Hashnode MCP Server
An MCP server for interacting with the Hashnode API.