OpenCode OpenDesign

Design With
OpenCode in
OpenDesign.

How to design interfaces with OpenCode in OpenDesign: design.md bound before anything is generated, the provider you choose, one shared-inbox task from brief to reviewed file, and the limits to know before you start.

From brief to interface01 / OpenCode
YOU BRING THE IDEA↗

“A shared inbox built on
design.md, not on defaults.”

Illustrative interface · not a captured product session
On This Page Example
  1. Example
  2. Fit
  3. Compatibility
  4. Setup
  5. Workflow
  6. Resources
  7. Limitations
  8. FAQ

One Complete OpenCode Design Task

An OpenCode Design Task, From Brief to Interface

One design job traced across the whole loop: the brief and constraints you hand over, the artifact returned to you, and the checks that remain before you call it finished. The interface below is an illustrative example created for this page; it is not a recorded OpenCode run.

1Design Brief and Constraints

Brief

Design a shared team inbox: a conversation list with owners, a thread view, and a right rail for customer context. Bind the design.md system before generation. Cover desktop and phone.

  • Design systemdesign.md tokens; Albert Sans, one green accent
  • Breakpoints1440px desktop and 390px mobile; no horizontal scrolling
  • InteractionsOwner filter, thread switching, context-rail toggle, reply action
  • OutputOne self-contained HTML file with stable data-od-id hooks

2Who Does What: You, OpenCode and OpenDesign

  • You

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

  • OpenCode

    OpenCode plans the layout, writes the HTML, CSS and JavaScript, then revises it when you ask.

  • OpenDesign

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

  • Review

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

3OpenCode Artifact: Team Inbox at 1440px and 390px

OpenCode Artifact: Team Inbox at 1440px and 390px — Desktop
Illustrative example

4Review Before Handoff

Layout

Grid and Spacing

Three panes align to the 8px grid; the context rail collapses before the thread does.

Hierarchy

Visual Hierarchy

Owner and subject lead; the accent is reserved for “waiting on us.”

Responsive

Mobile Layout

List first, then thread on tap; the context rail turns into a sheet.

Interaction

Interaction Checks

Filter by owner, open a thread, toggle the rail and send a reply.

Fit

Where OpenCode Fits—and Where It Does Not

OpenCode Fits When

  • design.md systems. Put a brand DESIGN.md (Stripe/Linear/Airbnb-style rules) into the project, and OpenCode generates UI that matches it.
  • UI/UX skills. Design-intelligence skills bring dozens of UI styles and palettes, and they generate a design system before coding begins.
  • Figma & visual canvas MCP. Link Figma or a visual canvas through MCP to get a design-to-code loop.
  • Model taste. OpenCode is BYOK, so you choose the model that designs best for your taste and budget.

Choose Another Workflow When

  • You need editable vector files. The artifact is HTML, not an editable design document. For your required asset format, look at a separate vector workflow.
  • You have no reference and no constraints. With no design system or examples, the output tends toward a generic look; write the brief first.
  • You do not have the credential this agent needs. Required: Provider keys via OpenCode config (bring your own key). OpenDesign does not provide or proxy credentials.
  • Your team works in Claude Code or Aider. Those agents have their own pages; the workspace is unchanged while the setup differs. See related agents.

Compatibility

OpenCode Requirements Before You Start

This page covers OpenCode when it is connected through the OpenDesign desktop app. Published references were checked on 6 September 2026.

Tool ScopeOpenCode, by Anomaly

OpenCode is an open-source (MIT) terminal AI coding agent — with a TUI plus desktop and IDE surfaces — maintained by Anomaly (the SST team) at github.com/anomalyco/opencode. This page is about designing interfaces with OpenCode through OpenDesign, not about OpenCode’s own interface. OpenDesign’s setup notes list the available agents.

Accounts and AuthenticationProvider keys through OpenCode config (BYOK)

Provider keys via OpenCode config (BYOK). OpenCode uses your provider keys through its own config (BYOK) — nothing is proxied. This page does not promise a quota or price.

System and VersionsDesktop app or source

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

Connection CheckThe success signal

Use the connection instructions your installed version shows, then run a small task. Confirm that OpenCode handled it and that the artifact opens. Downloading by itself does not establish a working connection.

Start with the desktop app

OpenCode Setup in Three Steps

