Pi OpenDesign

Design With
Pi in
OpenDesign.

How to design interfaces with Pi in OpenDesign: portable skills, the model and key you choose, one plan-comparison task from brief to reviewed file, and the limits to know before you start.

On This Page Example
  1. Example
  2. Fit
  3. Compatibility
  4. Setup
  5. Workflow
  6. Resources
  7. Limitations
  8. FAQ

One Complete Pi Design Task

A Pi Design Job: Brief Through to Interface

One task traced through the full loop: what you hand over as brief and constraints, the artifact Pi returns, and the checks that remain before you call it done. The interface below is an illustrative example built for this page, not a recorded Pi run.

1Design Brief and Constraints

Brief

Design a plan comparison page for a note-taking app: free, personal and team plans, a feature comparison and a short FAQ. Desktop and phone.

  • Design systemOpenDesign paper canvas: Albert Sans, one green accent
  • Breakpoints1440px desktop and 390px mobile, no horizontal scroll
  • InteractionsBilling toggle, plan CTAs, expandable comparison rows
  • OutputOne self-contained HTML file with stable data-od-id hooks

2Who Does What: You, Pi and OpenDesign

  • You

    You write the brief, choose the design system and set the acceptance criteria.

  • Pi

    Pi plans the layout, writes the HTML, CSS and JavaScript, and revises on request.

  • OpenDesign

    OpenDesign supplies the design system and skill, renders the preview, and saves every version as a project file.

  • Review

    Before handoff, check visual hierarchy, spacing on the 8px grid, both breakpoints and every interaction.

3Pi Artifact: Plan Comparison Page at 1440px and 390px

Pi Artifact: Plan Comparison Page at 1440px and 390px — Desktop
Illustrative example

4Review Before Handoff

Layout

Grid and Spacing

The three plans and the comparison use the same 8px grid; feature rows line up across columns.

Hierarchy

Visual Hierarchy

Price and plan name lead; the accent marks the most-chosen badge and its button.

Responsive

Mobile Layout

Order: personal plan, then free, then team; the toggle remains at the top.

Interaction

Interaction Checks

Toggle the switch, tab through the CTAs, open one comparison row.

Fit

When Pi Is the Right Fit—and When It Is Not

Pi Fits When

  • Any model, your keys. Send requests to Anthropic, OpenAI, Google and more with your own keys; choose a strong multimodal model for screenshot-to-UI and switch using /model.
  • Portable Skills. Put your design conventions into Agent-Skills-standard Skills that move with you across compatible agents, not only Pi.
  • MCP + Extensions. Pull real design context through a Figma MCP server, and automate the verification loop using TypeScript Extensions.
  • Open and BYOK. MIT-licensed and local-first; you pay only for the underlying model, and credentials remain on your machine.

Choose Another Workflow When

  • You need editable vector files. The artifact is HTML, not an editable design document. Look to a separate vector workflow for the asset format you require.
  • You have no reference and no constraints. With no design system or examples, output tends toward a generic look; write the brief first.
  • You do not have the credential this agent needs. Required: Your own provider API key (bring your own key) or subscription login via /login. OpenDesign does not provide or proxy credentials.
  • Your team works in Aider or OpenCode. Those agents have their own pages; the common workspace remains, but setup differs. See related agents.

Compatibility

Pi Requirements Before You Start

This page covers Pi when connected via the OpenDesign desktop app. Published references were checked on 6 September 2026.

Tool ScopePi, by community

Pi is an open-source (MIT) terminal AI coding agent from earendil-works. It reads your codebase, edits files and runs commands from a compact four-tool core — read, write, edit, bash. This page is about designing interfaces with Pi through OpenDesign, not Pi’s own interface. OpenDesign’s setup notes list the available agents.

Accounts and AuthenticationYour own provider API key (BYOK) or

Your own provider API key (BYOK) or subscription login via /login. Authenticate with your own provider API key (BYOK) or a subscription login — credentials stay on your machine. This page does not promise a quota or price.

System and VersionsDesktop app or source

See the download page for desktop builds. Node.js and pnpm requirements in the source quickstart apply when running from source, not when installing a desktop package. Minimum compatible Pi version: not verified here.

Connection CheckThe success signal

Use the connection instructions shown by your installed version, then run a small task. Confirm that Pi handled it and that the artifact opens. A download alone does not establish a working connection.

Start with the desktop app

Pi Setup in Three Steps

