Co-create software with AI, visually.

A free, open source canvas built from your repo files. Stay in flow, from idea to pixel-perfect code.

Get started
  • Claude Code
  • Cursor
  • opencode
  • Codex
  • T3 Code
  • Conductor
  • Antigravity
  • Factory
Works with any IDE and coding agent
spec/returnsdoc

Returns, v2

A customer can open a return within 30 days. Refunds go back to the original card once the parcel is scanned.

StateOwner
requestedcustomer
in transitcarrier
refundedsystem

POST /returns/:id

checkout/cart1280

Your bag

Heavy cotton tee
Qty 2
$56.00
Wool watch cap
Qty 1
$38.00
ShippingFree
Total$94.00
Checkout
checkout/pay1280

Payment

Card number
4242 4242 4242 4242
Expiry
04 / 28
CVC
•••
Pay $94.00
checkout/done390

Order confirmed

Receipt sent to sam@example.com. Arrives Thursday.

#A-10437

1Mobile2Tablet3Laptop4Monitor

Marver turns your codebase into a visual canvas.

So you and your agent can ideate, spec, sketch, design and prototype.

Together, in one place.

The work

Every stage, on the same canvas.

Start wherever the work really starts. Nothing here is required, and nothing here is a separate tool.

Ideate

Collect the taste before the pixels.

Drop in the screenshots and references you like, and your agent arranges them into a board you can argue with.

refs/quiet-retaildoc

Direction: quiet retail

Aa

Tight display, generous body, no italics

Editorial spacing, photography on off-white

refs/checkoutdoc

Direction: quiet retail

Aa

Tight display, generous body, no italics

Editorial spacing, photography on off-white

flow/returnsdoc
Spec

Boil your intent down into a spec.

It renders on the canvas as diagram-rich markdown, or as a full HTML artifact when the spec deserves one.

spec/returnsdoc

Returns, v2

A customer can open a return within 30 days. Refunds go back to the original card once the parcel is scanned.

StateOwner
requestedcustomer
in transitcarrier
refundedsystem

POST /returns/:id

flow/returnsdoc
Sketch

Nail the layout and the copy.

Plain low-fidelity frames keep the argument on what matters, then stitch into a flow you can walk.

a-single-column390

Your bag

Heavy cotton tee
Qty 2
$56.00
Wool watch cap
Qty 1
$38.00
ShippingFree
Total$94.00
Checkout
b-summary-rail390

Your bag

Heavy cotton tee
Qty 2
$56.00
Wool watch cap
Qty 1
$38.00

Summary

Subtotal$94.00
ShippingFree
Tax$7.52
Total$101.52
Checkout
checkout/done390

Order confirmed

Receipt sent to sam@example.com. Arrives Thursday.

#A-10437

Design

Then design it like you mean it.

High fidelity from your own components, icons and theme. Not a picture of the screen. The screen.

checkout/cart1280

Your bag

Heavy cotton tee
Qty 2
$56.00
Wool watch cap
Qty 1
$38.00
ShippingFree
Total$94.00
Checkout
checkout/pay390

Payment

Card number
4242 4242 4242 4242
Expiry
04 / 28
CVC
•••
Pay $94.00

The canvas

The desk you and your agent share.

This is where the two of you point at things, disagree, change your mind, and agree on what to build next.

Devices

Every width, without rebuilding anything.

Select the frames and pick a device. They resize, the board re-tidies itself, and because these are real viewports your real breakpoints fire.

Mobile390 × 8441
Tablet768 × 10242
Laptop1280 × 8003
checkout/cart1280

Your bag

Heavy cotton tee
Qty 2
$56.00
Wool watch cap
Qty 1
$38.00
ShippingFree
Total$94.00
Checkout
Appearance

See your app in every outfit.

One key flips the whole board between light and dark, or only the frames you selected. Contrast that breaks in one appearance has nowhere left to hide. Try it here: it flips this page too.

Lightd
Darkd
checkout/pay1280 · light

Payment

Card number
4242 4242 4242 4242
Expiry
04 / 28
CVC
•••
Pay $94.00
Interact

Double-click, and it comes alive.

It is real code, so it behaves like real software. Fields take focus, menus open, scroll areas scroll, links carry you to the next frame.

Click the frame
MarverPlay mode

Experience the thing you are building.

You are looking at play mode. Change the device, flip the appearance, walk to the next screen. This is what you hand someone before the product exists.

Every screen here is a file in the repo
Mobile390 × 844
Tablet768 × 1024
Laptop1280 × 800
Fill windowFull width
Light
Dark
Previous screen
1 / 2
Next screen

Collaborate

One command, and it has a URL.

Publish to your own infrastructure behind secure passwords. Invite colleagues to click through the real thing and pin comments on it.

On your infrastructure

Two commands to a static bundle and a Node host. Railway, Fly, a VPS. No account with us.

Protect your work

Every board ships read-only or open for comments. Guests share a password, teammates sign in.

Comments your agent can act on

Pins anchor to the element, not a coordinate, so a note survives a rewrite intact.

