Design System

AI makes pretty screens.
Coherent makes them a product.

Your agent builds the UI. Coherent gives it one design system to build from, keeps the docs in step with the code, and checks every edit in a real browser before it lands.

Next.js · Claude Code2,600+tests passingMIT · open source
app.orbit.io/revenue
Analytics / Revenue

Revenue

Search accounts⌘K
7D30D90D12MAll
Export
MRR
$482.1k
+8.2% vs Nov
Net revenue retention
118%
+3.1 pt
Active accounts
12,940
+412
ARPA
$37.3
+$1.9
Logo churn
1.9%
−0.4 pt
MRR growth
Expansion New
October 2026
Total$414k
Expansion$302k
New$112k
Revenue by planDecember
$482kMRR
Enterprise$260k54%
Growth$135k28%
Starter$58k12%
Usage$29k6%
Expansion
+$28k
Contraction
−$6k
Churned
−$9k
Logo retention by cohort% of accounts
M0M1M2M3M4M5M6M7M8M9
Jan100949189888787868685
Feb1009592908988888787
Mar10096939291909089
Apr100939088878686
May1009795949392
Jun10096949392
Jul100959392
Aug1009795
Top accountsView all 1,284
AccountRegionPlanMRR12 monthsHealth
Northwind LabsEUEnterprise$38.2kExpanding
Helio FreightUSEnterprise$31.9kHealthy
Quanta HealthUSGrowth$18.4kExpanding
Kestrel MapsEUGrowth$14.9kHealthy
FieldnoteAPACGrowth$12.7kAt risk
Lattice RoboticsEUGrowth$9.8kExpanding
Brightline StudioUSStarter$4.1kHealthy
Pinecrest Co-opUSStarter$2.6kHealthy
One app, eight pages, one system. · illustrationauto-advancing · hover to pause

Your agent can design a beautiful screen.

Ten screens later, nothing matches.

Coherent keeps every page on one system. And writes it down.

[01]The problem

Pretty, one screen at a time.

You ask for a dashboard, then billing, then settings. Each one looks good. Together they don't: three button styles, four grays, a card that is a little different on every page. Change the card and another page shifts. Nobody can say what the system is, because there isn't one.

Agent on its own
  • every page invents its own buttons, cards and grays
  • colors and sizes hardcoded, so a brand change misses half the app
  • change one card, and another page quietly shifts
  • no list of what exists, so nothing gets reused
  • no docs: the next person starts from scratch
Agent + Coherent
  • pages reuse one set of tokens and components; new hardcoded values are flagged
  • every component and token has an ID you can point at
  • an edit by ID is held to that component or token
  • a living design system with docs, generated from the code
  • every edit checked in a real browser; a failed one is never committed

Why not just ask Claude Code?

You still do. Coherent runs inside Claude Code and does not replace it. It adds the three things an agent does not keep on its own.

It sees the file, not the reach

An agent edits the file you point at. Coherent reads the import graph first and tells it which pages render that component, so the edit is scoped before a line changes.

It checks what it thinks of

Types and a build can pass while another page shifts. Coherent renders the pages the edit reaches and compares pages that should not change, pixel for pixel.

It keeps no system

Each session starts from the files. Coherent keeps IDs in the code and a design system generated from it, so the next session and the next person start from the same map.

[02]The design system

Your app ships with its design system.
Read from the code, updated with every edit.

Open /design-system in your app: every token, every component with its ID, how it is used in your code, the pages it is on, the tokens it uses and its history. Coherent rebuilds it inside every edit and checks it with the edit, so the docs keep up with the product.

Every edit, on the record

What the system holds at a glance, and each Coherent edit with its verdict, on a timeline.

localhost:3000/design-system
Every edit, on the record: a page of the generated design system

Screenshots from Orbit, the app in the hero, built with Claude and Coherent: these pages are its real /design-system, and every edit in its history was verified. This site is built the same way: open its own design system →

[03]Change by ID

