Wortel: a native macOS terminal for coding agents

A native macOS terminal your agents can live in.

Ghostty’s engine, in a window that needs no arranging. Point five agents at one repository, each on its own branch and its own files. Quit the app and they keep working. Nothing to configure, ever.

Version 2026.34.1 · macOS 14+

Features

Sessions
Named, not numbered
Agents
Told apart at a glance
Worktrees
One repo, no collisions
Survival
Quit, and they keep going
Engine
Ghostty VT parser + Metal

A terminal you never have to arrange

One window. A sidebar of names. Several agents, none of them in each other’s way.

Wortel is a fully native macOS terminal built on Ghostty’s engine: Swift and AppKit, no web view. Open it and the work is where you left it, every session still named and still in its own directory. No tabs to count, no panes to tile.

Point it at a repository and each agent gets its own branch and its own files, with the diff of what they did beside them. None of it stops when you quit.

Free, signed and notarized, for macOS 14 Sonoma or later. Wortel is Dutch for root.

Ghostty’s engine, exactly as it ships

The terminal inside Wortel is Ghostty. Not a port of it. Not inspired by it.

Wortel embeds libghostty, so the VT parser, the Metal renderer and the glyph atlas are upstream’s, unmodified. Its own code is only the shell around them.

Which is why there is no plugin API and no theme gallery. Fonts, colours and keybinds live in a read-only file inside the app, and your ~/.config/ghostty is never read.

Sessions, not tabs

A tab is a number you have to remember. A session is a name you chose.

Name a session and it keeps the name. Put a slash in it and everything before the slash becomes a section, so twelve shells across four projects read as four groups. Names, directories and selection come back on launch.

Switching costs a single frame, because every surface stays alive inside the window.

A coding agent in every session

Hand one repository to Claude Code, another to Codex, a third to Aider, and the terminal stops being the hard part. Knowing which one needs you becomes the hard part.

Wortel reads that off the screen. Output that keeps moving is an agent working; a screen gone still is one waiting on you. Where an agent announces itself Wortel takes its word for it, and where it says nothing, which is most of them, Wortel still knows.

The sidebar marks what is working and what is waiting, a notification arrives when a background agent goes quiet, and ⌘⌥] jumps to the next one waiting. Anything still running when you quit is picked back up on the next launch.

It ships no per-agent integrations on purpose: a terminal that adapts to six agents by name is a terminal that is wrong about the seventh. A bundled wortel command sits on every session’s PATH instead, so anything that can run a command can drive the app.

Your repository, in the same window

An inspector beside the terminal, with three panes: Changes, History and Files.

Changes is the working tree file by file, with syntax-highlighted diffs and somewhere to write the commit. History is the commit list with its branch graph. Files is the project as a tree: drag a row into the terminal and the escaped path lands at your prompt.

Double-click a file in any of the three, or ⌘-click a path in the terminal, and it opens in a window of its own: source, the diff, rendered Markdown, and Quick Look for everything that is not text.

Several agents, one repository

Two agents in one checkout is two agents editing the same files. A worktree each, and the problem stops existing.

Open a session on a branch and Wortel checks it out in its own directory, with its own files, sharing the repository’s history, objects and remotes. It costs a directory rather than a clone.

So five agents work on five branches, none of them changing the ground under another mid-task, and each one’s inspector shows only its own work. The worktrees live outside the repository, where they cannot be committed by accident.

Quit the app, keep the work

Your shells are not the app’s children. They run under a small process beside it, so closing the window stops being a decision about the work.

An agent that was thinking when you quit is still thinking when you come back, and the session reattaches to the shell it already had, scrollback included. A crash is the same story. This is on by default and there is nothing to switch on.

Nothing to configure, on purpose

Wortel’s entire configuration is one read-only file inside the app. There is no settings window, and there is no dotfile.

This is the feature. A terminal you can spend an afternoon tuning is a terminal you will. Wortel chooses the font, the theme, the keybinds and the scrollback once, and treats them as finished. Font size is the one thing you can change.

Reference: the wortel command, every shortcut, and the parts underneath

Wortel
Pontueel
Wortel/Web
~/Developer/wortel/web
cd web

git log --oneline -3
0393580 Release 2026.29.11
e7a3827 Git History: harden
accordion correctness and
performance
4dfe045 Git History: render
images inline, size them, single
scroll, sticky headers

@@ -2,6 +2,14 @@
2 2 <rss xmlns:sparkle="http://www.andymatuschak.org/xm
3 3 <channel>
4 4 <title>Wortel</title>
5 + <item>
6 + <title>2026.29.11</title>
7 + <pubDate>Thu, 16 Jul 2026 13:20:24 -040
8 + <sparkle:version>2026.29.11</sparkle:ve
9 + <sparkle:shortVersionString>2026.29.11<
10 + <sparkle:minimumSystemVersion>14.0</spa
11 + <enclosure url="https://updates.wortel.
12 + </item>
5 13 <item>
6 14 <title>2026.29.10</title>
7 15 <pubDate>Thu, 16 Jul 2026 12:32:09 -040
@@ -18,13 +26,5 @@
18 26 <sparkle:minimumSystemVersion>14.0</spa
19 27 <enclosure url="https://updates.wortel.
20 28 </item>
21 - <item>
22 - <title>2026.29.8</title>

Frequently asked questions

What is Wortel?

Wortel is a fully native macOS terminal emulator built on Ghostty’s engine. It replaces tabs and splits with a sidebar of named, persistent sessions, gives each coding agent its own git worktree so several can work one repository at once, keeps those shells running after you quit the app, and ships with no configuration to maintain. A git panel, a file tree and agent activity detection are built in.