Download first, finish the Pi setup for the version you installed, then check a small result. Building OpenDesign from source is not required for this path.

  1. 1

    Download the OpenDesign Desktop App

    Pick the package for your computer, install it and launch the app.

    Download OpenDesign
    CHECKPOINT
    The desktop app opens. Already installed? Go to the next step; no need to download again.
  2. 2

    Prepare Your Pi Connection

    Follow the Pi instructions in your installed version. Authenticate with your own provider API key (BYOK) or a subscription login — credentials remain on your machine.

    Pi providers & authentication docs
    # 1. Install the Pi coding agent CLI (Node)
    npm install -g --ignore-scripts @earendil-works/pi-coding-agent
    
    # 2. Authenticate with your own provider key (BYOK)
    export ANTHROPIC_API_KEY=sk-ant-...   # or OPENAI_API_KEY=sk-...
    #    (or run /login inside Pi for a Claude / ChatGPT / Copilot subscription)

    Taken from the Pi setup notes in the published guide; check vendor documentation for the current command.

    CHECKPOINT
    Confirm the intended agent and account. If unavailable, check compatibility before attempting a larger task.
  3. 3

    Run One Small Pi Task

    Begin with a bounded brief that lets you judge the full loop, including one revision.

    Starter brief

    Create a settings screen with a profile form and a save confirmation. Apply my design rules. Check it at desktop and mobile widths.

    CHECKPOINT
    Open the result, test the save state and request one specific change. Review begins when a file is generated; it does not end there.

To run OpenDesign from source, use the technical quickstart instead.

The Pi design workflow

Pi's Five-Step Design Workflow

Trace one plan-comparison page from brief to checked artifact. Each step shows your input, Pi's move, OpenDesign's contribution, and your review point.

  1. 1

    Design Brief

    Keep it plain and short: three to six lines. Name the audience, the screen's purpose, and the platforms.

    • YouDraft the brief; attach a reference screenshot if available.
    • PiReads the brief and the project’s Skill file; asks if anything is ambiguous.
    • OpenDesignSupplies the project, the prompt interface, and the Skill for the artifact type.
    • CheckCheck that the brief includes acceptance criteria. Adding them now costs less than post-generation fixes.
  2. 2

    Design Constraints

    A design system plus strict rules. This is what keeps Pi's output on-brand instead of generic.

    • YouSelect a design system; specify breakpoints and required components.
    • PiLoads DESIGN.md tokens and posture rules into context before writing any code.
    • OpenDesignProvides the design-system library and binds your choice into the Skill template.
    • CheckVerify tokens match your brand: single accent, correct fonts, proper radius.
  3. 3

    Generate the Interface

    Pi produces a single self-contained HTML file: layout, styles, interactions, and stable hooks.

    • YouWait or answer a clarifying question. No configuration needed.
    • PiPlans sections, writes HTML, CSS, and JavaScript, runs the file, and fixes failures.
    • OpenDesignSaves the artifact to the project folder and indexes it for preview.
    • CheckNothing yet. Judge the rendered file, not the source.
  4. 4

    Preview

    The file renders in OpenDesign at your requested widths. This is where the design gets judged.

    • YouToggle widths, test interactions, and leave comments on elements.
    • PiReads your preview comments and prepares the next revision.
    • OpenDesignRenders the preview and exposes data-od-id targets for comments and edits.
    • CheckCheck hierarchy, contrast, overflow at 390px, focus states, and whether the accent stays sparing.
  5. 5

    Revise and Verify

    Request changes by pointing at elements in the preview. Each revision is a new file; nothing gets overwritten silently.

    • YouTranslate comments into requests; decide when the task is complete.
    • PiApplies changes in place and re-runs the file.
    • OpenDesignKeeps versions side by side; exports an image or the HTML when finished.
    • CheckRe-check only the changed area, then the full page once at each breakpoint.

Resources

Pi Design Resources

Limitations

Pi Limitations, Manual Checks and Fallbacks

  • ScopePi is provider-agnostic: it normalizes across Anthropic, OpenAI, Google, and 20+ providers, so you bring your own keys and can switch models mid-session. This page covers Pi as an agent connected to OpenDesign, not every Pi feature.
  • Usage LimitsUsage limits and cost follow your credential (your own provider API key or subscription login via /login). This page makes no claim about free quotas.
  • NetworkLocal project files don't imply offline inference. Review Pi's provider settings and data policies before sharing sensitive inputs.
  • Output Is HTMLArtifacts are HTML files, not vector design files.
  • Manual ReviewAccessibility, real content, brand fit, and interaction correctness are reviewed by you in the preview. Treat any agent self-check as a first pass.
  • FallbackIf Pi is unavailable or a task fails, check the installed version's connection instructions and authentication. Preserve the error and the last working artifact before changing configuration.

FAQ

Common Questions About Pi and OpenDesign

