Introduction
Cherry is a terminal emulator that renders text on the GPU. The rendering pipeline runs through wgpu, which means Cherry draws glyphs via a shader instead of asking the OS compositor to blit a bitmap. The practical result is smooth rendering at high refresh rates, and the ability to apply post-processing effects like a CRT simulation directly on the terminal output.
The terminal itself speaks standard VT100/xterm escape sequences. VT parsing is handled by alacritty_terminal, the same library that powers Alacritty. Cherry adds a session layer on top: tabs, panes (horizontal and vertical splits), and a background daemon that keeps sessions alive when the window is closed.
Why Cherry exists
Most terminal emulators either focus on raw speed (Alacritty, kitty) or on session management (tmux, Zellij). Cherry tries to do both in a single binary. You get GPU rendering without needing a separate multiplexer, and the daemon persists your layout across restarts.
The other motivation is integration with coding agents. Cherry detects when a process like Claude Code or Aider is running in a pane, applies a stricter security policy to that pane, and provides shortcuts for launching agent sessions.
Architecture
Cherry is built as a Cargo workspace with three crates:
| Crate | Binary | What it does |
|---|---|---|
| cherry-core | (library) | VT parser wrapper, PTY spawning, security sanitizer, IPC protocol types, agent detection |
| cherry-app | cherry | Font pipeline, glyph atlas, GPU renderer, CRT shader, input handling, configuration, overlays |
| cherry-daemon | cherryd | Session management, tab/pane lifecycle, SQLite persistence, fleet SSH, workspaces, API server |
The app and the daemon communicate over a local IPC channel. On Linux and macOS this is a Unix domain socket. On Windows it is a named pipe. There is a TCP fallback for platforms that support neither.
The daemon owns all session state. The app is a rendering frontend that receives frame updates and sends user input back to the daemon. This split means you can close the window and reattach later without losing your sessions.
What Cherry includes
GPU rendering via wgpu, with a CRT post-processing shader that simulates scanlines, barrel distortion, phosphor glow, chromatic aberration, and film grain. The shader is enabled by default and fully configurable. Set crt_enabled = false to get a flat display.
Tabs and panes, similar to tmux. Split the window horizontally or vertically, navigate between panes, zoom a single pane to fill the window. Layouts can be defined in TOML files and applied on session creation.
A command palette (Ctrl+Shift+P) that lists every available action, with fuzzy search.
Shell integration scripts for bash, zsh, fish, and PowerShell. These emit OSC 133 markers so Cherry can track where commands start and end, and OSC 7 so Cherry knows the working directory.
Theme support with three built-in themes (cherry-dark, retro-green, retro-amber) and the ability to load custom themes from TOML files.
Agent integration that detects Claude Code, OpenCode, Aider, and Codex CLI running in panes. Agent panes get an enhanced security filter and are surfaced in a dedicated panel.
Fleet mode for managing multiple machines from one window. Cherry connects to remote hosts over SSH and opens remote panes inside the local session.
An auto-updater that checks GitHub Releases on startup and can download and apply updates per platform (AppImage replacement on Linux, DMG install on macOS, NSIS silent install on Windows).
Quick start
# Install on Debian/Ubuntu
sudo dpkg -i cherry-terminal_0.1.0-1_amd64.deb
# Launch
cherry
See Installation for all platforms.