ZenTermDownload
Free · Apple Silicon
A terminal for the modern era

The terminal, designed for how you work.

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.

16/// Split orientation. `.vertical` = a | b.
17public enum SplitAxis: Sendable { case vertical, horizontal }
18
19/// Recursive pane layout. A value type.
20public indirect enum PaneNode: Sendable {
21 case leaf(PaneID)
22 case split(id: SplitID, axis: SplitAxis,
23 ratio: Double, a: PaneNode, b: PaneNode)
24}
25
26public extension PaneNode {
27 var leafIDs: [PaneID] {
Szen-termSources/PaneKitPaneNode.swift
zen-term
zen-term ❯ swift run ZenTerm
Building for debugging…
Build complete! (4.21s)
✓ ZenTerm launched
Bash(swift build)
… +6 lines
Build succeeded. Running swift test.
Test Suite 'PaneKitTests' passed.
Verifying the reconciler… (2m 14s)
▶▶ auto mode on (shift+tab to cycle)
1ZenTerm2Craftwork

editor · agent · build, one workspace

Zero mouse

Every action is a keystroke: palettes, panes, drawers, floats. Your hands stay on home row.

One theme, everything

Fifteen built-in themes, or point ZenTerm at any ghostty theme. The whole app follows: terminal, chrome, tabs, and the focus halo.

Native & fast

Built on AppKit, with libghostty rendering the terminal. It starts fast and stays light.

The tour

Your whole workspace in one window.

zen-termfeature/zen-83…
swift build
Building for debugging…
Build complete! (4.21s)
1ZenTerm2Craftwork
Search workspaces…
New Workspace…
ZenTerm
ZenTerm Website
Craftwork
Reecv
Cohaus
Drucial App
Dot Files
⏎ open⇧⏎ replace↑↓ move⎋ close
Workspaces

Your whole workspace, one keystroke.

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.

  • Editor + AI agent + dev server in one shot
  • Pinned tab names, per workspace
  • Curated by hand, never a directory scan
zen-termfeature/zen-83…
swift build
Building for debugging…
Build complete! (4.21s)
1ZenTerm2Craftwork
New Workspace
Workspace name *
Workspace name
Folder *
Click to choose, or type a path
Layout
MinimalEditor + AI + ShellCustom

Set each region yourself

Main pane
blank → plain shell
Right drawer
claude → agent
Bottom drawer
pnpm dev → server
Focus
MainRightBottom
Environment
Add variable
CancelAdd Workspace
Configurable, for everyone

As deep as you want. As simple as you need.

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.

  • Full key = value config + keybind remap
  • The same settings, in the command palette
  • Bad values clamp or fall back, so nothing crashes the app
zen-termfeature/zen-83…
swift build
Building for debugging…
Build complete! (4.21s)
1ZenTerm2Craftwork
Search commands…
Tools
Open Workspace PickerP
Add Workspace…
Open LazygitG
Drawers
Toggle Bottom DrawerB
Toggle Right Drawer\
Tabs
New TabT
Previous Tab[
⏎ run↑↓ move⎋ close
Keyboard-first

Everything's a keystroke away.

⌘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.

  • Fuzzy command palette (⌘P)
  • Drawers, floats, and tabs, all bound
  • Your TUIs keep their own keybinds
zen-termfeature/zen-83…
swift build
Building for debugging…
Build complete! (4.21s)
1ZenTerm2Craftwork
1 · Status
zen-term ↑1
3 · Branches
feature/zen-83-build-zenter…
main
4 · Commits
fa76ac0Build ZenTerm landing page
0c43ca0Scaffold landing from template
d3fcde9Add-Project form + modal slot
13523c9Workspaces: deliberate project list
Log
commit fa76ac0
Author: Drew White
Date: 2 minutes ago
Build ZenTerm landing page (ZEN-83)
Checkout: spaceNew branch: nRebase: rCancel: esc
Overlays

Summon a tool. Send it away.

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.

  • Bottom + right drawers, persistent when hidden
  • Your lazygit float opens in the pane's working directory
  • Any TUI becomes a summonable float
Neovim

One motion across Neovim splits and panes.

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.

View zen-navigator.nvim
1. Install with lazy.nvim
{ "zen-term/zen-navigator.nvim", event = "VeryLazy", opts = {} }
2. Hand ZenTerm the chord in your config
keybind = nav_left=ctrl+h
keybind = nav_down=ctrl+j
keybind = nav_up=ctrl+k
keybind = nav_right=ctrl+l
Capabilities

Built for the workflow around the text grid.

Every piece earns its place. No permanent furniture you didn't ask for: the terminal, and the few things that make it a workspace.

01

Floating-pane canvas

Terminals sit inset on a padded canvas with rounded frames, with room to breathe around each pane.

02

The focus halo

The focused pane carries an iris ring and soft glow, so you can see where the keyboard is pointed.

03

Panes that keep their shells

Split a pane in any direction and move with ⌘hjkl. Restructure the layout and your running processes stay put.

04

Zoom to focus

⌘F blows the focused pane up to fill the window, then restores your layout untouched.

05

Bring your own theme

Aim ZenTerm at any ghostty theme and one portable file colors the entire app: terminal, chrome, tabs, halo.

06

Know when an agent needs you

When ZenTerm sits in the background and an agent stops for input, a system notification pulls you back.

How it compares

Opinionated where it counts.

No knock on the classics. ZenTerm makes different bets, and this is where they show up.

ZenTermiTerm2WarpGhosttyTerminal.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 appPartial
Ghostty-compatible themes
Keyboard-first command palette
No account, no cloud
Pricing

You pay nothing for the terminal, now or later.

Core terminal, free forever

Free

Available in early access
$0forever

The full terminal, every feature on this page

Bring-your-own ghostty themes

Workspaces, drawers, and tool floats

Full config file + keybind remapping

Download

Pro

Coming later
Later

Everything in Free

Deeper app integrations

More as it gets built

Get notified

The core terminal is free forever. Pro adds deeper app integrations on top and keeps the terminal out of the paywall.

Early access

Get in early. It's free.

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.

Free early access

Now

Daily-drivable today. Get a build and help shape where it goes.

Public beta

Soon

Open to everyone, no waitlist or invite.

Integrations + Pro

Later

An optional Pro tier adds deeper app integrations.