The UI language your AI agent gets right
Slint is an LLM-friendly UI language,
and the only one that compiles to native code.
Model Context Protocol · works with Claude Code, Codex, Cursor & any MCP client
A closed loop
Your agent iterates like a developer
The agent writes .slint, runs it, sees it, drives it, and fixes it.
Not generate-and-pray.
no compile step — hot reload swaps changed .slint instantly, even in Rust apps
export component Settings inherits Window { VerticalBox { Text { text: "Brightness"; } Slider { value: 40; } CheckBox { text: "Dark mode"; } } }
the running app — what the agent sees & verifies
Capabilities
What an assistant can do with a running app
Inspect
- List windows & properties
- Walk the element & a11y tree
- Read role, label, value, geometry
- Query by id, type, or role
Act
- Click & invoke a11y actions
- Type & dispatch keyboard events
- Drag sliders, handles, scroll areas
- Set an element's value directly
Verify
- Screenshots rendered inline
- Record input & window events
- Confirm each interaction landed
- Same path a screen reader sees
The edge
Why models write better Slint than React
Declarative & token-light
Describes what the UI is, not how to mutate it.
Fewer tokens, fewer hallucinated bugs than imperative JSX + hooks.
One source of truth
Layout, style and state bindings live in one file the model holds in context;
not scattered across six packages.
Self-correcting loop
The LSP flags syntax, binding loops and lint errors as the model types; hot reload shows the result with no compile step — so the agent fixes itself before you ever see it.
Targets others can't reach
The same prompt yields an embedded + desktop + mobile app;
not just one more web page.
Straight from a design
Point the Figma MCP at your file — or drop a screenshot into Claude or Codex — and the agent builds it as real Slint: a native app for embedded, desktop, mobile and web, not a throwaway web mock.
Works with your AI agent
Bring your own agent
Standard Model Context Protocol over HTTP — no proprietary lock-in.
Install the Slint Skill in Claude Code, Codex or Cursor and it sets your assistant up for every language Slint supports — Rust, C++, Python and JavaScript.
Compounding advantage
We feed the models
Every lever that makes the next model fluent in Slint
and your agent productive today.
Machine-readable docs index
Scaffold · run · validate
Thousands of permissive snippets
Enable it
One feature flag, one env var
Build Slint with the mcp feature and set a port. With nothing set, there is zero runtime overhead. Runs headless in CI too — the agent still screenshots and verifies without a display.
# dev & testing only — binds to localhost, validates origins SLINT_MCP_PORT=8080 ./your-slint-app # CI, containers, sandboxes — no display server needed SLINT_MCP_PORT=8080 SLINT_BACKEND=headless ./your-slint-app
Frequently asked
What is the Slint MCP server?
An embedded Model Context Protocol server, part of Slint's testing backend, that lets MCP-compatible AI assistants inspect and interact with a running Slint application over local HTTP.
Which AI assistants can I use?
Any MCP-compatible client, such as Claude Code. It's the standard protocol, so it's not tied to a single vendor.
Is it safe to expose?
It binds to localhost only and validates request origins. It's intended for development and testing, not production deployment.
Does it work in CI or headless?
Yes. Run with SLINT_BACKEND=headless — in CI, a container or a sandbox — and the agent still drives the app and captures screenshots without a display server.
Do I need to write Rust?
No. The MCP server and the Slint Skill work the same across Rust, C++, Python and JavaScript — the agent generates .slint and your app's language stays your choice.
Close the loop
Point your agent at Slint.
Generate native UI that runs on embedded, desktop, mobile and web — and verifies itself.