Get started

Give Bolt a design system

Bolt runs a full WebContainer with a working terminal, which makes it the easiest AI builder to hand a design system: you install one exactly as you would locally. That matters more than it sounds, because Bolt's own design-system feature is gated behind a Team plan.

Updated July 27, 2026

Three different Bolts share this name

Search results for "Bolt design system" mix at least three companies: bolt.new, the AI app builder this guide is about; Bolt Design System, an unrelated open-source system with separate React and Twig implementations; and Bolt, the European ride-hailing company, which has written about building its own cross-platform system. If you came for either of the other two, those links are what you want.

What Bolt's native design systems do

Per Bolt's documentation, a design system gives Bolt a set of visual rules (colours, typography, spacing, component styles) to follow when it builds. The stated payoff is that Bolt emits UI code built from your actual components rather than stand-in code you would replace later.

There are two tiers, and the difference matters before you plan around it:

Who can use itWhat you can do
Pre-loaded design systemsAll usersBuild real projects with them, but you cannot update or change them
Your own design systemPaid Team planCompiled from your sources, synced when they change, used across the team's projects
Bolt's two design-system tiers, from its own documentation, July 2026.

The pre-loaded systems are a genuinely good way to see the difference a system makes: pick one, hit *Try example*, and compare the output quality against a plain prompt. What you cannot do is bend one toward your brand, because they are read-only. The moment you need your own look, you are choosing between a Team plan and the terminal.

What Bolt compiles from, and how sync works

Bolt's model is compilation, not upload. Its docs state that Bolt compiles your design system from your own sources, your component library and your design-system website, and that your design system *is defined by those sources*. When the sources change, you sync Bolt to pick up the latest version.

That is a clean model with one consequence people meet later: the compiled system is a snapshot. Between syncs, Bolt is generating from a version of your system that may no longer match what ships. This is the failure mode design-system teams already know as token drift, the designed source of truth and the shipped one diverging, and an agent that generates confidently from the stale copy produces production-ready code on the wrong foundation, faster than before. Put the sync in your release checklist, not your maintenance backlog.

The assumption underneath every one of these features

Bolt is not unusual in needing sources to compile from. We checked the current documentation for every major AI builder and coding agent, and the shape is the same across all of them.

What it wants from youPlan gate
BoltYour component library plus a design-system site to compile fromTeam plan to add your own
LovableA React component library, as a dedicated Lovable projectEnterprise
v0An installable npm package, repo, Storybook or Figma sourcePrivate packages need shared env vars
Claude DesignYour codebase and design files, at onboardingClaude Design (Labs)
CursorRules you write yourselfNone
Windsurf / Devin DesktopNothing native: repo files or an MCP serverNone
Native design-system support across AI builders and coding agents, from each vendor's own documentation, July 2026.
Not one of these features gives you a design system. Every one of them assumes you arrive holding one.

If you maintain a component library and a docs site, Bolt's compiler is the right tool and you should pay for the Team plan. If your design system is currently "whatever Bolt did on screen one", there is nothing to compile, and the rest of this page is the practical answer.

The terminal path: works on any plan

Bolt is a StackBlitz WebContainer, which means it runs a real Node environment with a real terminal in the browser. Almost nothing else in this category does. You can install packages, run generators, and write files, so a design system installs exactly as it would on your machine, with no plan gate and no compilation step.

Ambient Sage

Live render

Rendered from the kit's actual tokens, fonts, and treatments

Ambient SageOverview
Search anything⌘K
AS

Analytics

Revenue overview

See revenue and retention trends alongside account health.

Jan 1 to Jan 30, 2026
Overview
Analytics
Reports
Notifications

Active users

15.1k

2,491 new

+5%

MRR

$49.1k

Net of churn

+3%

Retention

89%

28-day window

+2%

NPS

69

1,204 replies

+3

Revenue

Last 12 months

$49.1k +18.2%

12m30d7d
JanFebMarAprMayJunJulAugSepOctNovDec

Acquisition

Goal completion

On track
78%of goal
Organic48%
Direct31%
Referral21%

Recent transactions

Latest activity across your workspace

View all
CustomerStatusDateAmount
AR

Alex Rivera

Founder & CEO

Paid2 min ago$1,999.00
MO

Mira Okonkwo

Head of Product

Pending1 hour ago$39.00
JF

Jonas Feld

Design Lead

Processing3 hours ago$299.00

Typography

Plus Jakarta Sans

Color system

28 semantic roles, light + dark

Agent outputs

DESIGN.md, CSS, Tailwind, shadcn

Ambient Sage rendered from its real tokens: the system Bolt installs and builds against.

Token specimen · real values

