Skip to content
/

onUI

onui · onllm-dev/onUI · ★ 62 · last commit 2026-04-28

Primitive shape 8 total
MCP tools 8
00

Summary

onUI — Summary

onUI is a browser extension (Chrome, Edge, Firefox) plus a local MCP server that enables annotation-first UI pair programming: developers can mark up any live web page with element annotations (intent + severity), region drawings (rectangle/ellipse), and export the structured context to AI coding agents without modifying a single line of app source code. The extension overlays visual markers on selected DOM elements; the local MCP server (onui-mcp) exposes 8 tools for agents to list, get, search, update, and delete annotations. The result: an agent can see "the login button has a broken focus ring — high severity" as structured JSON rather than trying to screenshot-parse UI state. Distributed as a browser extension (Chrome Web Store + Microsoft Edge Add-ons + Firefox) and a Node.js MCP server; GPL-3.0 license. With 62 stars and 3 contributors, it is a specialized niche tool with no parallel in any seed: no seed addresses browser UI annotation as an agent context source.

01

Overview

onUI — Overview

Origin

Personal project by Tushar S (onllm.dev). 3 contributors. 62 stars. GPL-3.0. Active, last commit 2026-04-28.

Philosophy

"No integration into app code"

"Annotate Any UI for AI Agents"

onUI targets a specific pain point: when developers need agents to work on UI issues, they have to describe what's wrong with a UI ("the button in the top-right is misaligned") or share screenshots. onUI provides a structured way to annotate live UI elements with machine-readable intent and severity, then expose those annotations to agents via MCP.

Key Design Choices

  • No app code changes required — the extension injects into any web page via Shadow DOM (preventing style pollution)
  • Per-tab ON/OFF control — disabled by default; explicitly enabled per tab
  • Shadow DOM isolation — stable styling regardless of page CSS
  • Multiple export formats — compact, standard, detailed, forensic
  • Local-only — no cloud backend required (MCP server runs locally)

Why MCP

The MCP server bridges the browser extension (which stores annotations locally in the browser) and the AI coding agent. The extension uses a native messaging host to communicate between browser and the local Node.js MCP server process.

02

Architecture

onUI — Architecture

Distribution

  • Chrome Web Store: chromewebstore.google.com/detail/onui/hllgijkdhegkpooopdhbfdjialkhlkan
  • Microsoft Edge Add-ons: microsoftedge.microsoft.com/addons/detail/onui/fkcmlckehjhcicihbnmhkadfhjhfnond
  • Firefox: Manual load (download + load unpacked from release artifact)
  • One-command installer: curl -fsSL .../install.sh | bash (handles extension + optional MCP setup)
  • Windows: irm .../install.ps1 | iex

Three-Package Monorepo (pnpm workspaces)

packages/
  core/         — @onui/core: shared annotation/report types + formatters
  extension/    — @onui/extension: browser extension runtime
    background/ — Service worker
    content/    — Content script (injected into pages)
    popup/      — Extension popup UI
  mcp-server/   — @onui/mcp-server: local MCP server + native bridge tooling
    src/
      bin/      — onui-cli.js entry point
      mcp/
        server.ts  — MCP server (stdio)
        tools/     — 8 MCP tools
      store/    — Annotation store (local JSON)
      native/   — Native messaging host
      setup/    — MCP auto-configuration
      doctor/   — Health check tooling

Architecture

Browser extension (content script + popup)
    ↓ annotates DOM elements + stores locally
    ↓ native messaging
Local MCP server (Node.js, onui-mcp binary)
    ↓ stdio MCP protocol
AI coding agent (Claude Code, Codex, etc.)

Required Runtime

  • Node.js >= 20 (MCP server)
  • pnpm (development)
  • Chrome stable / Edge stable / Firefox stable (extension)

Config for Claude Code / Codex

{
  "mcpServers": {
    "onui-local": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/onUI/packages/mcp-server/dist/bin/onui-cli.js", "mcp"]
    }
  }
}

MCP Server Version

@onui/mcp-server v2.2.3, using @modelcontextprotocol/sdk ^1.17.5

03

Components

onUI — Components

Browser Extension Features

Feature Description
Annotate mode Hold Shift + click to batch-select elements; annotation dialog with intent + severity
Draw mode Rectangle + ellipse region annotations on page
Visual markers Hover targeting with markers on annotated elements
Compact toolbar Pop-out settings: output level, clear-on-copy
Per-tab ON/OFF Disabled by default; explicitly enabled per tab
Shadow DOM Style isolation for stable rendering
Export formats compact / standard / detailed / forensic
Copy to clipboard Export structured annotations for pasting into agent

MCP Server Tools (8 tools)

Tool name Description
onui_list_pages List pages with annotations in local store (with limit + urlPrefix filter)
onui_get_annotations Get annotations for a specific page URL (with includeResolved option)
onui_get_report Generate annotation report in compact/standard/detailed/forensic format
onui_search_annotations Search annotations (details from tools/search-annotations.ts)
onui_delete_annotation Delete a single annotation
onui_update_annotation_metadata Update annotation metadata
onui_bulk_update_annotation_metadata Bulk update annotation metadata
onui_clear_page_annotations Clear all annotations for a page

