btop-grade dashboards with a one-import API. Own the terminal directly, render only what changed, and make beautiful graphics a first-class primitive.

Captured from HQTUI's own renderer at 2x — the real frame, not a mockup.
createApp() already gives you a dark theme, truecolor with automatic fallback, mouse tracking, the alternate screen, resize handling, adaptive frame pacing, and a terminal that is restored no matter how your process dies.
import { createApp } from "@profullstack/hqtui";
const app = await createApp();
app.render(({ ui }) => {
ui.panel({ title: "Hello" }, (panel) => {
panel.text("Hello, terminal.");
});
});
await app.start();
The rendering pipeline is deliberately simple: application state, layout, widgets, framebuffer, diff, batched output. Nothing in between.
Panels, tables, trees, logs, meters, gauges, donuts, sparklines, graphs, tabs, modals, command palettes and every input control — all sized by the same layout engine, all themeable, all testable.

Nine themes ship in the box, and every one of these previews is a live frame from the renderer. Vote for your favourite — the tally lives in SQLite.

The screen is one grid of cells in four typed arrays. Nothing allocates per cell in a hot path. Frames are diffed and only the changed runs are written, merged across short clean gaps because rewriting five cells is cheaper than an escape sequence.
Changing CPU 72% to CPU 73% writes a single character.
160x50 (8,000 cells) · bun 1.4 · linux x64 · reproduce with bun run bench
| Benchmark | Mean | Output |
|---|---|---|
| Idle frame (0% changed) | 0.068 ms | no output written |
| 1% of cells changed | 0.140 ms | 627 bytes/frame |
| 10% of cells changed | 0.291 ms | 2,639 bytes/frame |
| 50% of cells changed | 0.904 ms | 8,253 bytes/frame |
| Full 160x50 repaint | 0.393 ms | 8,000 cells |
| Six-panel dashboard build | 0.425 ms | layout + widgets + diff |
The reference dashboard reads real metrics on Linux, macOS and Windows with no native dependencies, or runs a deterministic simulation so screenshots and benchmarks are reproducible.
Six screens: dashboard, components, graphics, themes, input visualizer, stress test.