Start by downloading, finish the OpenCode setup for the version you installed, then check a small result. Following this path does not require building OpenDesign from source.

  1. 1

    Download the OpenDesign Desktop App

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

    Download OpenDesign
    CHECKPOINT
    The desktop app opens. If it is already installed, go to the next step; you do not need to download again.
  2. 2

    Prepare Your OpenCode Connection

    Follow the OpenCode instructions included with your installed version. OpenCode uses your provider keys through its own config (BYOK) — nothing is proxied.

    # 1. Install OpenCode
    curl -fsSL https://opencode.ai/install | bash
    # or: npm i -g opencode-ai@latest
    # or: brew install sst/tap/opencode
    
    # 2. Start the TUI in your project, then authenticate your provider
    opencode          # then run /login and pick your provider + paste your key

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

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

    Run One Small OpenCode Task

    Keep the brief modest so you can judge the entire loop, including one round of revision.

    Starter brief

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

    CHECKPOINT
    Open the result, test the save state and ask for one specific change. Generation opens the review; it does not close it.

If you want to run OpenDesign from source, use the technical quickstart instead.

The OpenCode design workflow

An OpenCode Design Pass in Five Steps

One shared-inbox example carries through from written brief to checked HTML. At every step: your input, OpenCode’s move, OpenDesign’s contribution, and the review you still owe.

  1. 1

    Design Brief

    Keep it plain and short: three to six lines. State who uses the screen, what job it performs, and the platforms it must fit.

    • YouDraft the brief and attach a reference screenshot when one exists.
    • OpenCodeOpenCode reads the brief and the project’s AGENTS.md, then asks if a detail is ambiguous.
    • OpenDesignOpenDesign supplies the project, the terminal prompt surface, and the skill matched to the artifact type.
    • CheckCheck the brief names acceptance criteria. Settling them before generation costs less than fixing later.
  2. 2

    Design Constraints

    A design system plus a short list of hard rules. That combination keeps OpenCode from falling back to a generic look.

    • YouChoose the design system, then spell out breakpoints and components that must appear.
    • OpenCodeOpenCode loads DESIGN.md tokens and posture rules before it writes any markup.
    • OpenDesignOpenDesign provides the design-system library and binds your choice into the skill template.
    • CheckCheck the tokens against your brand: one accent, the intended fonts, the correct radius.
  3. 3

    Generate the Interface

    OpenCode writes one self-contained HTML file: layout, styles, interactions, and stable hooks.

    • YouWait, or answer a clarifying question. There is nothing to configure at this point.
    • OpenCodeIt plans the sections, writes HTML, CSS, and JavaScript, runs the file, and repairs what fails.
    • OpenDesignOpenDesign stores the artifact in the project folder and indexes it for preview.
    • CheckNot yet. Judge the rendered file, not the source markup.
  4. 4

    Preview

    OpenDesign previews the file at the widths you specified. This is where the design gets judged.

    • YouChange widths, exercise the interactions, and leave element comments.
    • OpenCodeOpenCode reads your preview comments and prepares the next revision.
    • OpenDesignOpenDesign renders the preview and exposes data-od-id targets for comments and edits.
    • CheckLook at hierarchy, contrast, overflow at 390px, focus states, and whether the accent stays restrained.
  5. 5

    Revise and Verify

    Ask for changes by pointing at preview elements. Each revision lands as a new file; nothing is overwritten without you seeing it.

    • YouTurn comments into requests and decide when the task is finished.
    • OpenCodeOpenCode applies the changes and re-runs the file.
    • OpenDesignOpenDesign keeps versions side by side; export an image or the HTML when you are done.
    • CheckReview the changed area first, then the full page once at each breakpoint.

Resources

OpenCode Design Resources

Limitations

OpenCode Limits, Manual Checks, and Fallbacks

  • ScopeOpenCode is a coding agent, not a purpose-built design tool. You shape visual output by adding skills, DESIGN.md system files, and Figma/visual-canvas MCPs. This page treats OpenCode as an agent connected to OpenDesign, not as a full survey of every OpenCode feature.
  • Usage LimitsUsage limits and cost follow the credential you bring (Provider keys via OpenCode config). This page makes no claim about free quotas.
  • NetworkLocal project files do not guarantee offline inference. Check your agent’s provider settings and data policies before you share sensitive inputs.
  • Output Is HTMLArtifacts come out as HTML files, not vector design files.
  • Manual ReviewYou review accessibility, real content, brand fit, and interaction correctness in the preview. Treat the agent’s self-check as only a first pass.
  • FallbackIf the agent is unavailable or a task fails, check the connection instructions and authentication for your installed version. Keep the error and the last working artifact before you change configuration.

FAQ

Common Questions About OpenCode and OpenDesign