Ambient Sage

Live render

Ambient Sage's actual tokens — the same values its exports use.

Color tokensSemantic roles with HEX / HSL / CMYK

Color tokens

Ambient Sage
light · HEX · HSL · CMYK

Core

#F3F4EF

background

H 72 · C0, 0, 2, 4

#1A1C17

foreground

H 84 · C7, 0, 18, 89

#E5E6E0

card

H 70 · C0, 0, 3, 10

#ECEEE8

muted

H 80 · C1, 0, 3, 7

#D8D9D2

border

H 68.57 · C0, 0, 3, 15

Brand

#FEE951

primary

H 52.72 · C0, 8, 68, 0

#1A1C17

primary-fg

H 84 · C7, 0, 18, 89

#E5E6E0

secondary

H 70 · C0, 0, 3, 10

#F7E464

accent

H 52.24 · C0, 8, 60, 3

#FEE951

ring

H 52.72 · C0, 8, 68, 0

Semantic

#C0392B

destructive

H 5.64 · C0, 70, 78, 25

#FFFFFF

destructive-fg

H 0 · C0, 0, 0, 0

#2D7238

success

H 129.57 · C61, 0, 51, 55

#C97D12

warning

H 35.08 · C0, 38, 91, 21

#545651

muted-fg

H 84 · C2, 0, 6, 66

Charts

#FEE951

chart-1

H 52.72 · C0, 8, 68, 0

#4A8FD4

chart-2

H 210 · C65, 33, 0, 17

#6BBF8A

chart-3

H 142.14 · C44, 0, 28, 25

#E07498

chart-4

H 340 · C0, 48, 32, 12

#E8A24B

chart-5

H 33.25 · C0, 30, 68, 9

Type scaleHeading, body, and mono in the kit's fonts

Typography

Ambient Sage

Scale: compact-product

Density: balanced

Heading · Plus Jakarta Sans · 1.875rem

Ship beautiful product faster

Subheading · Plus Jakarta Sans · 1.375rem

A warm-sage neutral-surface mobile kit with a single vivid yellow accent, flat tonal cards, and oversized display numerals.

Body · Plus Jakarta Sans · 1rem

