DEV Community

Soohwan Kim
Soohwan Kim

Posted on AI-assisted

I built a small macOS terminal that lets you take back a prompt you sent to Claude Code

lmux is a small macOS terminal I use to run a bunch of Claude Code and Codex sessions at once. The feature I reach for most is taking back a prompt I sent to the wrong session.

The layout is borrowed from cmux: workspaces in a sidebar, splits, tabs in each pane. A few people on Reddit called it "another cmux clone", which is fair at first glance, but it isn't a fork and has no cmux code. Here's what's different.

lmux with several Claude Code and Codex sessions

Taking back a prompt

When you run several Claude Code sessions side by side, sooner or later you type a prompt into the wrong one.

In lmux you hover over the prompt you sent and click ร—. Claude Code rewinds to just before that prompt, and the session keeps running. No restart. Files it already changed stay changed, so check your diff. If you click โœŽ instead, it rewinds the same way and puts the prompt back in the input so you can edit it and send it again.

Staying light

I built lmux for myself because cmux was more app than I needed. lmux is a native Swift/AppKit app on libghostty, and it's 25 MB. With 20 workspaces open it idles near 0% CPU on my M4 Pro. cmux 0.65.2 sat around 8% in the same setup. The method is in scripts/BENCH.md if you want to check it on your machine.

It makes no network calls.

The rest

  • A status ring and badge on each workspace show whether an agent is running, needs you, is done, or failed. This comes from Claude Code's hooks and from Codex. โ‡งโŒ˜J jumps to the one that's waiting.
  • Any other program can report status too, by printing an OSC 7501 escape sequence. See docs/agents.md.
  • Sessions come back after you quit, update, or reboot.
  • It reads your Ghostty config.
  • It never wraps claude or codex. To get status it adds a few hooks to settings.json, and it shows you the diff before it writes anything.
  • If you're coming from cmux, there's a one-click import.
  • Korean input works properly while composing. There are some Chinese and Japanese IME fixes too.

What I left out on purpose

No built-in browser and no SSH workspaces. Both are useful, but they're the kind of thing that made cmux feel heavy to me. I'd rather keep lmux a terminal.

Limits

It's macOS 14+ on Apple silicon only. Taking back a prompt only works with Claude Code for now.

Try it

It's free and MIT licensed. Grab the dmg from GitHub Releases, or:

brew install --cask sooftware/tap/lmux
Enter fullscreen mode Exit fullscreen mode

I'm Soohwan, an ML engineer in Seoul. If you run a bunch of agent sessions at once, I'd really like to hear what breaks, what's missing, and whether rewinding a prompt is as useful for you as it's been for me. Issues and comments both welcome.

Top comments (0)