/install pi-tui
Pi TUI
Component-based architecture (TUI/Container/Box/Text/TruncatedText/Input/Editor/Markdown/Loader/CancellableLoader/SelectList/SettingsList/Spacer/Image), overlay system, IME support, autocomplete, Kitty keyboard protocol. Differential rendering TUI framework.
Install: npm install @earendil-works/pi-tui
Use Cases
Use when building terminal UIs, interactive CLI apps, TUI editors, terminal select lists/settings panels, terminal Markdown rendering, or inline terminal images.
Core Concepts
Component Interface — All components implement render(width): string[] (each line ≤ width), handleInput?(data), invalidate?(). Each line auto-appends SGR+OSC reset; styles do not carry across lines.
Focusable Interface — Components needing IME implement a focused: boolean property and insert CURSOR_MARKER before the cursor in render. Containers with Input/Editor children must propagate focus state (otherwise IME candidate window mispositions). Hardware cursor hidden by default; enable with PI_HARDWARE_CURSOR=1.
Differential Rendering — Three strategies: first render outputs all lines, width change clears and redraws, incremental only updates changed lines. CSI 2026 synchronized output prevents flicker.
Quick Start
import { TUI, Text, Editor, ProcessTerminal, matchesKey } from "@earendil-works/pi-tui";
const tui = new TUI(new ProcessTerminal());
tui.addChild(new Text("Welcome!"));
const editor = new Editor(tui, theme);
editor.onSubmit = (text) => tui.addChild(new Text(`> ${text}`));
tui.addChild(editor);
tui.setFocus(editor);
tui.addInputListener((data) => { if (matchesKey(data, 'ctrl+c')) { tui.stop(); process.exit(0); } });
tui.start();
// TUI API: addChild/removeChild/start/stop/requestRender/setFocus/onDebug
Progressive References
Load on demand, only when needed:
- Overlays/dialogs/menus →
references/overlays.md - Component API reference →
references/components.md - Autocomplete/key detection →
references/autocomplete.md
Gotchas
- render(width) line width: each line ≤ width, otherwise TUI throws
- Styles don't span lines: auto-reset at line end, reapply styles per line for multi-line styled text
- Container IME propagation: containers with Input/Editor must implement Focusable and propagate focus
- Ctrl+C: raw mode doesn't send SIGINT, must handle via
matchesKey(data, 'ctrl+c') - Overlay focus:
unfocus({ target: component })releases to specific component,unfocus({ target: null })clears focus
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install pi-tui - 安装完成后,直接呼叫该 Skill 的名称或使用
/pi-tui触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Pi Tui 是什么?
Pi TUI — Terminal UI framework with differential rendering + synchronized output for flicker-free interactive CLIs. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 41 次。
如何安装 Pi Tui?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install pi-tui」即可一键安装,无需额外配置。
Pi Tui 是免费的吗?
是的,Pi Tui 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Pi Tui 支持哪些平台?
Pi Tui 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Pi Tui?
由 OpenLark(@openlark)开发并维护,当前版本 v1.0.0。