Skip to content
BenXshaPublic

About

Local-first design-canvas agent harness — one MCP contract that renders AI-generated design into MasterGo / Penpot, and reads canvas design back to code.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

uxship

Ship design, not screenshots.

A local-first design-canvas agent harness. One MCP contract that renders AI-generated design into a design tool's canvas as native, editable layers — and reads canvas design back out to code.

Status: pre-release. The server, both host adapters and mcp-response-budget are complete and tested (1 683 tests green in CI on Node 20/22/24). Nothing is published to npm yet — build from source for now. Documentation is still being filled in.


What it is

uxship connects an AI agent to a design tool's canvas over the Model Context Protocol. The agent writes into the canvas as real layers — not an image, not an embedded frame — and reads the canvas back out as structured data.

Two directions, one tool surface:

Direction What happens
Design → canvas The agent authors HTML + Tailwind. uxship preprocesses it (icons, charts, components), renders it through a real browser engine to measure actual layout, then writes the measured result into the canvas as native layers.
Canvas → code A canvas selection exports to a structured DSL, then to HTML + Tailwind, design tokens (CSS variables / DTCG) and SVG assets.

Quick start (from source)

git clone https://github.com/BenXsha/uxship.git && cd uxship
npm run install:server && npm run install:plugin && npm run install:penpot
npm run build:server

# run the server (HTTP/SSE on 127.0.0.1:15490, plugin hub on 127.0.0.1:15489)
node mcp-server/dist/index.js --http

Then point your MCP client at http://127.0.0.1:15490/sse, open the plugin for your design tool (plugin-mastergo/ or plugin-penpot/), and click Connect in its panel. The connection is deliberately user-initiated: when an agent may write to your document is your call, and the server never attaches itself.

npm run server:status     # is it up, is a plugin connected
npm run server:stop

Why it exists

One contract, any canvas The same tool surface drives MasterGo and Penpot today; a third canvas is an adapter, not a fork — docs/adapter-spec.md
Local-first No account, no telemetry, no upload path. Rendering and preprocessing run on your machine — docs/why-local-first.md
Built for agent budgets 67 tools → 20 by default (−68%), and results truncated by shape — never mid-JSON — with the loss reported. Measured, reproducible: docs/benchmarks.md
Never silently degrades When a host cannot represent something it is reported (skipped, available: false, hostType), not dropped

Supported canvases

MasterGo and Penpot, through one contract. They are not equivalent — fonts, single-side strokes, gradients, grids, token models and even native component operations differ. That list, and which degradations are normal, is in docs/host-differences.md.

Documentation

docs/architecture.md Layers, transports, the render pipeline, the adapter seam
docs/adapter-spec.md The 54-member host port, capability probing, adding a canvas
docs/host-differences.md Every known MasterGo/Penpot difference, with evidence
docs/dsl-spec.md The intermediate representation
docs/mcp-tools.md Tool surface, profiles, progressive disclosure
docs/benchmarks.md Context cost, method, and what is not measured
docs/comparison.md Honest positioning, including where this is behind
docs/why-local-first.md What local-first buys, and what it costs
packages/response-budget/README.md The standalone truncation library
skills/design/ Agent-facing design rules the pipeline expects

Repository layout

mcp-server/                 MCP server: tools, render pipeline, transports, session routing
plugin-mastergo/            MasterGo host adapter (plugin + UI)
plugin-penpot/              Penpot host adapter (plugin + UI)
packages/response-budget/   Standalone output-truncation library (ESM + CJS)
skills/design/              Design rules and templates consumed by agents
docs/                       Architecture and reference documentation
scripts/                    Gates, packaging, benchmarks, dev tooling

Development

Node 20, 22 or 24. The full gate — the same one CI runs:

(cd mcp-server     && npx tsc --noEmit && npm test)     # 699 tests
(cd plugin-mastergo && yarn typecheck && yarn test)     # 374 tests
(cd plugin-penpot   && yarn typecheck && yarn test)     # 592 tests
(cd packages/response-budget && npm test)               #  18 tests
npm run build:server && npm run build:plugin && npm run build:penpot
npm run license:check && npm run docs:check && npm run skill:check

See CONTRIBUTING.md for the ground rules and the reasoning behind the gates.

Status and roadmap

Done: the MCP contract, both host adapters, the render pipeline, output budgeting, the standalone truncation package, CI on three Node versions, licence/secret/docs gates.

Not yet done, and not pretended otherwise:

  • First npm release (names are free; the publishing identity is not yet settled)
  • English documentation polish and zh-CN mirrors
  • Reproducible render-fidelity benchmarks (see docs/benchmarks.md)
  • Example projects and end-to-end demos
  • More host adapters (docs/adapter-spec.md exists so this can come from the community)

Security

Local-first by default, but the server can create and delete layers in your documents. Read SECURITY.md before exposing it beyond loopback. Report vulnerabilities through private advisories, not public issues.

Disclaimer

Not affiliated with, endorsed by, or sponsored by any design tool vendor. MasterGo, Penpot, Figma and all other product names, logos and brands are property of their respective owners.

License

Apache-2.0 — see THIRD-PARTY-NOTICES.md for redistributed third-party assets.


中文简介(完整版:README.zh-CN.md)

uxship 是一个本地优先的设计画布 agent harness:一套 MCP 工具契约,把 AI 生成的设计写进设计工具的画布(原生可编辑图层,不是截图),也能把画布上的设计读回代码。

  • 一套契约,多个画布:同一套工具面同时驱动 MasterGo 与 Penpot;新增宿主是适配器,不是 fork。
  • 本地优先:无账号、无遥测、无上传链路,渲染与预处理都在本机完成。
  • 为 agent 预算而设计:默认工具面 67 → 20(−68%),结果按结构截断(绝不切坏 JSON)并如实上报损失。
  • 不静默降级:宿主表达不了的能力会被显式上报,而不是悄悄丢掉。

当前为预发布状态:代码与测试已就绪(CI 三个 Node 版本共 1683 例全绿),但尚未发布到 npm,暂时从源码构建。完整中文说明见 README.zh-CN.md,架构与参考文档见 docs/。

About

Local-first design-canvas agent harness — one MCP contract that renders AI-generated design into MasterGo / Penpot, and reads canvas design back to code.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages