# What is tuil

Source: /tuil/docs/introduction/what-is-tuil
Locale: en

The system model, design principles, and intended application scope.



tuil is an application framework for terminal interfaces with a
renderer-neutral application runtime. Ink is the React compatibility renderer;
renderer applications can instead project the shared scene, semantics, input,
resize, and lifecycle contracts directly to the deterministic cell backend.
tuil supplies the services and component conventions that large terminal
products otherwise rebuild independently.

## What it owns [#what-it-owns]

* an explicit configure, initialize, mount, ready, stop, and dispose lifecycle
* typed services, commands, events, plugins, and extension points
* deterministic focus, hotkeys, input routing, overlays, and navigation
* forms, operations, workflows, persistence, and compensation
* theme tokens, variants, slots, capabilities, and live theme switching
* semantic output for resilient tests and portable component stories
* a source-owned component registry and project CLI

## What it does not own [#what-it-does-not-own]

tuil does not replace React, require an existing Ink application to migrate, or
own your domain model, data access layer, or deployment architecture. React
components built from Ink primitives remain Ink-renderer surfaces; cell-backed
applications use the explicit renderer-application boundary. Runtime services
are opt-in, and every focused package can be installed without the umbrella
package when that better fits the application.

## Design principles [#design-principles]

1. **Terminal-native.** Input, focus, layout, color depth, Unicode, images,
   alternate screen, reduced motion, and redirected output are first-class.
2. **Deterministic ownership.** Every registration has an owner and a disposer.
3. **Typed extension.** Events, services, plugins, and extension points preserve
   application-specific types.
4. **Semantic behavior.** Tests query roles, labels, and state rather than
   brittle rows and columns.
5. **Portable output.** One component story can run in a terminal, a test,
   documentation, a static snapshot, or Storybook.
6. **Source ownership.** Registry UI is installed into the application, not
   hidden behind an inflexible binary component dependency.

## Best fit [#best-fit]

tuil is designed for developer tools, operations consoles, installers,
configuration workflows, interactive agents, data explorers, and other terminal
applications whose behavior must remain maintainable after the first screen.
