How
Code generation only.
React-style declarative TUIs and CLI output for Rust.
github.com ↗repo ↗docs ↗HN launch ↗Rust forum announcement ↗
A code-first Rust alternative to ratatui; nothing scene would build on, only minor ideas to borrow.
Ignore it for this purpose.
iocraft is the answer for Rust developers who find ratatui's immediate mode too low-level: you write components with props, state and hooks like React, lay them out with flexbox (taffy), and get one tree that can be printed to a log, animated inline in a CLI or run as a fullscreen app on Unix and Windows. That inline/print-first design suits developer tools — which is why moonrepo's moon and proto and cachix's devenv use it — and the API is small, readable and dual-licensed MIT/Apache.
| UI as data | 3 scene 5 | Declarative macro in Rust; not serializable |
|---|---|---|
| Agent can drive it | 1 scene 5 | |
| Agent can see it | 2 scene 5 | Render-to-string for tests only |
| Small, targeted edits | 0 scene 5 | |
| Time travel | 0 scene 0 | |
| Live data rate | 2 scene 5 | No numbers; hook-driven rerender |
| Terminal native | 5 scene 5 | |
| Pixel graphics | 0 scene 4 | |
| Teaching | 1 scene 3 | |
| Maturity | 3 scene 1 | Used in production by moonrepo and devenv, small ecosystem |
| Openness | 4 scene 4 | Permissive, single-maintainer control |
iocraft scene now scene planned
Code generation only.
Same as any library: the app author builds a control channel.
Elements can be rendered to a string; otherwise screen scraping.
None from outside.
None.
Pleasant declarative Rust API, no agent surface.
React/Dioxus-style component model in Rust: an element! macro declares trees of components (View, Text, TextInput, …), #[component] functions receive props and Hooks (use_state, use_future, use_context, use_terminal_events), and the runtime re-renders on state change. Layout is flexbox via taffy. The same tree can be printed once to any output (logs, non-TTY), rendered as an inline animated region, or run fullscreen; props and context can be passed by reference to avoid cloning.
No published numbers.
Small but real adoption in Rust developer tooling.
Used by: moonrepo moon and proto (via starbase_console), cachix devenv
Actively maintained single-author project.
Releases: Every few weeks to months: v0.8.2 2026-04-28, v0.8.3 05-23, v0.8.4 07-13, v0.8.5 08-20, v0.9.0/0.9.1 09-04. · Contributors: ~27 (GitHub contributors API incl. anonymous) · Recent: ~28 commits, 26 merged PRs since 2026-07-11 (GitHub API) · Bus factor: low: ccbrown has ~194 of the commits; next human contributor 9
Rust, declarative component tree, flexbox layout, inline-or-fullscreen rendering.
Little — scene's declarative tree is data, not a macro DSL; component vocabulary overlaps.
Everything agent-facing: serializable UI, socket control, readback, streams, pixels, hot-swap, time travel.
| 1–7 | home · features · use cases · docs · changelog · under the hood · blog |
| t | light or dark |
| j k | scroll |
| g G | top · bottom |
| ? Esc | this · close |