I spend a lot of time in my terminal. Much of this time is spent in no particular place. I’m a bit of a wanderer — a command line flâneur. Working across repositories, across hosts. SSH’d into something over here, running some agent there, tailing a log. Multiple panels, windows, but all just… text. I don’t live in a “project” so much as I move through several at once.
Every AI coding tool ignores this state.
Everybody wants to be a “harness”. Claude Code, Cursor, Codex are built to take over — claim the screen, run their TUI, become the environment you live inside while you work. A true Integrated Development Environment. An agentic coding harness is designed to point to one place: a git repository for your project. It builds its entire picture of the world from the one directory where it’s invoked. That’s fine for a codebase and a set of tasks. It’s not quite right when, like me, you’re the meandering sort.
I used Warp for awhile, then stopped, for exactly this reason. It’s a good terminal that has decided, loudly, that it wants to be an agentic development environment. But I don’t want an(other) agentic development environment. Others are competing for my attention for that purpose; it’s a complete red ocean. From time to time, while in the command line, I just need some help from a model, maybe.
And that’s why I built hmm.
hmm is a small wrapper around codex exec written in pure shell script. It’s built around the one decision that harnesses so frequently get backward: the unit of memory is the terminal session, not the current working directory.
Ask hmm something and it keeps a sticky conversation for the life of that terminal. Ask a follow-up and it lands in the same thread, keyed to the parent shell itself and explicitly not to your working directory. You can cd across the whole filesystem and you’re still talking to the same assistant about the same thing1. No git repo required.
Under the hood, hmm does almost nothing, purposefully. Codex still owns the hard parts: tools, sandboxing, approvals, model execution. It’s a minimal wrapper designed to put just a touch of interactivity into Codex’s non-interactive mode.
Why Codex
Why Codex and not Claude? Money, mostly. codex exec runs under the same ChatGPT plan I already pay for. Anthropic is increasingly battening down the hatches on anything non-interactive. Over a month ago they announced that claude -p usage would not be a part of Claude subscription plans2. I wanted my existing subscription to cover the way I actually work, not have a second meter running in the background
Quick start
Here’s what it looks like. A quoted string is the simplest form. It also reads from stdin, a heredoc, a file, or without any argument a small interactive compose box.
hmm "how do I flush DNS cache on macOS?"
hmm --write "create a tarball of this directory"
hmm --new "explain rsync include and exclude rules"
hmm --host m@my-nas "what's using the most disk?"Install it with this one-liner:
curl -fsSL https://raw.githubusercontent.com/mwunsch/hmm/main/install.sh | shYou’ll need codex and jq on your PATH. It drops hmm into ~/.local/bin along with its helpers and a man page (of course it has a man page).
It’s about as minimal as an agentic tool can get, by design. There to help you as you drift from project to project. The whittling of full-blown agentic development. Let me know what you think.
Dare I say it? It’s like Clippy in your terminal. That’s the inspiration. I’m sorry I said it.
On June 15th, the day this change was supposed to take effect, Anthropic announced they were “pausing the changes to Claude Agent SDK usage” they described. ¯\_(ツ)_/¯