CLI (onui-mcp binary)

Subcommand Description
mcp Start MCP server (stdio)
setup Auto-configure MCP for Claude Code + Codex
doctor Health check + diagnostics
native-host Start native messaging host

Store

Local annotation store at a path resolved by store/path.ts — JSON-based, local to the user's machine. No cloud sync.

Build + Release

app.sh is the local release entrypoint. Artifacts: 4 extension zips + 1 MCP bundle zip + install scripts + checksums.

05

Prompts

onUI — Prompts

onUI ships no agent prompt files. It is a browser extension + MCP server, not a methodology framework.

Excerpt 1: MCP Server Tool — onui_get_report (from server.ts)

{
  name: 'onui_get_report',
  description: 'Generate annotation report in compact/standard/detailed/forensic format.',
  inputSchema: {
    type: 'object',
    properties: {
      pageUrl: { type: 'string' },
      level: {
        type: 'string',
        enum: ['compact', 'standard', 'detailed', 'forensic'],
      },
    },
    required: ['pageUrl'],
  },
}

Prompting technique: MCP tool definition — structured JSON schema that defines what agents can ask for. The four verbosity levels (compact/standard/detailed/forensic) reflect a thought-out information hierarchy for agent consumption — forensic level presumably includes all metadata.

Excerpt 2: MCP Server Tool — onui_get_annotations

{
  name: 'onui_get_annotations',
  description: 'Get annotations for a specific page URL.',
  inputSchema: {
    type: 'object',
    properties: {
      pageUrl: { type: 'string' },
      includeResolved: { type: 'boolean' },
    },
    required: ['pageUrl'],
  },
}

Prompting technique: Stateful filter tool — includeResolved lets agents query only open issues vs all including fixed ones. This reflects a ticket-system mental model for UI issues.

Excerpt 3: README Usage Instructions (for annotators)

1. Open any supported website tab.
2. Click the onUI extension icon.
3. Enable This Tab.
4. Use the on-page launcher to open the compact toolbar.
5. Toggle Annotate mode for element targeting or Draw mode for region targeting.
6. Hold Shift and click multiple elements to batch-select targets.
7. Release Shift to open a shared annotation dialog for selected targets.
8. Save once to create one annotation per selected element.

Prompting technique: Step-numbered onboarding flow — clear sequential instructions for human annotators creating context for AI agents.

09

Uniqueness

onUI — Uniqueness

differs_from_seeds

onUI has no parallel in the 11 seeds or in the entire batch. No seed addresses browser UI annotation as an agent context mechanism. The closest seed by distribution archetype is ccmemory (Archetype 3: MCP-anchored toolserver), since both ship an MCP server that exposes domain-specific data to agents. But ccmemory stores code/chat memory in Neo4j while onUI stores UI annotations from a browser extension in a local JSON store. The "remote control surface" angle is indirect: onUI doesn't control agents — it augments the context agents have access to when working on UI issues.

Positioning

onUI occupies the "browser annotation → structured agent context" niche. It is not a remote control tool in the traditional sense but fits the batch theme because it creates a new input surface (browser extension annotations) that agents consume via MCP. The competitive comparison is screenshot-based UI description (ad-hoc, brittle) vs structured annotation export (precise, queryable, reproducible).

Observable Failure Modes

  1. GPL-3.0 license: viral copyleft may concern commercial projects
  2. 3-contributor project: limited maintenance bandwidth
  3. Native messaging complexity: browser ↔ Node.js native messaging is a security boundary that requires careful setup; doctor command exists to diagnose failures
  4. No cross-page aggregation in current tools: onui_list_pages returns pages but agents must query each separately
  5. Annotation quality depends on human discipline: if annotations are vague, agent context is vague
  6. Firefox support is "unpacked" only: no Firefox Add-ons Store listing

What Is Genuinely Novel

  • First framework in the corpus to use browser extension annotations as structured agent context
  • Four-level export verbosity (compact/standard/detailed/forensic) — a content-detail taxonomy for agent information
  • Shadow DOM injection — styling never breaks host page
  • setup + doctor CLI pattern for MCP configuration validation (best-practice for MCP server distribution)
  • Cross-browser (Chrome + Edge + Firefox) with platform-specific installer scripts (macOS/Linux bash + Windows PowerShell)
04

Workflow

onUI — Workflow

Setup Workflow

  1. Install browser extension from store or via installer script
  2. Set up MCP bridge: curl .../install.sh | bash → answer y to "Set up local MCP bridge now?"
  3. Add onui-local MCP server entry to Claude Code / Codex config
  4. Run onui-mcp doctor to verify setup

