How
Code generation (C/Python/Rust). No protocol or socket.
C TUI library for maximal terminals: pixels, video, planes, threads.
notcurses.com ↗repo ↗docs ↗Hacking the Planet with Notcurses (book PDF) ↗dankwiki: Notcurses (terminal performance table) ↗Rust bindings libnotcurses-sys ↗
Its graphics engineering is the reference for scene's pixel layer, but it's a C library in maintenance mode with no agent model.
Borrow from it: take a specific idea, API or format.
Notcurses is the most ambitious terminal graphics engine ever shipped: z-ordered planes with transparency composited into each frame, images and full video blitted through Sixel, Kitty or the Linux framebuffer, and a ladder of Unicode blitters (half-blocks to octants and braille) when pixels are unavailable — all thread-safe, all with 24-bit colour quantized per terminal, and measured with a published per-terminal benchmark methodology. It 'assumes the maximum and steps down', which is exactly the right stance for an agent-era terminal that wants pixels. It has a free guidebook, Python and Rust bindings, and is widely packaged across distributions (Repology).
| UI as data | 0 scene 5 | Imperative C API on planes |
|---|---|---|
| Agent can drive it | 1 scene 5 | |
| Agent can see it | 2 scene 5 | Cell readback exists but only in-process |
| Small, targeted edits | 0 scene 5 | |
| Time travel | 0 scene 0 | |
| Live data rate | 4 scene 5 | Published hundreds of FPS (old measurements) |
| Terminal native | 5 scene 5 | |
| Pixel graphics | 5 scene 4 | Sixel/Kitty/fbcon bitmaps, video, plane compositing with alpha: the richest pixel story in the group |
| Teaching | 1 scene 3 | |
| Maturity | 3 scene 1 | Stable 3.x, widely packaged, few visible production users, slowing maintenance |
| Openness | 4 scene 4 | Apache-2.0 but a one-person project |
Notcurses scene now scene planned
Code generation (C/Python/Rust). No protocol or socket.
High: C API, manual memory, app must add its own control layer.
In-process the app can read rendered cells (notcurses_at_yx, ncplane_contents); otherwise screen scraping.
None from outside.
None.
A powerful renderer with no agent story.
Notcurses abandons the X/Open Curses API: drawing happens on z-ordered ncplanes grouped into piles; notcurses_render composites planes (with transparency, blending) into a frame and rasterizes only the damage to the terminal. Cells are grapheme-cluster based with 24-bit color quantized as needed. ncvisuals load images/video (FFmpeg or OpenImageIO) and blit via the best available method — Sixel, Kitty, Linux framebuffer, or Unicode half/quadrant/sextant/octant/braille blitters. Thread safety was a design goal. Higher-level widgets (menus, readers, plots, reels, trees, selectors) are built in.
The only project in this group with a published, reproducible frame-rate methodology (notcurses-demo, three runs per terminal), though the table is from ~2019-2020 terminal versions.
Respected and widely packaged, but no prominent applications found; best known for notcurses-demo and the author's own tools (ncls, ncplayer).
Feature-complete and stable at 3.x but in maintenance mode with a single author.
Releases: Slowing: v3.0.12 2025-01-09, v3.0.13 01-11, v3.0.14 04-27, v3.0.15 04-30, v3.0.16 05-04, v3.0.17 10-28; nothing since. · Contributors: ~50 (GitHub contributors API incl. anonymous) · Recent: 0 commits and 0 merged PRs since 2026-07-11; 33 commits in the past year, last 2026-05-18 (GitHub API); 332 open issues · Bus factor: low: Nick Black has ~7,950 of the commits
Pixel layer under/over text, capability probing with cell fallbacks, compositing of layers.
Plane compositing with alpha and the pixel-protocol ladder with Unicode blitter fallbacks — Notcurses solved these years ago (in C).
Serializable UI, live agent control and readback, streams, hot-swap, time travel, modern maintenance.
| 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 |