A native macOS terminal built around Ghostty. Ghostty renders the text and runs the shell. ZenTerm is the app around it: floating panes, hideable drawers, and tool floats a shortcut away. Rebuild your editor, agent, and dev server in one keystroke. Keyboard-first, and yours to configure.
Free forever core. macOS 14+, Apple Silicon.
editor · agent · build, one workspace
Every action is a keystroke: palettes, panes, drawers, floats. Your hands stay on home row.
Fifteen built-in themes, or point ZenTerm at any ghostty theme. The whole app follows: terminal, chrome, tabs, and the focus halo.
Built on AppKit, with libghostty rendering the terminal. It starts fast and stays light.
A workspace is a recipe: a main program, drawer commands, focus, and the environment to inject. Press ⌘⇧P and your editor, agent, and dev server come back together, pinned by name.
Set each region yourself
Power users get a full config file and remappable keybinds. Everyone else gets the same settings in-app: build a workspace from a form, no config file to hunt through.
⌘P fuzzy-finds every action. ⌘B and ⌘\ toggle the drawers. Bind a float of your own, say lazygit on ⌘G, in one line of config. Your shell keeps every key ZenTerm doesn't reserve.
Keep a build log in the bottom drawer and an agent in the right drawer. Add your own float, like lazygit, a shortcut away. They keep running while hidden. Turn any command into a full-screen float with one line of config.
By default, ⌘hjkl moves between ZenTerm panes and Ctrl-hjkl moves between Neovim splits. zen-navigator.nvim joins them: press Ctrl-h at the edge of your splits and focus crosses into the pane beside it, then walks back again. It is the vim-tmux-navigator idea, without tmux.
{ "zen-term/zen-navigator.nvim", event = "VeryLazy", opts = {} }keybind = nav_left=ctrl+h
keybind = nav_down=ctrl+j
keybind = nav_up=ctrl+k
keybind = nav_right=ctrl+lEvery piece earns its place. No permanent furniture you didn't ask for: the terminal, and the few things that make it a workspace.
Terminals sit inset on a padded canvas with rounded frames, with room to breathe around each pane.
The focused pane carries an iris ring and soft glow, so you can see where the keyboard is pointed.
Split a pane in any direction and move with ⌘hjkl. Restructure the layout and your running processes stay put.
⌘F blows the focused pane up to fill the window, then restores your layout untouched.
Aim ZenTerm at any ghostty theme and one portable file colors the entire app: terminal, chrome, tabs, halo.
When ZenTerm sits in the background and an agent stops for input, a system notification pulls you back.
No knock on the classics. ZenTerm makes different bets, and this is where they show up.
| ZenTerm | iTerm2 | Warp | Ghostty | Terminal.app | |
|---|---|---|---|---|---|
| Floating-pane canvas + focus halo | |||||
| Hideable drawers, alive when hidden | |||||
| Summonable tool floats (any TUI) | |||||
| Workspace recipes (editor + agent + server) | Partial | ||||
| Theme colors the whole app | Partial | ||||
| Ghostty-compatible themes | |||||
| Keyboard-first command palette | |||||
| No account, no cloud |
The full terminal, every feature on this page
Bring-your-own ghostty themes
Workspaces, drawers, and tool floats
Full config file + keybind remapping
Everything in Free
Deeper app integrations
More as it gets built
The core terminal is free forever. Pro adds deeper app integrations on top and keeps the terminal out of the paywall.
ZenTerm is free in early access, and the core stays free forever. Download a build today. Drop your email for release notes as they ship.
No spam. Release notes when something ships.
Daily-drivable today. Get a build and help shape where it goes.
Open to everyone, no waitlist or invite.
An optional Pro tier adds deeper app integrations.