Runs locally, in your own repo

You design the system.
An agent writes the code.

Sketch your app as boxes: screens, services, entities and external systems. Connect them. Mark a box ready and a Claude agent implements exactly what changed, in your repo, with one commit per change.

Get started Watch the demo 1:27
screen Recipes /recipes done
entity Recipe title: string
servings: integer
done
entity Ingredient name: string
quantity: ?
question
Agent asks: Is quantity free text like “2 cups”, or a number plus a unit?
service Importer url: string implementing…
external Nutrition API draft
How it works

Draw it, mark it ready, read the commit.

Step 1

Sketch the boxes

Four kinds of box cover most apps. Connect them with relations like has_many, calls and shows.

Screen Service Entity External
Step 2

Mark a box ready

Drafts stay on the canvas. Only ready boxes reach the agent, and it gets a list of what changed, not a picture.

service "Importer" added with
  attributes url:string
"Importer" uses "Recipe"
Step 3

Review the result

Each change lands as its own commit. Code changes shows the diff behind every box, and Open app runs it.

a41c9e2Add Importer service
7be03d1Add Recipes screen
19f5a80Add Recipe entity
Source of truth

The diagram lives in your repo.

The canvas edits architecture.yaml. Review it in pull requests like any other file. Moving a box never counts as a change, so only real design decisions reach the agent.

  • →Unclear description? The agent asks on the box instead of guessing.
  • →Point it at existing code and it draws the diagram for you first.
architecture.yamlrecipe-box
elements:
  - id: recipe
    type: entity
    name: Recipe
    attributes:
      - { name: title, type: string }
      - { name: servings, type: integer }
    ready: true
  - id: importer
    type: service
    name: Importer
    description: Imports a recipe from a URL
    ready: true
relations:
  - { from: importer, to: recipe, kind: uses }
Quick start

Three commands to your first box.

Setup offers to install Node.js through Homebrew if it’s missing and puts blueprint on your PATH. After that there’s nothing to rebuild by hand.

Terminal
# once
git clone git@github.com:sislr/blueprint.git && blueprint/bin/setup

# in your app
cd ~/path/to/your-app
blueprint            # opens http://localhost:4317
blueprint update     # get the latest version
Env Default Controls
BLUEPRINT_MODELclaude-opus-5-5Agent model
PORT4317Canvas port
BLUEPRINT_APP_URLlocalhost:3000Where Open app looks
BLUEPRINT_APP_CMDbin/devHow Open app starts it
The agent edits files and runs shell commands unattended in the target repo. Use it on repos where that’s fine.