TypeScript · Node.js and Bun · Zireael native engine

Build terminal apps in TypeScript.

Rezi is for dashboards, control planes, internal tools, log viewers, and developer workflows where line-by-line output is not enough. It gives you layout, input, focus, routing, widgets, and tests in one framework.

Layout, focus, routing, and widgets
Native renderer through Zireael
Tests for render and input behavior
create-rezi · starship template
Rezi Starship command console demo

What It Is

A framework for programs, not just terminal output.

Terminal UIs get hard when they grow. Focus, resizing, keyboard modes, overlays, tables, forms, and tests all start to interact. Rezi keeps those concerns in one app model instead of making every project rebuild them.

import { ui } from "@rezi-ui/core";
import { createNodeApp } from "@rezi-ui/node";

const app = createNodeApp({ initialState: { count: 0 } });

app.view((state) =>
  ui.page({
    header: ui.header({ title: "Operations" }),
    body: ui.panel("Counter", [
      ui.button({
        id: "inc",
        label: String(state.count),
        onPress: () => app.update((s) => ({ count: s.count + 1 })),
      }),
    ]),
  }),
);

await app.run();

What You Get

The parts you usually end up writing are included.

Structured layout

Compose real screens with rows, columns, grids, panels, split panes, overlays, and constraint-based layout tools.

Input and focus

Route keyboard and mouse input, manage focus, and keep modal layers predictable as the app grows.

Application widgets

Use buttons, forms, tables, virtual lists, trees, dialogs, toasts, file pickers, charts, canvas, and logs.

Native renderer

Zireael handles framebuffer diffing and terminal output while application code stays in TypeScript.

Testing support

Assert rendered output, drive input, verify routing and focus, and replay captured scenarios.

Templates

create-rezi includes a small starter, a routed app template, and a larger showcase.

Create Rezi

Start small, then add structure.

Most projects should start with `minimal` or `cli-tool`. Use `starship` when you want to see the full surface area or capture a more complete demo.

npm create rezi my-app

Use Cases

Build more than command output.

Use Rezi when a CLI needs screens, navigation, forms, tables, logs, overlays, or long-running state instead of a sequence of printed lines.

Internal operations consoles
Developer workflow tools
Log and event inspection
Setup, deploy, and maintenance flows

Documentation

Learn the pieces in the order you need them.

Start with install and quickstart, then move into layout, routing, input, testing, and the widget catalog.

Open docs