Ambient Sage uses a near-white warm-sage canvas (#f3f4ef) with card panels distinguished only by a tonal shift to #e5e6e0, never by shadows or borders. A single vivid yellow (#fee951) is the only saturated color and appears sparingly at component scale as orbs, button fills, and focus rings. Primary data values render as oversized bold hero numerals with a small superscript unit. Typography is a friendly rounded geometric (Plus Jakarta Sans) with no uppercase and no tight tracking, while JetBrains Mono is reserved for hex codes and technical strings. Generous rounding and luminance-only contrast give the whole system a calm, minimal feel.

Mono · JetBrains Mono · 0.8125rem

npx shadcn add ambientsage.json

Aa

Plus Jakarta Sans · Heading

400500600700

Aa

Plus Jakarta Sans · Body

400500600700

ABCDEFGHIJKLM NOPQRSTUVWXYZ

abcdefghijklmnopqrstuvwxyz

0123456789 & @ # % →

Every semantic role in light and dark. The values Bolt would otherwise improvise per screen.
  1. 1

    Make sure the project uses shadcn/ui

    Bolt's React + Tailwind starters work well. If the project isn't shadcn-initialised yet, run npx shadcn@latest init in Bolt's terminal first.

  2. 2

    Install the token set

    Run the kit's registry command in Bolt's terminal. It writes every semantic role, light and dark, into your theme, so components already referencing bg-primary repaint without being edited.

    npx shadcn add https://identityforge.io/r/ambient-sage.json
  3. 3

    Put the brief in the repo, not the chat

    This is the step people skip. The CLI writes a full DESIGN.md into the project, so the rules survive a new chat, a reload, and the next person to open the project.

    npx --yes identityforge@latest apply ambient-sage
  4. 4

    Prompt against the system

    Now build normally, and name the constraint explicitly the first few times.

    Build a landing page using only the theme's design tokens
    and the rules in DESIGN.md. Do not add a new colour or font.

Why the repo beats the chat window

Pasting a DESIGN.md into chat works for that conversation. A file in the project is re-read whenever Bolt looks at the codebase, survives context being trimmed on a long build, and comes along if you export the project to GitHub and continue in Cursor or Claude Code. Same content, much longer half-life.

This comes up every time, and it is a reasonable instinct. The repo is the source of truth, so point the agent at it. Two things get in the way.

The first is practical: a repository is not a design system in a form an agent can apply. It is thousands of files, most of them irrelevant to a styling decision, with the actual rules distributed across a Tailwind config, a theme provider, a few CSS files and the collective memory of the team. Compilation exists precisely because something has to reduce that to tokens, a component catalogue and a set of constraints.

The second is that a repo answers *what exists* and not *what to do*. It contains a Button with five variants; it does not say which variant a destructive action gets, that you never put two accents on a screen, or what happens in dark mode on a surface that has no dark variant yet. Those are judgements, they live in prose, and if nobody wrote them down the agent will supply its own: plausibly, and differently each time.

We sampled 299 public DESIGN.md files to see how often those judgements do get written down. 76% list only preferences and never a prohibition. 69% never mention dark mode. 86% give raw hex values with no semantic role attached, which means the question "what colour is a disabled button" has no answer in the file at all.

So: link the repo if the tool supports it, and still write the rules down. What a complete file contains is in what a DESIGN.md is.

What format should you hand over?

If you are going the native route and wondering whether to give Bolt an npm package, a folder structure, or a docs link, the honest answer is that it depends which tool you are feeding, and the tools genuinely disagree:

  • Bolt compiles from your component library plus your design-system website, and re-syncs when those change.
  • v0 wants an installable package: npm, a .tgz, or a source directory with its own package.json, and will create one from looser sources if you don't have it.
  • Lovable wants React components, delivered as a dedicated Lovable project, and copies them into connected repos.
  • Coding agents want neither: they want a token file and a written brief sitting in the repo.

The only artifact all four accept is the pair every one of them reduces to anyway: a complete semantic token set, and the written rules that go with it. Producing those first costs you nothing if you later publish a package, and it is the only version that works today on a free plan.

One URL, the whole token set

The registry item at https://identityforge.io/r/<slug>.json carries every semantic role, so Bolt never improvises the values a loose palette leaves undefined: muted text, borders, hover and active states, ring, destructive, chart series, and all of them again in dark mode. Handing over three brand colours defines three values and leaves roughly twenty-five open. See semantic colour tokens explained.

Common mistakes

  • Leaving the brief in the chat. Long builds trim context. A DESIGN.md in the project does not get trimmed.
  • Assuming a pre-loaded system can be nudged toward your brand. They are read-only by design.
  • Syncing only when something looks wrong. By then Bolt has been generating from a stale snapshot for weeks.
  • Giving Bolt colours without roles. A palette cannot answer what a disabled control looks like, so Bolt picks: differently each screen.
  • Skipping dark mode. It is not an inversion of light, and it is where improvisation shows first.

Install tokens and a written brief in two commands

Every Identity Forge kit publishes a stable shadcn registry item plus a full DESIGN.md: light and dark tokens, a real font pairing, motifs and prohibitions. Both run in Bolt's terminal, and free kits need no account.

FAQ

How do I give Bolt a design system?

In Bolt's terminal, run npx shadcn add https://identityforge.io/r/<slug>.json to install a full semantic token set, then npx --yes identityforge@latest apply <slug> to write a DESIGN.md into the project. Bolt then builds every screen against your tokens and rules. The native alternative is Bolt's own design-system feature, which needs a paid Team plan to add your own.

Do I need a paid plan for Bolt design systems?

For Bolt's native feature, adding your own design system requires a paid Team plan; the pre-loaded design systems can be used by all users but cannot be updated or changed. Installing tokens and a DESIGN.md through Bolt's terminal works on any plan.

Can I bring a design system in from Figma or Git?

Bolt compiles your design system from your own sources, such as your component library and design-system website, and re-syncs when they change. What no source transfers on its own is the written judgement, which variant a destructive action gets, what never to do, how dark mode behaves. Those belong in a DESIGN.md alongside whatever you connect.

Why not just link the design system repo?

A repository is thousands of files with the rules distributed across a Tailwind config, a theme provider, CSS files and team memory, which is why compilation exists. More importantly a repo describes what exists, not what to do: it has a Button with five variants but does not say which one a destructive action gets. That judgement has to be written down or the agent supplies its own.

What format should I upload: an npm package or a folder?

It depends on the tool. Bolt compiles from a component library plus a docs site; v0 wants an installable package; Lovable wants React components as a Lovable project. The one artifact all of them reduce to is a complete semantic token set plus written rules, which is also the only version that works on a free plan today.

Can I run a CLI inside Bolt?

Yes. Bolt is a StackBlitz WebContainer with a real terminal, so npx --yes identityforge@latest apply <slug> works and writes DESIGN.md plus a tokens file into the project.

What if the project isn't using shadcn?

Run npx shadcn@latest init first, or paste the kit's exported CSS variables into your global stylesheet manually. The semantic token names are identical either way.