Can Pi Really Do Design Work?
Yes — with an aesthetic skill, a design system, and real reference images in context, Pi produces production-quality, responsive UI, and you can route it to a strong multimodal model to verify output against references. Without that context it tends to default to a generic look, which is the gap OpenDesign fills.
Do I Need to Pay to Design With Pi?
Pi itself is free and open source (MIT). You pay only for the underlying model — bring your own provider API key (BYOK), or use a Claude Pro/Max, ChatGPT Plus/Pro, or GitHub Copilot subscription via /login. OpenDesign never proxies your credentials either way.
What Makes Pi Suited for Design?
It is provider-agnostic: you bring your own keys and route to any of 20+ providers, picking the model whose strengths fit the task and switching mid-session. But taste still comes from the design system, skill, and references you supply, not from the model.
Which Model Should I Use With Pi for Frontend Design?
Pi routes to many providers, so choose per task — a strong multimodal model reads reference screenshots well, while others may suit refactoring. The advantage of Pi is that you can switch without changing your workflow. OpenDesign lets you keep the same design context across whichever model you pick.
How Do I Connect Pi to Figma?
Pi supports MCP servers, so you can add a Figma MCP server and pull real design context — components, variables, layout data — so the generated code matches the source instead of approximating it.
What Pi actually is
Pi is an open-source (MIT) AI coding agent for the terminal, part of the earendil-works pi toolkit. It reads your repository, edits files, and runs shell commands — planning and verifying work from natural-language tasks rather than just completing lines. Its core is deliberately small: four default tools — read, write, edit, and bash — plus built-in grep, find, and ls.

For design work, the standout property is that Pi is provider-agnostic. It normalizes across Anthropic, OpenAI, Google and many other providers behind one unified API, so you bring your own keys and choose the model per task — for example a strong multimodal model to read reference screenshots — and switch with /model or Ctrl+L mid-session without changing your workflow.

Any model, your keys: Pi routes to 20+ providers including Anthropic and OpenAI. You authenticate with your own API keys (BYOK), or sign in to a Claude Pro/Max, ChatGPT Plus/Pro, or GitHub Copilot subscription with /login.

Skills + Extensions: Pi loads Skills (Markdown capability packages following the Agent Skills standard) and TypeScript Extensions — the natural place to encode your design conventions and add custom tools.

Branching sessions: Sessions are stored as JSONL trees, so you can branch an exploration and navigate history in a single file without losing earlier passes.

Credential: your own provider API key (BYOK — Anthropic, OpenAI, Google, etc.) or a subscription login via /login; stored locally in ~/.pi/agent/auth.json (0600)

Vendor: earendil-works (open-source community project)

License: MIT, open source
Why a multi-provider, BYOK agent fits design
Pi’s design edge is flexibility, not a single built-in model — but, as with every agent, taste still has to be supplied.

Pick the right model per task: Because Pi routes to any provider, you can reach for a strong multimodal model to read reference screenshots, then switch to another for refactoring — without leaving the agent.

Your keys, no lock-in: BYOK means you are not tied to one vendor’s pricing or context limits; choose the model whose strengths fit the design job in front of you.

Conventions in Skills: A Skill (plus an MCP source like a Figma server) points the agent at your tokens, components, and real specs, so it works against a brand instead of a default look.

Taste comes from three inputs you provide: a design system, a skill, and real reference images.

The lesson is the same one every agent teaches: Pi does not have taste by default, and no model choice supplies it. It produces good design when you give it constraints — a design system, an aesthetic skill, and concrete references. OpenDesign packages exactly those inputs, which is why the two fit together (more below).
Set Up Pi for Design Work from Scratch
The setup sequence: install → authenticate (BYOK) → encode design rules in a Skill → choose a model → enable browser verification.

Encode your design rules: Put your tokens, primitives, and conventions in a Skill and point Pi at them, so output matches a brand instead of defaulting to a generic look.

Add browser verification: Wire a Playwright or browser MCP so Pi renders in a real browser and checks its output across breakpoints instead of only confirming the build passes.

Use the current setup section for commands and version-specific details, which may change.

# 1. Install the Pi coding agent CLI (Node) npm install -g --ignore-scripts @earendil-works/pi-coding-agent # 2. Authenticate with your own provider key (BYOK) export ANTHROPIC_API_KEY=sk-ant-... # or OPENAI_API_KEY=sk-... # (or run /login inside Pi for a Claude / ChatGPT / Copilot subscription) # 3. Start it in your project cd your-project pi # 4. Switch models any time with /model or Ctrl+L
Historical command example from the previous guide; verify current syntax in the linked vendor documentation.
The screenshot-to-UI workflow
The highest-leverage design loop with Pi is turning a reference image into working, responsive UI and iterating until it matches — leaning on a multimodal model to compare output back to the reference. Because Pi is provider-agnostic, point it at whichever model reads images best for this pass.

Start from the clearest visual references you have — and include multiple states (desktop and mobile, hover, empty, loading), not just one hero shot.

Pick a strong multimodal model for the pass with /model, since image understanding is what drives screenshot-to-UI quality.

Be specific in the prompt; vague prompts produce generic UI even with a strong model.

Keep your design system and conventions in a Skill, and tell Pi where the tokens and canonical primitives live.

Run a dev server and have Pi render in a real browser, resizing to breakpoints, then iterate by comparing its implementation back to the screenshots — not merely confirm it builds.

Give the agent the references and concrete constraints up front:

Keep prompts small and focused, commit good iterations and revert bad ones (telling Pi when you revert), so each pass builds on a clean base. Pi’s branching JSONL sessions also let you explore an alternative without losing the original thread.

pi # in the prompt: > Implement reference-desktop.png and reference-mobile.png in React + Vite + Tailwind + TypeScript. Reuse my existing design-system components and tokens (see the Skill). Match spacing, layout, and hierarchy; make it responsive. Render it in the browser and iterate until it matches the references across breakpoints.
Historical command example from the previous guide; verify current syntax in the linked vendor documentation.
Skills, Extensions, and themes
Pi self-extends at runtime through a few layers, and they map cleanly onto an open design workflow.

Skills: Markdown capability packages following the Agent Skills standard — the durable, portable home for your design conventions, tokens, and review checklists. The same Skill works across compatible agents, not just Pi.

Extensions and prompt templates: TypeScript Extensions add custom tools, commands, and UI; reusable prompt templates run via /name. Both let you script the verification loop without leaving the terminal.

MCP and themes: Pi connects to MCP servers to bring in external design context (most relevantly a Figma MCP server), and themes hot-reload so the terminal UI stays readable while you work.

These are portable capabilities — Skills and MCP especially — exactly the kind of thing OpenDesign is built to orchestrate, rather than re-create per project.
Pi vs Codex vs Claude Code vs Cursor vs Gemini CLI for design
There is no single winner for design work — each agent has a different strength, and experienced teams stack them. A fair summary:

Pi — Provider-agnostic and BYOK — route to any model (Anthropic, OpenAI, Google…) and switch mid-session; MIT, self-extensible — Choosing the best model per task without vendor lock-in

Codex — Strong visual polish with a frontend skill; sandboxed async builds — Delegated async builds and portable AGENTS.md rules

Claude Code — Specific design decisions (hex, spacing, type) and codebase-aware UX — Frontend reasoning and large-context refactors

Cursor — Visual build-and-see loop with live preview and inline edits — Tight iterate-and-watch UI work inside an IDE

Gemini CLI — Strong multimodal image understanding and a 1M-token context; free tier — Screenshot-heavy work and holding a whole design system in context

Pi’s angle is orthogonal to the others: it is the agent that lets you use any of those underlying models on your own keys. The recurring community verdict still holds — taste comes from humans: all of them default to a generic aesthetic without skills, references, and constraints. That is the real problem to solve, and it is design-tool-shaped, not model-shaped.

Agent — Design strength — Best for
Pitfalls, and how to avoid the “AI slop” look
The most common complaint about AI-generated design is that it looks generic — soft gradients, floating panels, oversized rounded corners, dramatic shadows, an Inter-and-purple vibe that “screams an AI made this.” Other reported issues include broken mobile layouts and instructions leaking into UI copy. None of these are unique to Pi or to any one model; they are what happens when any agent runs without a curated design context.

Add an aesthetic skill: A curated design skill forces the agent to commit to a real direction instead of the default look — and since it is a portable Skill, it travels with you across models.

Verify in a real browser: Pick a multimodal model and have Pi render and self-check across breakpoints so layouts do not silently break on mobile.

Supply tokens and references: Real design tokens and reference screenshots are the single biggest lever on output quality.

Encode rules where Pi reads them: Put “no hero cards, max two typefaces, brand-first hierarchy” style rules in a Skill the agent loads every run.

Notice that every mitigation is about giving the agent a curated design context — independent of which provider you route to. Maintaining that context by hand, per project, is the toil OpenDesign removes.
Designing with Pi inside OpenDesign
OpenDesign is the open-source design layer the workflow above keeps asking for. It treats Pi as a first-party adapter and wraps it in a curated skill and design-system library, a structured render pipeline, and a local desktop UI — so the design context that makes Pi good is there from the first run, not assembled by hand each time. Both are open-source and local-first, which makes the pairing a natural fit.

Authenticate with your own provider API key (BYOK) or a subscription login — credentials stay on your machine in ~/.pi/agent/auth.json and are never proxied through us.

Pick a design system and a skill, then generate decks, prototypes, and landing pages with consistent taste.

Every artifact and DESIGN.md file lives in your own repo, not a hosted cloud.

Same Pi agent, same keys, same freedom to switch models — plus a real, portable, open-source design workflow around it. It is local-first and MIT, so nothing about your work or your credentials leaves your machine.

Install OpenDesign and select Pi as your agent.
Is OpenDesign affiliated with Pi?
No. OpenDesign is independent and integrates Pi as a community-supported adapter.