Vertical workspaces
Each workspace shows its folder, git branch (● when there are uncommitted changes), the process running in it and how many panes it has. ⌘1…9 jumps to one. ⌘B folds the list into a rail of numbered badges.
Every project gets its own workspace, with splits, tabs and a browser beside your shell. Claude is one shortcut away: ask for a command, hand a task to the agent, and approve each step it runs.
Free · macOS, Linux and Windows · Runs on your Claude plan, an API key, or free open models.
⌘D splits the pane. ⌘⇧B opens a browser beside it.
Each workspace shows its folder, git branch (● when there are uncommitted changes), the process running in it and how many panes it has. ⌘1…9 jumps to one. ⌘B folds the list into a rail of numbered badges.
⌘D splits right, ⌘⇧D splits down. Move a pane with ⌘⇧ and an arrow, or drag it by its grip onto an edge to dock, or onto the middle to swap.
OSC 9, OSC 777 or a bell in an unfocused pane gives it a blue ring and a badge, puts the message in the sidebar and posts a macOS notification. ⌘⇧U jumps to the latest.
Each tab keeps its own split layout. ⌘T opens a terminal tab, ⌘⇧T a browser tab. Drag to reorder, double-click to rename, or turn tabs off in Settings.
⌘⇧B opens a browser split with an address bar. Links you click in the terminal open there; ⌥-click sends them to your default browser. Cookies persist across restarts.
Rebind any shortcut, remove it, or give it extra combinations. Conflicts are flagged, and ⌘/ always shows the bindings you have now.
Any script can ring its pane. md-terminal listens for the same escape sequences other terminals use, so tools like Claude Code can tell you when they're waiting on you.
Grey text finishes the command from your history first, then from a list of about 300 common commands. Built into zsh, no oh-my-zsh needed. Already use zsh-autosuggestions? md-terminal adds its list to yours.
yMistype a command and md-terminal offers the fix. It checks about 160 common slips, then one swapped or extra letter against what's on your PATH. Your own .zshrc still loads as usual.
The first launch walks you through the app with a spotlight and small animated demos. Take it again any time from Help (⌘/) or Settings.
Three shortcuts cover most of it. Each one reads where you are: the workspace, its folder, and what's on screen.
Describe it in a sentence. You get the command, a short explanation, and a warning when it would change or delete things.
One conversation per workspace. The agent proposes each shell command; you edit it, approve it, or reject it with a note. cd carries over between steps.
Reads the visible output, diagnoses the last command, and offers a command that fixes it.
The shield next to Send sets how commands are approved. It applies from the next command, and Settings has the same choice.
The agent can open a URL in the workspace's browser pane and read its text. Ask it to start the dev server and confirm the homepage renders. Page text reaches the model marked as untrusted.
For things a shell can't do, the agent can see your screen and use the mouse and keyboard. It asks once per task, lists every action, and ⌘⇧Esc stops it from any app. Turn it off in Settings.
lines in all, HTML and CSS included
bundlers. Plain Electron, xterm.js and node-pty
ways to power the AI, switchable in Settings
limit on each agent command, run apart from your shell
Pick a provider in Settings (⌘,). Commands go through the same approval card whichever one you use.
Uses the Pro or Max plan you already sign in to with Claude Code, through the Claude Agent SDK.
Paste a key in Settings, or export ANTHROPIC_API_KEY before launching.
config.json with mode 600Runs opencode and Command Code in the background over the Agent Client Protocol and rotates through models you choose.
Plain Electron with xterm.js and node-pty, no bundler. The whole app is about 1,900 lines, so you can read what it does in an afternoon.
Agent commands run non-interactively with $SHELL -lc, no TTY and a 120-second timeout, separate from the shell you're typing in.
With free models, the agent's tools are served from 127.0.0.1 on a random port with a random path per chat. The CLIs' own shell, edit and fetch tools are turned off.
Started from inside cmux or Ghostty, md-terminal strips that terminal's variables and shims, so your shells and the agent run as md-terminal.
No. By default md-terminal uses your Claude Pro or Max plan through the login you already have in Claude Code. Run claude and /login once if you haven't. An API key is optional, for paying per token instead.
No. The subscription backend runs the Agent SDK in isolation mode, with no setting sources, no built-in tools and no transcripts written to ~/.claude/projects. Your Claude Code setup stays as it is.
Only what you allow. Every command shows up as a card you can edit, approve or reject. You can let read-only commands like ls and git status run on their own, or approve everything except destructive ones like rm, sudo and force pushes.
Any model opencode or Command Code accepts, including ones you have through opencode auth login. The defaults are DeepSeek V4.1 Flash on three providers, then opencode/big-pickle and reflection/beam:free. You'll need opencode v2, and either cmd login once or a Command Code API key. An OpenCode Go key is optional too; both go in Settings → AI and are stored like the Anthropic key.
Only for computer use, where the agent sees your screen and moves the mouse. macOS asks the first time the agent tries it, and the agent asks you again once per task. Turn the feature off in Settings and it never asks.
Run claude config set --global preferredNotifChannel iterm2. Claude Code then sends OSC 9 when it's waiting, and the pane lights up even in another workspace.
macOS on Apple silicon and Intel, Linux on x64 and arm64 (AppImage or .deb), and Windows on x64 and ARM64. On Linux the default shell is your $SHELL, and on Windows it's PowerShell.
The installers aren't code-signed yet. On macOS, right-click the app and choose Open, or run xattr -dr com.apple.quarantine /Applications/md-terminal.app. On Windows, choose More info, then Run anyway when SmartScreen appears.
In ~/Library/Application Support/md-terminal/config.json: font, cursor, scrollback, shell, provider, approval mode and every shortcut binding.
Free to download for macOS, Linux and Windows, on Intel/AMD and ARM.
Apple silicon and Intel
Not notarized yet. The first time, right-click the app and choose Open.
x64 and arm64
Make the AppImage executable with chmod +x, or install the .deb with sudo apt install ./md-terminal-*.deb.
x64 and ARM64
Not code-signed yet. If SmartScreen appears, choose More info, then Run anyway.