Skip to main content

Rust · Ratatui · product-neutral UI

Build terminal software that feels finished.

TermRock pairs terminal-native components with focus, interaction, adaptive layout, and deterministic previews—so your application can stay focused on its domain.

Flagship task storyAgent Workbench

Loading terminal preview.

Static terminal poster. Choose Run live to start the Rust demo.

Ghosttyagent-workbench/basic
Loading terminal poster…
○ loading posterNo input — rendered state only
A real Rust-owned agent workflow: panes, prompt input, overlays, and Esc behavior.

Understand

A UI capability layer, not an application framework.

TermRock owns the reusable terminal mechanics. You keep the decisions that make your product yours.

TermRock owns

  • Rendering, hit geometry, and narrow-terminal contraction
  • Focus, keyboard, pointer, and overlay interaction contracts
  • Semantic roles, density, Unicode, and non-color cues

Your application owns

  • Domain state, language, permissions, and process policy
  • Async effects, persistence, networking, and secrets
  • Projection into components and handling typed outcomes

Install

Add the crate from Git.

TermRock is pre-stable research software. Evaluate the current line, then pin the exact revision your team reviewed.

cargo add termrock --git https://github.com/tailrocks/termrock.git --rev 5283c2acf9154d0cfcd37b1ffe821c00faf90ea2

Pin the reviewed revision before sharing your application.

Installation and revision pinning →

Implement

Choose the smallest capable primitive.

  1. 01 Project domain data into stable component IDs.
  2. 02 Keep component state beside the owning screen.
  3. 03 Translate typed outcomes into application effects.

Customize

Change the system, not every widget.

Semantic roles, density, glyph capability, motion, and contrast flow through one design system. Components consume the result consistently.

use termrock::style::{Density, DesignSystem};

let system = DesignSystem::phosphor()
    .density(Density::Compact)
    .ascii();
Customize themes and capabilities →

Advanced

Compose screens without surrendering ownership.

Application patterns prove how public components fit together. They remain recipes: your application still owns data and effects.