NAKJDMT4 reviewing
checkout/cart1280
h2 · “Your bag”

Your bag

Heavy cotton tee
Qty 2
$56.00
Wool watch cap
Qty 1
$38.00
ShippingFree
Total$94.00
Checkout
Comment on this element…
checkout/pay1280

Your bag

Heavy cotton tee
Qty 2
$56.00
ShippingFree
Total$56.00
Checkout
AKMT3JD
3 comments
AK

Ana39m

CVC needs a hint. People type the long number here.

MT

Mo35m

Same on expiry, the fields look identical.

N

Nic19m

On it. Both get placeholder text.

Reply…

None of this is a design artifact.

Every spec, diagram, image and frame is a local file, using your framework, themes and components.

Going to production is adding the functionality.

The system

It is just a folder in your repo.

One package, one directory, local files. Nothing is locked into a proprietary format.

Files

Conventions, not a file format.

Frames live in folders you can name. Their states sit beside them and their data sits next to both.

design/  scenes/checkout/    cart.tsx              # one frame, one component    empty.tsx             # states are sibling files    _fixtures.ts          # the data it renders  theme.css               # imports your stylesheet
Frames

A component you can look at.

One file exports one component, and Marver draws it on the canvas. That is the entire format.

design/scenes/checkout/cart.tsx

import { Button } from "@/components/ui/button"
import { fx } from "./_fixtures"

export const meta = { viewport: "laptop" }

export default function Cart() {
  return (
    <Bag items={fx.full}>
      <Button data-goto="checkout/pay">
        Checkout
      </Button>
    </Bag>
  )
}
renders as
checkout/cart1280

Your bag

Heavy cotton tee
Qty 2
$56.00
Wool watch cap
Qty 1
$38.00
ShippingFree
Total$94.00
Checkout
States

Every state, ready to walk through.

Fixtures are a few lines of typed props. Empty, loading and error become frames you can click through in play mode.

design/scenes/checkout/_fixtures.ts

export const fx = {  empty:   { items: [] },  loading: { pending: true },  error:   { message: "Card declined" },  full:    { items: [tee, cap] },}
empty390
Your bag is emptyNothing here yet
loading390

Your bag

error390

Your bag

Card declined
Try another card
full390

Your bag

Heavy cotton tee
$56.00
Total$56.00
Checkout
Production

What is left is the backend.

Your theme, your components and your stack are already in the frame. Shipping swaps the fixture for the real data.

design/scenes/checkout/cart.tsx

import { Bag } from "@/components/bag"import { fx } from "./_fixtures" export default function Frame() {  return <Bag {...fx.full} />}
same component

app/cart/page.tsx

import { Bag } from "@/components/bag"import { getBag } from "@/lib/api" export default async function Page() {  return <Bag {...(await getBag())} />}

Use it where you already work.

The canvas is a localhost tab. Your editor stays your editor, and any agent can drive it.

marver-siteEditorBrowser
cart.tsxempty.tsx
1import { Button } from "@/components/ui/button"2import { fx } from "./_fixtures"3 4export const meta = { viewport: "mobile" }5 6export default function Empty() {7  return (8    <Bag {...fx.empty}>9      <Button>Start shopping</Button>10    </Bag>11  )12}
Agent14s
Add an empty state to the cart, mobile first

Added checkout/empty.tsx next to cart.tsx, using your Button and the cart fixtures.

It is on the board now, sized to mobile.

+ design/scenes/checkout/empty.tsxM design/boards/launch.json
Send follow-up
localhost:5199
checkout/cart1280

Your bag

Heavy cotton tee
Qty 2
$56.00
Wool watch cap
Qty 1
$38.00
ShippingFree
Total$94.00
Checkout
checkout/empty390
Your bag is emptyStart shopping
checkout/pay1280

Payment

Card number
4242 4242 4242 4242
Expiry
04 / 28
CVC
•••
Pay $94.00
1Mobile2Tablet3Laptop
maindesign/scenes/checkout/empty.tsxmarver dev

No MCP server, no plugin, no extension. Files it writes, and instructions it reads.

  • Claude Code
  • Cursor
  • opencode
  • Codex
  • T3 Code
  • Conductor
  • Antigravity
  • Factory

Craft

Did you know it comes with taste, too?

Marver comes with skills to teach your agent design thinking, wireframing, UI design and copy writing — not just how to draw a frame.

BEFOREAFTER
Order 4821On track

Your bag ships Friday.

Items, carrier, and delivery window in one view.

8 of 11 items packedTrack order →
ORDER STATUS

Your bag ships Friday.

Items, carrier, and delivery window in one view.

8 of 11 items packedTrack order →
UI you want to use
Clear diagrams
Low fi prototypes
Deslop written text

They are files in your repo. Edit them, or overrule them in DESIGN.md.

One prompt, and the canvas is yours.

Free and open source. It runs on your machine, inside your repo.

Works with Claude CodeRun npm i -D @marver-design/marver and follow its instructions

Apache 2.0. No account, no cloud, no seats.