Generate a design system from a brief, then verify your AI stays on it.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
Not another design system β the machine that makes yours. Dial in your design
language visually, export it framework-neutral, and keep it up to date behind one
link β then hand it to your coding agent and uicockpit check makes sure it stays
on it. --k-* tokens + 100+ accessible components (real recipes with state contracts)
with a built-in WCAG audit of your kit, delivered as a hosted <link>, a download,
or natively inside your agent (CLI + MCP).
Free Β· no account Β· paste it anywhere.
Try it β uicockpit.com Β· Use a kit β kit.uicockpit.com Β· Docs

If you've ever vibe-coded an app, you know the feeling. You're moving fast, the AI is reaching for the same components for the twentieth time, and somewhere along the way you lose the thread. The radii drift. The greys don't quite agree. There's always one button that's justβ¦ a little off. It all works β but none of it feels like yours.
I built UIcockpit to get out of that: a calm place to make the design decisions once, hand them to your agent as a real contract, and have a one-command check that catches the drift before it ships. No spreadsheet of tokens, no hand-tuning forty little things β a coherent system that survives contact with an AI that builds faster than you can review.
Framework-neutral (plain HTML, Vue, Svelte, React β whatever you're in), free, no account, no lock-in. β Alexander
A design system hands you someone else's taste, themed β a generator ships your own. Tailwind is how you style. shadcn is what you assemble. UIcockpit is the design language that makes it yours β and the only layer that keeps it coherent as your app (and your AI) grow. It sits above them, framework-neutral.
| You already have⦠| which is⦠| so UIcockpit is⦠|
|---|---|---|
| Tailwind / CSS | how you write styles | the decisions those styles encode β the layer above |
| shadcn / Radix | the components (+ behaviour) | the design language that makes any components look like one product |
| Figma / design tokens | the design source (authoring) | the same language, but executable, framework-neutral, and self-enforcing |
The loop it lives in: Define your language β your AI applies it β
uicockpit check verifies it. Not a one-off asset β a layer in the build loop.
β The thinking behind this: VISION.md.
Open uicockpit.com, pick one of 7 named styles grounded in the best modern apps, then tweak with 19 clear controls:
| Style | Grounded in | Feel |
|---|---|---|
| Clean | shadcn / Linear | the balanced default |
| Precision | Linear / Figma | crisp, flat, cool |
| Minimal | Vercel | mono headings, stark |
| Refined | Stripe | ultralight headlines |
| Calm | Notion | system font, seamless |
| Soft | β | rounded and warm |
| Editorial | β | serif headings |
Your brand colour rides through every style. And the engine keeps it coherent: pick any combination of the controls and it straightens the corners that would otherwise look wrong β a dense layout never gets giant headings, a card always stays visible against the page, the selected tab is always legible. Make whatever you want; we straighten it.
Give your coding agent the system and the guardrail, no copy-paste:
Or run it as an MCP server (Claude Code, Cursor, Windsurf, Claude Desktop):
Four tools: create_kit (generate a kit from a brief β brand, radius, density) Β·
install_kit (pull it into the project) Β· get_design_context (the kit's
grammar β tokens + component anatomy + composition rules + intent routing) Β·
check_conformance (verify the output). The agent can spin up your language, build on
it, and check itself.
β uicockpit CLI Β· uicockpit-mcp
<link> β the whole kit (tokens + component recipes with real
hover/focus/disabled states) served from the edge:
tokens.css, tokens.json, a Tailwind v4 @theme
block, or shadcn/ui globals.css. No runtime, no dependency.tokens.css and over the CDN.tokens.css, tokens.json, a Tailwind v4 @theme
block, shadcn/ui globals.css, plus the machine-readable contract.json, agent rules,
and a full design.md β with a live preview on a real app and a full component gallery:
change one control, watch the whole thing move.One configuration β one single source β every surface:
The CDN runs the exact same function the download uses, so the hosted link is
byte-identical to the file you'd export, and the contract check reads always agrees with
the CSS. The demo app renders from the kit alone β if the kit ever breaks, the app breaks
too, and we catch it.
A catalog of components is always finite; the agent building your app isn't. Sooner or later it needs a component you never drew β and it guesses, and the guess drifts off your language.
So the real product isn't 100 components, or 200. It's the grammar underneath them β
the parts and composition rules every component is quietly made of β handed to the agent
through get_design_context, with uicockpit check making sure that whatever it
assembles, even a screen nobody drew, is built only from your language.
A finite kit can, at best, be "complete." A grammar plus a verifier is generative β it covers the screens nobody drew. That's the north star, and the spine is already live: configure β CDN β CLI/MCP β check.
The mechanism has a name: the Role Canvas. A small, closed set of roles β control Β·
selectable Β· surface Β· tone-bearer Β· text-slot Β· overlay β each guarantees one perceptual
treatment (a height, a selected edge, a legible tint, a truncationβ¦). Any element that tags
a role β through a thin data-role, or simply the ARIA state that already names it
(aria-selected, role="menu") β inherits that treatment for free, so even a component
we never built comes out coherent. It's a set of zero-specificity CSS floors, enforced in
the build, and you can flip it on and off live in the app's loupe.
β The full thinking lives in VISION.md.
Vite + React 19 + TypeScript (strict). The CLI (cli/) and MCP server (mcp/) are
separate zero-dependency packages.
Come on in. A new named style, a missing component recipe, an export adapter (Style
Dictionary, Figma variables), a framework adapter, an accessibility fix β all welcome.
Start with CONTRIBUTING.md and the
Code of Conduct, then open an issue or a discussion.
See docs/roadmap.md for what's shipped, in progress, and next β the
gaps you hit while using it are the best input we get.
If UIcockpit is useful to you, a β genuinely makes my day and helps other makers find it.
Made with care by Alexander Kaan at Pageminds Β· MIT, free forever.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/uicockpit)<a href="https://allmcps.com/mcp/uicockpit"><img src="https://allmcps.com/api/badge/uicockpit?style=directory" alt="UIcockpit on AllMCPs" /></a>