Can OpenCode Actually Handle Design Work?
Yes — with an aesthetic skill, a design system, and real reference images in context, OpenCode produces production-quality, responsive UI and can verify it in a browser. Because it is model-agnostic, you run whichever model is currently best at frontend. Without that curated context it tends to default to a generic look, which is the gap OpenDesign fills.
Which Model Should I Use With OpenCode for Design?
Whichever you like — OpenCode is provider-agnostic via models.dev, so you can run Anthropic, OpenAI, Google, OpenRouter, or local models behind the same workflow and switch at any time. The quality of the design output depends far more on your skill, design system, and references than on the model alone.
Is OpenDesign Made by the OpenCode (SST) Team?
No. OpenDesign is an independent open-source project that integrates OpenCode as an agent. It complements OpenCode with a local-first, open skill and design-system library.
Do I Need a Special Subscription to Design With OpenCode?
No — OpenCode is BYOK. You bring your own model-provider API key, and OpenDesign never proxies your credentials. There is no vendor lock-in.
OpenCode or Codex or Claude Code for Frontend Design?
All are strong, and many teams stack them. OpenCode’s edge is being fully open-source and model-agnostic; Codex excels at delegated, sandboxed builds; Claude Code is known for specific, codebase-aware design decisions. OpenDesign lets you switch agents without changing your design workflow.
What OpenCode Is, Precisely
OpenCode is an open-source AI coding agent built for the terminal, maintained by the team behind SST (Anomaly Innovations). It reads your repository, runs commands, edits files, and talks to a large language model — but unlike vendor-bound agents, it does not ship its own model. You point it at whatever provider and model you want and bring your own key.

It runs as a terminal UI (TUI), with a desktop app and IDE extensions on top of the same engine. Under the hood it uses a client/server architecture, so the agent that does the work is decoupled from the surface you drive it from. Two built-in agents — build and plan — toggle with the Tab key.

Model-agnostic: Models and providers come from models.dev, an open catalog. You configure them in opencode.json with a provider/model-id string and can disable providers you do not want loaded — so the same design workflow runs on Anthropic, OpenAI, Google, OpenRouter, local models, and more.

Instruction file: OpenCode reads an AGENTS.md file in your project (the cross-tool standard, also compatible with CLAUDE.md) for project rules — the natural place to encode your design conventions. Run /init to generate one.

Extensible: It supports LSP integration, MCP servers, themes, keybinds, and custom commands, plus shareable session links for collaboration.

Maintainer: SST / Anomaly Innovations (open-source project)

Credential: your own model-provider API key(s) — BYOK, no vendor lock-in

License: MIT, open source
Why an open, any-model agent fits design work
OpenCode does not have a single “design model” the way a vendor agent does — and that is the point. Because it is model-agnostic and open, you can run the same design workflow on whichever model is currently best at frontend, swap it later, or fall back to a local model, all without changing your setup.

But model choice alone does not buy taste. Like every coding agent, OpenCode produces generic UI unless you give it constraints. Good design output comes from three inputs you provide.

A design system: Real tokens, primitives, and conventions the agent reuses, so output matches a brand instead of defaulting to a generic look.

An aesthetic skill: A curated skill that enforces real taste — restrained motion, brand-first hierarchy, at most two typefaces and one accent color — and makes the agent commit to a direction before building.

Concrete references: Actual reference images and multiple states (desktop and mobile, hover, empty, loading), not a single hero shot.

Taste comes from three inputs you provide: a design system, a skill, and real reference images — independent of which model you run.

The lesson: OpenCode gives you model freedom, but taste still comes from a curated design context. OpenDesign packages exactly those inputs, which is why the two fit together — both are open-source and local-first (more below).
Setting Up OpenCode for Design From Zero
The setup sequence: install → authenticate (your provider key) → configure AGENTS.md → add a skill → verify in a real browser.

Encode your design rules: Put your tokens, primitives, and conventions in AGENTS.md (or a DESIGN.md referenced from it) so output matches a brand instead of defaulting to a generic look. The instructions option in opencode.json can point at additional rule files via globs.

Choose a capable model: Because OpenCode is model-agnostic, pick whichever provider/model is currently strongest at frontend for the design pass — and keep the rest of your workflow unchanged.

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

