← jiongan mu
Note · 01 Published Apr 12, 2026

Why I use Emdash.

On running multiple coding agents in parallel without losing your mind in terminal tabs, and why organization, not capability, is the feature that matters.

Quick context before I get into it: Emdash is an open-source desktop app for running multiple coding agents in parallel, each in its own Git worktree. It’s built by Arne and Raban at generalaction (YC W26), it’s provider-agnostic (works with Claude Code, Codex, Gemini, Droid, and ~20 others) and it’s local-first, meaning app state lives in a SQLite file on your machine rather than on someone’s server. You can brew install --cask emdash or grab it from GitHub releases.

Okay, onto why I actually use it.


The thing I like most about Emdash is that it’s organized.

That sounds boring, but hear me out. Before Emdash, running coding agents meant a forest of terminal tabs. One for the agent working on the bug fix. Another for the one refactoring the API. A third for “wait, what was this one doing again?” I’d lose track of which tab belonged to which task within about twenty minutes.

Emdash gives every task its own Git worktree and wraps the whole thing in a UI you can actually navigate. Switching between tasks is seamless: you click, you’re there, the state is preserved, the diffs are waiting for you. It’s the same repo, multiple workstreams, no collisions. That alone is worth it to me. Way better than juggling terminal tabs.

You can also spawn multiple agents inside a single worktree, each working on a different piece of the same feature. That’s been useful when a feature has clearly separable parts and I want them moving in parallel without fragmenting into separate branches.

What it doesn’t do (yet)

No split screen. You only see one agent at a time. If you want to watch two of them work simultaneously, you can’t; you pick one, the others run in the background.

Honestly, this bothered me less than I expected. Emdash fires off a notification and a sound when an agent finishes, with the agent’s name. So I queue up work, go do something else (read, answer email, work on something in a different worktree) and the sound pulls me back when there’s a diff to review. It turns out I don’t actually need to watch agents work. I need to know when they’re done.

That’s the loop: kick off tasks, go do other things, hear a chime, review a diff, move on.

The actual takeaway

Emdash didn’t make agents smarter. It made running them sane. The organization is the product: worktrees per task, clean switching, notifications that let you step away. For something that’s still early and missing obvious features like split screen, it’s already the tool I reach for.

The fact that it’s open source is a nice bonus. If split screen matters enough to someone, they can go build it; the repo is right there, contributions welcome.

If you’ve been running agents in terminal tabs and losing your mind, try it: emdash.sh.