Artisign

Agents build screens. A design system keeps them consistent.

An open-source, local-first UX design tool for developers who build interfaces with coding agents: the agent designs through MCP, you review in the browser, and the state is plain files on your disk.

npm install artisign
Star on GitHub
Source on GitHub, licensed AGPL-3.0 · Node ≥ 20.19 · macOS and Linux

Screens drift. Every fix costs more than the last.

Agents write UI one screen at a time. Without a shared system, each screen re-derives its own greys, its own spacing, its own fourth button style — and consistency then depends on every future edit remembering every past decision, which no agent and no human does reliably.

Re-deriving is also the expensive way to do it: an agent that reads a design-system summary and composes refs needs far fewer tokens than one that re-derives visual decisions per screen.

Three moving parts, no hosted service you have to trust.

One Node process on 127.0.0.1. No database, no accounts, no hosting.

The agent designs through MCP

Claude Code or Claude Desktop connects to Artisign as an MCP server, with tools for reads, surgical writes, design-system changes, flows, comments and screenshots. The agent reads the design system first, then composes screens from refs.

An agent tool call writing a screen through the Artisign MCP server.

The state is plain files on your disk

Tokens, components, screens, flows and comments are human-readable, diffable files in your project folder. With autoCommit on, every write becomes one git commit named after the tool and its target — that is the audit log.

A screen file on disk: augmented HTML with token and component refs.

You watch it happen in the browser, and comment

The preview at 127.0.0.1:4711 renders the same source the agent writes and reloads on every file change. Click an element to anchor a comment; the agent picks it up with list_comments and answers with reply_comment.

The browser preview with a comment thread in the Context panel beside the screen it is about.

Five surfaces you work in.

Everything below is the running app, not a mock-up of it. What you review is rendered from the same files the agent writes.

Board

The Board shows every screen as a tile on one surface, with the click routes drawn between them — so a flow is something you see rather than something you reconstruct.

The Artisign Board tab filtered to three dialog screens, each rendered as a tile, with curved edges drawn between them for each click route.

Screen variants

Many screens are another screen in a different state, an overlay on top of it, or a step after it. Variants record that: the sidebar shows each family as a tree, the Board draws it as one cluster, and Compare sets a screen beside its variants and marks what differs.

Artisign's own design project in compare mode: the sidebar shows the Board view's variants as a tree, and two columns show part of the Board view beside part of its empty state, with the differing elements outlined and labelled added, changed or removed.

Flow mode

Flow mode makes the design clickable: click an element with a flow target and the preview jumps to the screen it points at, so you check a flow by walking it instead of reading a spec.

The artisign.dev home page in the Artisign preview with flow mode on: the Impressum and Datenschutz footer links are outlined as flow sources, ready to jump to the pages they link to.

Screen details

Elements lists a screen's nodes by the ids the agent addresses them with; Notes carries what a screenshot cannot — states, edge cases, content rules.

A screen in the Artisign preview with the Elements panel listing its nodes on the right and the Notes panel showing the screen's notes on the left.

Mockups

When the question is which direction rather than which detail, the agent writes one raw-HTML mockup per option and the preview shows them side by side. The winner is promoted into a real screen.

A mockup open in the Artisign preview: three variants of the same screen rendered as columns side by side for comparison, the third running past the edge.

Four things it does that a folder of HTML does not.

Consistency across screens

The design system is first-class: screens reference shared tokens and components instead of repeating raw values. When every button is $btn-primary and every gap is $spacing.md, screens cannot drift apart — and a rebrand is one set_tokens call.

<button id="btn-login" class="$btn-primary" data-variant="hover"
        style="padding-inline: $spacing.md" data-flow-target="dashboard">
  Log in
</button>

$name in class is a component ref, $name in a style value is a token ref.

Token efficiency

Built for small contexts: tiered reads, field selection and diff mode on writes. find_nodes answers a cross-screen question in one call, and inspect_node returns geometry as text instead of a screenshot.

Flows as data

Click routes are data, not documentation: a flow target is an attribute on the element that triggers it, so a CTA that goes nowhere is a design you can detect.

Render determinism

The preview renders the source, so preview equals output by construction: the browser preview, the design-system view and every screenshot the agent takes come out of the same render.

The tool designed its own interface.

Artisign's browser preview is designed in Artisign: the design/ folder in the repo is a real project in the format above, and the source the interface at 127.0.0.1:4711 was designed from. It is the honest answer to whether the tool is good enough to build with — it built this one.

Artisign's own design project open in Artisign, showing the tokens behind the preview interface.
Browse the design/ folder on GitHub

Two ways to start.

Node.js ≥ 20.19, on macOS or Linux.

Quick try — nothing to install

npx artisign start ./my-project

npx fetches Artisign on first use. Screenshots work on this path too: install Playwright anywhere and point ARTISIGN_PLAYWRIGHT_DIR at it in the shell that starts the daemon — the README has the lines.

Full setup — with screenshots

mkdir artisign && cd artisign
npm install artisign
npm install --no-save playwright && npx playwright install chromium
./node_modules/.bin/artisign start ./my-project

A local install with Playwright next to it, so get_screenshot and inspect_node work from the first call.

Then — connect Claude Code

claude mcp add --transport http artisign "http://127.0.0.1:4711/mcp?project=/absolute/path/to/my-project"

Open http://127.0.0.1:4711 to watch. The ?project= parameter scopes every tool call to that project, so one daemon can serve several coding projects. Claude Desktop connects over stdio instead — the README has that config.

Everything else — the tool reference, the agent guide, the design workflow tutorial — is in the repo.

What it does not do.

Every limit below is already in the README.

  • macOS and Linux only. Windows is not supported, so npm install refuses the platform rather than failing somewhere later.
  • Node.js ≥ 20.19.
  • Screenshots are optional and not bundled. get_screenshot and inspect_node need Playwright; without it they fail with the install command in the error message, and every other tool works.
  • No telemetry, no account, no update check. Artisign collects nothing. Two things reach the network, neither of them about you: import_html fetches whatever URL you hand it, and the first render fetches the font families named in your tokens — plus the Material Symbols Rounded icon font — from Google Fonts, then caches them locally.
  • AGPL-3.0. Your designs are yours: the licence covers Artisign's own source code, not what you create with it. Forks may use the code but need their own name.
  • Code contributions are not accepted right now. Bug reports, feature ideas and questions are welcome; vulnerabilities go through private reporting, never a public issue.