Annotation Workflow

  1. Open any web page in supported browser
  2. Click onUI extension icon → enable "This Tab"
  3. Toggle Annotate mode (element targeting) or Draw mode (region targeting)
  4. Hold Shift + click elements to batch-select
  5. Annotation dialog opens → enter intent + severity
  6. Save → visual markers appear on annotated elements
  7. Open toolbar Settings → choose output level
  8. Copy exported output → paste into agent chat OR use MCP tools for agent to query directly

Agent Workflow (via MCP)

Agent can:

  1. onui_list_pages — find pages with annotations
  2. onui_get_annotationsonui_get_report (forensic level) — get full structured context
  3. Work on UI fixes based on structured annotation context
  4. onui_clear_page_annotations when fixes are done

Phase → Artifact Map

Phase Artifact
Annotate Local annotation store (JSON)
Export (manual) Clipboard text in chosen format
MCP query JSON response to agent
Fix + verify Page changes (no onUI artifact)
06

Memory Context

onUI — Memory & Context

Memory Architecture

onUI's "memory" is the annotation store — a local JSON database of structured UI annotations organized by page URL.

Storage

  • Local annotation store (JSON files, path resolved by store/path.ts)
  • Per-page organization: each URL's annotations stored together
  • Includes: raw annotations, resolved/unresolved state, metadata
  • Local-only: no cloud sync, no remote database

What Is Stored

Each annotation contains:

  • Target element reference (DOM selector or region coordinates)
  • Intent (what the annotator wanted to communicate)
  • Severity level
  • Resolved status
  • Metadata (timestamps, batch details)

Context Injection to Agents

Via MCP: agents call onui_get_report to pull annotation context for a specific page URL. The four export levels (compact/standard/detailed/forensic) represent increasing levels of context detail.

This is a pull-based context injection: the agent requests context from the MCP server, which serves it from the local annotation store. Contrast with push-based systems (like IM.codes memory injection at session start).

Persistence

Session-independent persistence — annotations survive browser restarts, extension updates, and between agent sessions.

Cross-Session Handoff

Yes — annotations persist in the local store and are available to any agent via MCP regardless of which session created them.

07

Orchestration

onUI — Orchestration

Multi-Agent Support

No. onUI is a single-user browser extension + MCP server. Multiple agents can query the same annotation store via the local MCP server, but onUI does not coordinate agents.

Orchestration Pattern

None.

Execution Mode

Event-driven (extension responds to user interaction; MCP server responds to tool calls).

Isolation Mechanism

Not applicable (no agent execution).

Multi-Model Support

No. onUI is model-agnostic — any MCP-capable agent can use it.

Consensus Mechanism

None.

Prompt Chaining

No.

Cross-Browser Concern

Browser extension operates in Chrome/Edge/Firefox browser processes; MCP server runs as a separate Node.js process. Communication via native messaging host. This means the annotation data flows: browser → native messaging host → Node.js MCP server → agent.

08

Ui Cli Surface

onUI — UI & CLI Surface

CLI Binary

  • Name: onui-mcp
  • Type: Node.js MCP server (from bin.onui-mcp in package.json)
  • Subcommands: mcp, setup, doctor, native-host

Browser Extension UI

  • Type: Browser extension (Chrome/Edge/Firefox)
  • Features:
    • Extension popup (enable/disable per tab)
    • In-page compact toolbar (floating, collapsible)
    • Annotate mode overlay with hover targeting and visual markers
    • Draw mode with rectangle + ellipse region selection
    • Batch selection (Shift+click)
    • Annotation dialog (intent + severity)
    • Settings: output level selector, clear-on-copy toggle
    • Shadow DOM isolation (no CSS pollution)

MCP Integration

  • Auto-registers for Claude Code and Codex when those CLIs are installed (via onui-mcp setup)
  • onui-mcp doctor validates: Node binary, store path, native host registration, MCP config
  • Manual JSON config supported for custom MCP routers

Observability

  • No audit log
  • onui-mcp doctor provides health diagnostics
  • Export formats (compact/standard/detailed/forensic) offer varying levels of annotation detail

Cross-Tool Portability

High — any MCP-capable agent can use the onui-local MCP server. The browser extension is not tied to any specific agent.

Related frameworks

same archetype · same primary tool · same memory type

Taskmaster AI ★ 27k

Converts a PRD into a dependency-ordered JSON task graph that AI coding agents execute one task at a time, eliminating context…

ccmemory ★ 1

Accumulates decisions, corrections, and failed approaches from Claude Code sessions into a queryable Neo4j graph so each new…

Pimzino spec-workflow-mcp ★ 4.2k

MCP server providing spec-driven development workflow with dashboard-backed approval gates, implementation logging, and VSCode…

MCP Shrimp Task Manager ★ 2.1k

Convert natural language requests into structured AI development tasks with chain-of-thought enforcement, reflection gates, and…

Bernstein ★ 460

Govern parallel CLI coding agents with a deterministic Python scheduler, HMAC-chained audit trail, and compliance-ready signed…

LeanSpec ★ 252

Provides a unified spec CLI and MCP server over any existing spec backend (markdown, GitHub Issues, ADO), making spec-driven…