Ship the new pricing page and tell the team.
EngineDescribe a feeling, get a theme — try the Studio
One spec in. A whole design system out.
Mlola derives every colour, radius, shadow and spring from a single theme spec, and proves the contrast of each pairing before it ships. The scene here is made of real components, moving on their own springs while one theme glides into the next.
npx mlola-ui init- Components
- 105
- Templates
- 12
- Runtime deps
- 0
- Contrast
- AA, proven
Launch assistant
Planning the release
Checkout conversion
3.9%+0.9 pts
Deploying pricing
“Show me this week’s revenue, and anything I should act on.”
Composing…
Every pixel above is a Mlola component, themed by the same tokens as the rest of this page. Open Generative UI in the docs
AI-native, down to the last token.
Chat, reasoning, tool calls, voice and usage, built on the same tokens and behaviour contract as every button. Bring any model; with Pro, each piece is yours to copy and edit.
Chat, end to end
Reasoning, tool calls, streamed answers and sources. Type to try it.
Voice
An orb and a wave driven by a live audio meter.
A face for state
The Bot morphs on springs, follows your pointer, and wears your brand.
Usage, at a glance
Activity Heatmap: quantile shading, a keyboard grid, hover detail.
10.4M tokens
101 active days
Mon
Wed
Fri
Mlola Pro templates
All 12 templatesWhole products, ready to ship.
An AI console, a CRM, a mail client, scheduling, a support desk and more — every screen built from the same components, working, not mocked up.
An IDE, assembled from components.
Files with git status, tabs, diffs and a terminal that speaks ANSI, all themed by the same tokens. The window below is nothing but library components.
| 1 | 1 | export function textOn(surface: Oklch, seed: Oklch) { |
| 2 | removed const text = { ...seed, l: surface.l > 0.6 ? 0.35 : 0.85 }; | |
| 2 | added let text = { ...seed, l: surface.l > 0.6 ? 0.35 : 0.85 }; | |
| 3 | added // Walk lightness until the pair clears WCAG AA. | |
| 4 | added while (contrast(text, surface) < 4.5) text = step(text, surface); | |
| 3 | 5 | return text; |
| 4 | 6 | } |
npm testOne component tree. Five characters.
A theme moves type, geometry, density, depth, motion and texture together, so the same markup reads as a different product. Semantics and behaviour never change.
Create project
Deploy a new app in one step.
Framework
Revenue
$
API requests
Storage
Built to outlast the framework of the year.
Plain CSS, owned behaviour and a contract a person or a model can read.
Zero runtime dependencies
Native CSS and behaviour Mlola owns. React is one way to consume it; the stylesheet works in any stack.
A real theme engine
Eight expression channels derive radius, depth, motion and type together. Themes are coherent, not palette swaps.
Accessible by default
Keyboard paths, focus, reduced motion, forced colours and WCAG AA contrast are tested gates, not promises.
Readable by AI agents
Every component ships a machine-readable contract and an agents.md guide, so coding agents write correct markup.
Copy, don’t install
npx mlola-ui add copies the source into your project. You own every line and can change any of it.
Motion with physics
Spring easings derived from each theme. Interruptible, and calm when the user asks for reduced motion.
105 components, ready today.
Every card below is the live component, rendered with the theme you have selected.
- AccordionLayout
- Activity HeatmapData display
- AlertFeedback
- App ShellLayout
- AvatarData display
- BadgeData display
- Bar ChartCharts
- Block EditorEditor
- BotVoice & presence
- BreadcrumbNavigation
- ButtonActions
- CalendarForms
Start in a minute.
Initialise once, then add components as you need them. The source lands in your repo.
- 1Set up your project
npx mlola-ui init - 2Add a component
npx mlola-ui add button card input - 3Pick a theme
<html data-theme="graphite">