What it is
Terminal is a native macOS app for local shells, SSH, coding agents and
the Git and system work around them. It is built on
SwiftTerm inside a SwiftUI
window, uses SwiftTerm's Metal renderer by default with a CoreText fallback,
and runs on macOS 14 or later on Apple silicon and Intel. It is a free public
beta: no account, no payment.
The problem it solves
A lot of terminal time is now spent running coding agents — Claude Code,
Codex, Grok — next to ordinary shells, git, SSH and TUIs. Those agents run
against usage windows that reset on a schedule, and the only way to know how
much is left is usually to ask the agent or open a browser tab. Terminal keeps
that number in the status bar while the window is on screen, and notifies you
when an agent you are not watching goes quiet.
The rule the project holds itself to: the agent features are the wedge, but the
floor is a terminal you would keep as a daily driver anyway.
Features
- Native chrome. Tabs live in the macOS titlebar — one row of chrome, not
two. Splits right and down, each pane with its own live process; close order
is pane, then tab, then window.
- Agent launch profiles for Claude Code, Codex, Grok, Cursor Agent, Kimi
Code and OpenCode, plus custom profiles (executable, arguments, environment,
icon, font size).
- Live usage windows for Claude, Codex, Grok and Kimi, read from the CLI
login already on your Mac and the provider's own endpoint. Cursor Agent and
OpenCode launch, but no quota numbers are invented where no individual
endpoint exists.
- Attention alerts when an unfocused agent goes quiet, and CPU/memory for
the agent's whole process tree, including MCP servers.
- SSH hosts from
~/.ssh/config in the menu and palette, without
installing anything on the remote host.
- Persistent sessions backed by tmux (needs tmux on
PATH).
- Git context: branch, dirty state and ahead/behind in the status bar;
local identity editing without touching
~/.gitconfig; pull requests through
your own gh.
- Command palette, scrollback search, OSC 133 prompt marks, file paths
that open in your editor, and a JSON viewer for selected text.
- 22 themes (11 dark, 11 light), each with a full 16-colour ANSI palette and
its measured WCAG foreground contrast shown in Settings.
- System tools: a process monitor, machine telemetry in the status bar, and
an on-demand System Data inventory with guarded reclaim.
Secrets and privacy
- Environment secrets live in the macOS Keychain and are injected into new
shells on opt-in. Names that could hijack process execution —
PATH,
SHELL, HOME, DYLD_*, LD_* and similar — are rejected.
- Privacy Mode excludes the window from screen capture and redacts the
titlebar, path and status bar.
- Live redaction is a separate opt-in because it rewrites the PTY byte
stream before it reaches the emulator. Replacement lengths differ from the
originals, so it can disturb the layout of cursor-addressed TUIs, and it says
so.
- Agents, SSH and editors launch as argument arrays, never interpolated shell
strings. Usage data comes from providers; nothing is sent to the author.
Honest limits
- EDR is for presentation, not grid text. SwiftTerm rasterises glyphs into
an 8-bit sRGB atlas, so the extended-dynamic-range work lifts the caret,
selection and opted-in palettes, not individual cells.
- Live usage needs the network and an existing CLI login.
- No App Sandbox: the shell needs real file-system and process access.
Stack
Swift 6, SwiftUI and AppKit, SwiftTerm (Metal / CoreText), XcodeGen. The repo
also contains a standalone PTY → VT parser → cell grid → Metal pipeline with
its own tests; it is kept as research and is not the app's display path.