# 1. Install OpenCode curl -fsSL https://opencode.ai/install | bash # or: npm i -g opencode-ai@latest # or: brew install sst/tap/opencode # 2. Start the TUI in your project, then authenticate your provider opencode # then run /login and pick your provider + paste your key # 3. Generate project context opencode # inside your project, run /init to create AGENTS.md # 4. Pick your model (any provider, via models.dev) # set "provider/model-id" in opencode.json or switch in the TUI # 5. Add an MCP server (optional, e.g. for design handoff) # configure it under the "mcp" key in opencode.json
Historical command example from the previous guide; verify current syntax in the linked vendor documentation.
Screenshot-to-UI Workflow in OpenCode
The highest-leverage design loop with any agent is turning a reference image into working, responsive UI and iterating until it matches. The same five-step shape applies in OpenCode.

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

Be specific in the prompt; vague prompts produce generic UI.

Prepare a design system and tell OpenCode where the tokens and canonical primitives live (in AGENTS.md).

Run a dev server and have the agent render in a real browser, resizing to breakpoints to check the result.

Iterate by having OpenCode compare its implementation back to the screenshots — not merely confirm it builds.

Reference files with @ in the TUI for a fuzzy search of your working directory, run shell commands inline with a leading !, and drive actions with / commands. Then prompt with concrete constraints:

Keep prompts small and focused, commit good iterations and revert bad ones (telling OpenCode when you revert), so each pass builds on a clean base.

opencode # in the TUI: > @reference-desktop.png @reference-mobile.png Implement this design in React + Vite + Tailwind + TypeScript. Reuse my existing design-system components and tokens from AGENTS.md. Match spacing, layout, and hierarchy; make it responsive. Run the dev server, open it in a browser, and iterate until the UI matches the references across breakpoints.
Historical command example from the previous guide; verify current syntax in the linked vendor documentation.
AGENTS.md, MCP, and shareable sessions
Three extension points make OpenCode practical for sustained design work, and all three map cleanly onto an open design workflow.

AGENTS.md rules: Project rules live in an AGENTS.md at the repo root (or global rules in ~/.config/opencode/AGENTS.md). It is the durable home for your design conventions, read on every run, and it is compatible with the CLAUDE.md files other agents use.

MCP servers: OpenCode supports both local (command) and remote (URL) MCP servers, configured under the mcp key — the portable way to bring in design context and external tools that work across agents, not just OpenCode.

Shareable sessions: The /share command creates a public link to a conversation for collaboration or review, and /unshare revokes it — useful for getting feedback on a design pass.

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

OpenCode — Open-source and model-agnostic; run any provider behind one terminal workflow — BYOK freedom, model-switching, fully open and local-first setups

Codex — Strong visual polish with a frontend skill; image understanding — Delegated async, sandboxed builds, 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

The recurring community verdict is that 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, which is precisely why an open agent like OpenCode pairs so well with an open design layer.

Agent — Design strength — Best for
Pitfalls and Avoiding 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 OpenCode; 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.

Verify in a real browser: 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 in AGENTS.md: Put “no hero cards, max two typefaces, brand-first hierarchy” style rules where the agent reads them every run.

Notice that every mitigation is about giving the agent a curated design context — regardless of which model you run. Maintaining that context by hand, per project, is the toil OpenDesign removes.
Designing with OpenCode inside OpenDesign
OpenDesign is the open-source design layer the workflow above keeps asking for. It treats OpenCode 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 any agent good is there from the first run, not assembled by hand each time. Both projects are open-source and local-first, which makes the pairing a natural fit.

Authenticate with your own model-provider API key (BYOK) — credentials stay on your machine and are never proxied through us.

Pick any provider and model, plus 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 OpenCode agent, same model freedom — plus a real, portable, open-source design workflow around it. It is local-first and Apache-2.0, so nothing about your work or your credentials leaves your machine.

Install OpenDesign and select OpenCode as your agent.
Which OpenCode is this?
The open-source terminal agent at github.com/anomalyco/opencode (formerly sst/opencode), maintained by Anomaly. Not to be confused with similarly named tools.
Is OpenDesign the same project as OpenCode?
No. Both are open-source, but they are separate projects. OpenDesign integrates OpenCode as a first-party agent adapter.

Begin a First Design Task in OpenCode

Begin with something modest, judge the full loop, then bring the real brief. Pick the option that matches your setup; this page cannot detect it.

Which setup stage are you in?
Download OpenDesign See the setup checklist

OpenDesign Desktop

One design system. Every output unmistakably your brand

Inside the full Vibe Design Workspace, use the same brand rules across websites, slide decks, interactive prototypes, dashboards, images, and HTML video. Connect Codex, Claude Code, Cursor, and other coding agents already on your computer, then create locally for free.

  • Web, slides, prototypes, dashboards, images, and video
  • 140+ design systems, plus the full template and skill library
  • Connect local Codex and 21+ coding agents · Free to use
Download free

Available for macOS and Windows