Is Wortel free?

Yes. Wortel is a free download for macOS 14 or later, and updates itself through Sparkle.

What does “Wortel” mean?

Wortel is Dutch for root: the root of a plant, and the root shell you work in.

What are the system requirements?

macOS 14 Sonoma or later. Wortel is a signed and notarized native application; the download is roughly 17 MB.

How is Wortel different from Ghostty?

Wortel runs Ghostty’s engine, so terminal behaviour, throughput and latency are the same. The difference is the app around it: Ghostty gives you tabs, splits and a large configuration file, while Wortel gives you one window, a sidebar of named sessions that persist across restarts, a git worktree per session, shells that keep running after the app quits, a built-in git and files inspector, coding-agent activity detection, and no configuration at all.

Does Wortel have tabs or split panes?

No, and that is intentional. One window holds a sidebar of named sessions; switching between them is instant, so the arranging a tab bar or a split layout exists to support is not needed. Requests for tabs, splits and the command palette are declined by the app rather than partially implemented.

Do my sessions keep running if I quit Wortel?

Yes. Shells run under a small keeper process outside the app rather than as its children, so quitting Wortel, or Wortel crashing, does not stop them. An agent that was working when you quit is still working when you launch again, and the session reattaches to the shell it already had, with the output from while you were gone. This is on by default and there is nothing to switch on.

Does Wortel read my existing shell configuration?

Your shell configuration (.zshrc, .bashrc, fish config) is yours and runs normally. It is only Wortel’s own terminal configuration that is fixed and bundled; the user-level Ghostty config file is deliberately not loaded.

How is Wortel different from herdr, tmux or Zellij?

Those are multiplexers: a background server plus a client that runs inside whatever terminal you already supply. Wortel is the terminal, and it holds sessions the same way, under a process outside the app, so quitting Wortel does not stop them. What it adds is the part a multiplexer has no window for: a git panel with diffs, history and a branch graph, a project file tree, preview windows, and a worktree per session, all beside the shell rather than in another tool.

Does Wortel work with Claude Code, Codex and Aider?

Yes. They run as ordinary shell commands in any session, with no per-agent setup and no changes to their configuration files. Beyond that, Wortel marks in the sidebar which agents are working and which are waiting, notifies you when a background agent goes quiet, jumps to the next waiting session with ⌘⌥], gives each one its own worktree so they can share a repository, keeps them running when the app is closed, and resumes agents that were still running when you last quit.

Can I configure Wortel’s fonts, colours and keybinds?

Only font size, which is adjustable per session with ⌘+ and ⌘−. Everything else is fixed: the whole configuration is a read-only file inside the app bundle, and your ~/.config/ghostty is never read. Zero configuration is the design goal, not a missing feature.

Can I run several coding agents on one repository at once?

Yes, and that is what git worktrees are for here. Opening a session on a branch checks that branch out in its own directory with its own files, sharing the repository’s history, objects and remotes, so it costs a directory rather than a clone. Each agent then edits its own files on its own branch, nothing changes the ground under a running agent, and each session’s git panel shows only that worktree’s work. A branch that already has a worktree opens the one it has, a new one forks from the repository’s default branch rather than from whichever worktree you opened it in, and the sidebar marks which rows are worktrees.

How is Wortel different from Conductor, Emdash or Superset?

Those are agent manager apps: a window holding worktrees, diffs and a review queue, with a terminal as a detail inside it. Wortel is the terminal, and the worktrees and diffs are in it. The practical difference is what happens when you quit. Wortel’s shells run under a separate process, so an agent mid-task keeps working whether or not the app is open, and everything you type is a real terminal on Ghostty’s engine rather than a box in a form.

How does Wortel know when a coding agent is waiting for me?

By watching what the session draws. A screen that keeps changing means the agent is still working; a screen that has held still past a threshold means it is waiting on you. Precise signals (OSC 9;4 progress, OSC 133 command marks, a title spinner) are used where an agent emits them, but none are required, so the rule covers Claude Code, Codex, Aider and agents that do not exist yet. Nothing is written into any agent’s configuration to make this work, and detection only runs on sessions you are not currently looking at.

Can I control Wortel from the command line or from an agent?

Yes. A wortel command ships inside the app bundle and is on the PATH of every session, with no installer and no admin prompt. It speaks to the running app over a socket: wortel open opens a preview window for a file, wortel new --branch opens a session in its own worktree, wortel rename renames the session it was run in, and wortel notify raises attention on it. That is how Wortel avoids shipping a separate integration per agent: anything that can run a command can drive it, including your own hooks and scripts.

How is Wortel different from iTerm2, Warp, Kitty or Alacritty?

Wortel has no settings UI, no plugin system, no AI chat box, no tabs and no splits. What it has instead is built around running coding agents: named shells that survive a restart and switch in one frame, a git worktree per session so several agents can work one repository at once, shells that keep running after you quit the app, a git and files inspector beside the terminal, and detection of which background agent has stopped and is waiting on you.

At a glance

Platform
macOS 14 Sonoma or later
Engine
libghostty: Ghostty’s VT parser, Metal renderer and glyph atlas
Built with
Swift, AppKit and SwiftUI, fully native
Sessions
Held by a keeper process: they outlive the app
Repositories
A git worktree per session, on its own branch
Scripting
A bundled wortel command, no installer
Price
Free
Updates
Sparkle, signed and notarized
Configuration
None: read-only and bundled
Latest version
2026.34.1 · released 2026-08-17

Download Wortel for macOS