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
Related Servers
Scout Monitoring MCP
sponsorPut performance and error data directly in the hands of your AI assistant.
Alpha Vantage MCP Server
sponsorAccess financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
Metasploit MCP Server
An MCP server for integrating with the Metasploit Framework. Requires Metasploit Framework to be installed and msfrpcd to be running.
Helm Package README MCP Server
Search and retrieve detailed information, including READMEs, for Helm charts on Artifact Hub.
Gemini MCP Server
An MCP server for interacting with Google's Gemini models through the Gemini CLI.
Lisply-MCP
A Node.js middleware that allows AI agents to interact with Lisp-based systems using the Lisply protocol.
Auto API - YApi
A tool to retrieve API interface information from YApi, with authentication configurable via environment variables.
MCP-Inscription Server
Interact with Ordinals Inscriptions and display content from transactions.
plugged.in App
A web app for managing MCP servers, offering a unified interface to discover, configure, and utilize AI tools.
weibaohui/kom
Provides multi-cluster Kubernetes management and operations using MCP, It can be integrated as an SDK into your own project and includes nearly 50 built-in tools covering common DevOps and development scenarios. Supports both standard and CRD resources.
Whistle MCP Server
Manage local Whistle proxy servers through AI assistants, simplifying network debugging, API testing, and rule management.
SumUp
Build card present and online payments solutions with SumUp.