# Overview
There are 3 binary hosts:
- `deft` — the scripting binary and REPL. Runs `.dft` files, exposes the
full standard library, and serves as the entry point for tests, formatting,
and the package manager.
- `retro` — a panelised development environment (editor, git, file manager,
terminal, AI chat, system monitor). Inspired by Emacs and Blender. Uses a
native rendering backend.
- `retra` — functionally identical to `retro` but pure ANSI, so it works
over bare SSH.
All TUI apps are written in Deft itself, and the same script API is
available in every host. Platform-layer stdlib functions (`pub/*`, `config/*`,
`runtime/*`, `sqlite/*`, `dialog/*`) work identically across all three.
## App Platform
Each Deft app is loaded from its own directory, runs in its own OS thread,
and owns an isolated runtime with its own VM and heap. Apps communicate
through:
- `pub/*` — broadcast topic-based events to any subscriber, in any runtime.
- `@rpc` + `rpc` — type-safe direct calls to functions exposed
by another runtime, addressed by runtime name. Available in every host.
- `config/*` — a shared, persistent, reactive key/value store.
- `runtime/*` — spawn and interact with child runtimes.
The app launcher is itself a Deft app, so you can replace or extend it to
load your own tools.
## Platforms
Currently supported:
- Linux (x86_64, aarch64)
- Raspberry Pi
The Zig codebase means macOS and Windows ports should follow with modest
effort; they are on the roadmap but not yet shipped.
## Where To Go Next
| If you want to... | Read |
|---|---|
| Get the feel of the language | Syntax and Style |
| Run your first script | Shell Scripting |
| Understand the type system | Types and Protocols |
| See the full stdlib function catalogue | Stdlib |
| Build a TUI app | TUI Overview |
| Make apps talk to each other | Pubsub, RPC |
| Embed SQLite | SQLite |
| Persist schema-typed data | Persistence |
| Save and restore app state | Persisting App State |
| Call C libraries | FFI |
| Embed Deft in a host app | Embedding |
| Understand the VM's memory model | Memory Management |
| Understand persistent collections and `<<` | Persistent Data Structures |
| Understand how text/fonts render in the TUI | Font Rendering |
| Understand string indexing, widths, and bytes | String Representation |