Concepts Overview
Termless has a small, deliberate vocabulary. Once you know it, every command, API, and doc page falls into place. It is three objects and four verbs — nothing else is a concept.
The three objects
| Object | Is | Side |
|---|---|---|
| Backend | a VT-emulator implementation (xterm.js, Ghostty, vt100, …) | live |
| Terminal | a live session — Backend + PTY + buffer + a readable API | live |
| Recording | a captured session — its commands, I/O, and frames over time | captured |
Backend and Terminal are the live side: a program running right now, its output flowing into an emulator you can inspect. Recording is the captured side: that same session frozen onto a timeline you can replay, scrub, animate, and diff.
That is the entire noun vocabulary. There is no Recorder, no Viewer, no Exporter — those are verbs, not things.
The four verbs
Everything you do with a Recording is one of four verbs:
| Verb | Does | Direction |
|---|---|---|
| record | capture a Terminal into a Recording | Terminal → Recording |
| view | present a Recording (scrub / animate / web) | Recording → presentation |
| play | re-execute a Recording into a Terminal | Recording → Terminal |
| compare | diff one Recording across N backends | Recording → diff |
The same four verbs appear in the CLI (termless record, termless view, termless play, termless compare), in the library API, and in the MCP server. Learn them once.
Renderer is a strategy, not an object
Turning a terminal buffer into pixels (PNG, SVG, canvas) is done by a Renderer — but a Renderer is an internal strategy, not a fifth domain object. Both record (frame capture) and view (per-frame display) use one internally. You pick a Renderer the way you pick a backend; you never learn it as a concept. Keeping it pluggable is what lets termless target the terminal today and canvas/DOM surfaces later without moving the three objects.
Where to go next
- Backend — the emulator implementations you run against.
- Terminal — the live session and its readable surface.
- Recording — the captured session: its tracks and its formats.
For how-to material, see the Recording Sessions and Tracing Visual Bugs guides.