Point at it.
Change exactly that.

Coherent labels every component in the code, like CID-008, and every token has a name. Say what you want in plain words, or name it: the edit is held to that component or token, and every page that uses it follows.

"CID-008: make the number bigger"

Only KpiCard's file may change. Coherent renders the 3 pages that use it and checks that a sample of other pages stays pixel-identical.

"--radius: a little rounder"

A token: every page follows. Coherent rebuilds the app and renders the pages it reaches; any it could not render are named in the verdict.

"Only on Billing, move the table up"

The table is shared. The Coherent agent is set up to ask first: a new component just for Billing, or change it everywhere?

"Add a weekly digest note to Notifications"

It becomes a component, Callout, with its own ID and preview, ready to reuse on the next page.

[04]Every edit proven

“Done” means checked.
In a real browser, before it lands.

Before an edit, Coherent knows from your code which pages it can affect. After it, it builds the app, renders those pages, and compares a sample of pages that should not change pixel by pixel. It flags hardcoded colors and sizes that should be tokens, new browser errors, your real name in mock data. A failed edit is not committed: the agent fixes it and checks again, or rolls it back.

coherent_verify_edit · final
request
"On Earnings only, make the KPI cards more prominent. Other KPI pages must not change."
scope variantwrite set kpi-card.tsx, creator/earnings/page.tsx
routeexpectedpixels changed
/creator/earningschange · must change17.9%
/advertiseridentical · also uses KpiCard0.00%
/advertiser/campaigns/[id]identical · also uses KpiCard0.00%
+ 2 more controlsidentical · unrelated pages0.00%
  • write set held
  • no new type errors
  • production build
  • no new browser errors
  • no identity leaks
verdict: verified

You don't run any of this. Your agent calls Coherent on every change and reports the verdict as it is. How agent mode works →

[05]Getting started

One command. Then just talk.

new app
$ npx @getcoherent/cli init my-app

Creates a Next.js app with create-next-app and shadcn, adds a welcome page, and installs the Coherent agent.

existing next.js app
$ cd my-next-app
$ npx @getcoherent/cli init

Adds the agent, its config and a dev dependency; your UI code is not changed. Then ask for the design system: components get IDs, and the pages are checked to render exactly as before.

Open the folder in Claude Code and approve the coherent MCP server once. The Coherent agent is already the default. Coherent needs no API key of its own: your agent does the designing, Coherent keeps it consistent and checks it. Requires Node.js 20+ and a Next.js App Router project.

Then just ask · a real session on Orbit, the app above
claude · ~/orbit
>Show me the design system
coherent
27 components: 13 shared, 14 base
37 tokens · 8 pages · every component has an ID
readyopen /design-system
>CID-007: make the chart title a bit bolder
coherent0s
MrrChart only · 1 file
/ and /revenue render it · changed, as expected
/cohorts, /customers/[id] · pixel-identical
verified
>CID-007: rename the paddings, nothing should look different
coherent0s
refactor · every page it reaches must stay the same
4 pages, light and dark · pixel-identical
verified
>CID-007: round legend dots
coherent0s
customers/page.tsx changed too
it is outside the edit
failednot committed · the agent rolled its edit back

Times are from a laptop and include a production build and the renders. The design system for an existing app is generated the same way, from its code.

[08]Questions

Honest answers.
No sales brochure.

Who is it for?

Founders and designers building a product with a coding agent who want it to look like one product, not a pile of good-looking screens, and teams that need to see what the agent changed and why.

Does Coherent design the UI?

No, your agent does, with full freedom of taste. Coherent gives it a system to design within (tokens, components with IDs, the rule to reuse before creating) and checks every change. We stopped generating UI ourselves after plain Claude Code beat our own pipeline on every matched screen of the same spec. The old generator still works with `coherent init --classic`, but it is deprecated.

What is in the design system?

