A lightweight macOS terminal with vertical tabs, session persistence, and native UI
See the codeA lightweight macOS terminal with vertical tabs, session persistence, and native UI. Built on libghostty.

[!NOTE] This project is unrelated to MacTerm, a pre-existing macOS terminal emulator that shares the name.
macterm command drives the running app, so scripts and AI agents can spawn panes, run commands, and script layouts. macterm skills prints skills that teach a coding agent to use it.brew install --cask thdxg/tap/macterm
The cask strips the Gatekeeper quarantine attribute on install, so the app launches without extra prompts.
Download the latest .dmg from Releases, open it, and drag Macterm to Applications. Since the app isn't signed with an Apple Developer certificate, clear the quarantine flag once:
xattr -cr /Applications/Macterm.app
Sparkle handles updates from there, verifying an EdDSA signature on each one — so you won't need xattr again.
Macterm reads your Ghostty config from the same locations Ghostty does (~/.config/ghostty/config or ~/Library/Application Support/com.mitchellh.ghostty/config), so an existing setup carries over unchanged. Every key is documented in the Ghostty option reference. A minimal config looks like this:
theme = catppuccin-mocha
font-family = JetBrains Mono
font-size = 14
Macterm's defaults differ from Ghostty's for a few keys (theme, font size, padding, macos-option-as-alt, and tab-inherit-working-directory = false so new tabs open at the project root). They are loaded before your config, so any key you set wins. The full list is defaultsBody in MactermConfig.swift.
Macterm's own settings — window opacity, sidebar behavior, quick-terminal size, keymaps — live in Macterm → Settings. See the configuration docs for the full precedence order and the few chrome keys Macterm overrides.
Workflows and recipes from the community — the layouts, keybinds, and scripts people actually run to get more out of Macterm. Three to start with: one ⌃hjkl chord that moves between nvim's splits and Macterm's panes, driving an interactive program from a script, and giving a coding agent control of Macterm.
Got a recipe of your own? Start a Cookbook topic — anyone can post, and anyone can borrow.
See CONTRIBUTING.md for setup, build, and PR guidelines.
MIT
Swift
90.5%
Shell
3.4%
Python
3.0%
JavaScript
1.3%
A lightweight macOS terminal with vertical tabs, session persistence, and native UI
See the codeA lightweight macOS terminal with vertical tabs, session persistence, and native UI. Built on libghostty.

[!NOTE] This project is unrelated to MacTerm, a pre-existing macOS terminal emulator that shares the name.
macterm command drives the running app, so scripts and AI agents can spawn panes, run commands, and script layouts. macterm skills prints skills that teach a coding agent to use it.brew install --cask thdxg/tap/macterm
The cask strips the Gatekeeper quarantine attribute on install, so the app launches without extra prompts.
Download the latest .dmg from Releases, open it, and drag Macterm to Applications. Since the app isn't signed with an Apple Developer certificate, clear the quarantine flag once:
xattr -cr /Applications/Macterm.app
Sparkle handles updates from there, verifying an EdDSA signature on each one — so you won't need xattr again.
Macterm reads your Ghostty config from the same locations Ghostty does (~/.config/ghostty/config or ~/Library/Application Support/com.mitchellh.ghostty/config), so an existing setup carries over unchanged. Every key is documented in the Ghostty option reference. A minimal config looks like this:
theme = catppuccin-mocha
font-family = JetBrains Mono
font-size = 14
Macterm's defaults differ from Ghostty's for a few keys (theme, font size, padding, macos-option-as-alt, and tab-inherit-working-directory = false so new tabs open at the project root). They are loaded before your config, so any key you set wins. The full list is defaultsBody in MactermConfig.swift.
Macterm's own settings — window opacity, sidebar behavior, quick-terminal size, keymaps — live in Macterm → Settings. See the configuration docs for the full precedence order and the few chrome keys Macterm overrides.
Workflows and recipes from the community — the layouts, keybinds, and scripts people actually run to get more out of Macterm. Three to start with: one ⌃hjkl chord that moves between nvim's splits and Macterm's panes, driving an interactive program from a script, and giving a coding agent control of Macterm.
Got a recipe of your own? Start a Cookbook topic — anyone can post, and anyone can borrow.
See CONTRIBUTING.md for setup, build, and PR guidelines.
MIT
Swift
90.5%
Shell
3.4%
Python
3.0%
JavaScript
1.3%