[Tavero]
Tavero
Keep the UI your agent writes consistent.
taveroui.com · Docs · Demo
[CI]
[MIT license]
[Node 20 or later]
[React 19]
Tavero scans your running React app, finds drift in buttons, cards, colors and spacing, and gives your coding agent each fix with the file, the line and the token to use. It runs on your machine, as a CLI, an MCP server for Claude Code, Cursor, Codex and other agents, and a local panel where you decide what is intended.
[A Tavero finding on the Acme demo: 7 text button styles, each with its crop, component, file and line, and the canonical Button chosen in the panel]
A real finding from the Acme demo in this repository (demo/acme): six pages scanned at three widths.
How it works
- Scan. Tavero opens your dev server in Chromium at mobile, tablet and desktop widths, with your login if the app needs one. If the project styles a dark theme, it adds one dark pass.
- Attribute. Every visible element is mapped to the React component and the source line that rendered it, from React's own dev-mode data. Nothing is added to your project.
- Find. Four rules compare what renders with your tokens and with itself: buttons, cards, colors and scales.
- Fix. Each finding is a task: what, where (file:line), the current value, and the token or component expected. Your agent fixes it, rescans one route in seconds, and checks that the finding is resolved.
Quick start
Node 20 or later, a Vite or Next app on React 19 that runs in dev mode.
Tavero writes only to <project>/.tavero/. Every read command takes --json, and text output is capped at 20 rows so it fits an agent's context.
Use it from your agent
tavero mcp is an MCP server on stdio with nine tools. Print the config for your client and paste it where it says:
Then paste docs/AGENTS.snippet.md into AGENTS.md, CLAUDE.md or GEMINI.md, so the agent reads the design context before writing UI. SKILL.md is an Agent Skill with the full workflow.
A recorded run of Claude Code on the Acme demo, with no shell, 29 seconds:
Rules
Decide what is intended
[The Tavero panel: a list of findings and, for the button styles finding, every variant with its crop at three widths and a choice of the canonical one]
A local panel for the person behind the agent. Go through the findings with the keyboard and decide. The agent sees each decision on its next call, without a rescan.
Decisions are stored in .tavero/decisions.json, keyed by stable finding ids. Commit it to share them with your team and its agents. npx tavero ui --export ./panel writes a static, read-only copy of the panel.
Requirements and limits
- React 19 in dev mode, on Vite or Next (App Router, Turbopack). React 18 keeps different debug data and is not supported yet.
- Tokens are read from CSS custom properties and Tailwind 3 or 4 themes.
- Card detection is heuristic, so the
cards rule is marked preliminary.
- Tavero runs locally and sends nothing anywhere. There is no account and no telemetry.
Development
The website lives in site/ (Next.js static export). npm run site:install && npm run site:dev runs it; npm run site:audit runs its gates: Tavero on the site itself with 0 high and medium findings, Lighthouse, axe and three widths.
See CONTRIBUTING.md before opening a pull request.
License
MIT