A `/design-system` section inside your app: color, type, radius, shadow and spacing tokens (light and dark where defined, with contrast), your type scale, your icons, every UI primitive and product component with its ID, props, a real use from your code, the pages it is on, the tokens it uses and its edit history, a sitemap, docs and recommendations. Primitives get live previews automatically; for your own components the agent writes one. Coherent writes the section from your code and rebuilds it inside every edit.

Is /design-system public?

It is a route of your app, so it ships wherever your app ships. This site keeps its own public: open /design-system. To keep yours internal, protect the route like any other page, or remove it before you deploy; the agent regenerates it on the next edit.

Do the IDs lock me in?

No. An ID is a one-line comment above a component (`/** @coherent-id CID-008 */`). The app is plain Next.js, Tailwind and shadcn/ui; remove Coherent and everything keeps working.

Which agents does it work with?

Claude Code (CLI and desktop app), tested end to end: `init` sets up the agent, the MCP server and the write guard. Codex gets the MCP server and the same rules in AGENTS.md, without a write guard; it works, but is not yet tested end to end. Other MCP clients can call the same tools, untested.

Does it work with my existing project?

Yes, if it is a Next.js App Router app with Tailwind (v3 or v4). Run `npx @getcoherent/cli init` in it, then ask your agent to sync the design system: your components get IDs and `/design-system` appears, with the pages checked to render exactly as before (dynamic routes need an example URL). Recommendations then list what to clean up, such as hardcoded colors and sizes; this site went from 403 to 0, one verified edit at a time. Yarn Plug'n'Play is not supported yet.

Vue, Svelte or Angular?

Not yet. Coherent reads the component graph from TSX and Next.js routes, and generates the design system as Next pages, so each framework is real work. Vote for the one you need (GitHub issue #168 on skovtun/coherent-design-method); a framework-neutral verify-only mode is the likely first step.

What exactly does verification check?

That only the declared files changed; no new TypeScript errors (compared to before the edit); a production build; desktop and mobile renders of the affected routes (up to 12 per edit; any not rendered are named in the verdict), and an exact pixel comparison of control routes (±1 per channel for anti-aliasing); with a dark theme, desktop in the other theme too; no new console, page or hydration errors (also in Safari's engine when Playwright WebKit is installed); every new component has an ID; no real names or emails from git config in the UI. Hardcoded colors and sizes come back as warnings.

Can it prove a refactor changed nothing?

Yes. Splitting a page into components, replacing hardcoded values with tokens of the same value, renames: the agent marks the edit as a refactor, and every affected page must then render pixel for pixel as before. This site's home page was split into 13 components that way.

What happens when an edit fails?

It is not committed. The edit stays open: the agent fixes it and checks again, or rolls it back. A rollback restores only that edit's own files, byte for byte, and leaves every other file alone. You can ask "undo that" later too; if a newer edit touched the same files, Coherent refuses unless you confirm.

Does it slow the agent down?

A little, on purpose. A full check builds the app and renders the affected pages: about one to three minutes per edit on real apps, more on heavy pages. The quick check skips the build and the browser and takes seconds.

Do I need an API key?

Coherent needs none: it runs locally and only checks. You need access to your coding agent, such as a Claude Code plan.

Is it production-ready?

Agent mode is new in v0.27, the design system in v0.28–0.31. Verified on real apps, including this site, which runs on Coherent; the repository has 2,600+ passing tests; MIT licensed. Known gaps: Windows is untested; dynamic routes need an example URL in `.coherent/preview-params.json` to be rendered; pages that depend on live data or the current time need fixtures to compare cleanly; canvas and WebGL animations must hold still under prefers-reduced-motion, or renders differ from run to run.

Where do I get help?

GitHub issues for bugs and feature requests — response usually within 24h. The decision records, changelog and backlog are open in the repo, so you can see what shipped, what is planned, and why.
Question not here? Open an issue on GitHub — response usually within 24h.Open issue

Beautiful pages. One system.
Docs included.

$npx @getcoherent/cli init my-app
MIT · open source · Next.js + Claude Code