I have used git every working day for the better part of a decade and I still cannot reliably remember the incantation for “undo the last commit but keep my changes staged.” I have a tab open in my browser for it. I have it written on a sticky note that has fallen behind my desk. I have, on more than one occasion, just guessed.
I wanted a way to look it up without leaving the terminal. That is what Cheetos is for.
It’s a small macOS menu bar app that holds your cheat sheets - vim, tmux, git, docker, kubectl, ssh, curl, find/grep, bash, brew out of the box - and surfaces them with a global hotkey from anywhere. Click a command, it’s on your clipboard. Hit esc, the window’s gone.
Looking up a command
Press your hotkey (or click the menu bar icon). A floating panel appears with a search box. Type a few characters - commit amend, tmux split, kubectl logs - and the matches highlight across every sheet. The top match shows up in a banner; press ↩ and the command is copied and the panel disappears. Total interaction time: about a second.
If you’d rather browse, the sidebar lists every sheet. Pick one, scroll, click any backticked command to copy it. ⌘1–⌘9 jumps you between sheets. ⌘F focuses the search box. ⌘, opens settings inline.
Why a native menu bar app
Looking up a command in a browser means leaving the terminal and finding the right tab. I wanted a shortcut that brought the command straight up.
Menu bar apps are the right shape for this. They’re always running, always one shortcut away, and they get out of the way the instant you stop looking at them. The window is an NSPanel - floating, non-activating - so it appears over whatever you’re doing without stealing focus, and hides as soon as you click elsewhere.
The dock icon is suppressed (LSUIElement = true), so Cheetos doesn’t clutter your ⌘-tab switcher.
Your sheets, not mine
The bundled sheets are a starting point. You can add the commands you need and hide the sheets you rarely use.
Drop any .md file into ~/.cheetos/ and it shows up in the sidebar. The filename becomes the id, the title is derived from it (docker-compose.md → “Docker Compose”). Edit the file, save it, and Cheetos picks up the change immediately - it watches the directory with DispatchSource and rebuilds the library when anything inside changes.
You can also hide bundled sheets you don’t use. Right-click in the sidebar, click the eye-slash, done. The sheet stops appearing in search, the sidebar, and the quick-action banner until you bring it back.
The sidebar reorders itself by usage too. Sheets you reach for often float to the top; the ones you forgot you had drift down.
The markdown subset
Cheetos renders a deliberately tiny subset of markdown - the parts that matter for cheat sheets:
#,##,###headings to structure a sheet-bullets, where lines like- `cmd` — descriptionrender as a copyable command pill next to the description- Fenced code blocks with a copy button on each one
`inline code`becomes a clickable pill>block quotes for the occasional warning- Search highlights match in titles, descriptions, and commands
Images, tables, links, and custom themes aren’t supported. Keeping to this subset let me write the renderer in a few hundred lines of SwiftUI.
A few small things that took a while
The quick-action banner is one of those. When you type a search, the top match doesn’t just highlight, it gets pulled out into a banner at the top of the panel that says “press ↩ to copy git commit --amend.” If you don’t even bother reading the rest of the results, the right answer is one keystroke away. Most of the time it is exactly what you wanted.
The global hotkey is another. It uses Carbon’s RegisterEventHotKey because that’s still the right way to register a system-wide shortcut on macOS, even in 2026. The toggle behaviour - hotkey opens it, hotkey closes it, esc closes it, click-away closes it - turns out to require thinking about every combination of “is the panel open, is it focused, is something else active” that you might be in.
And the bit where clicking on a backticked command in the rendered markdown copies it. That’s a Button inside an AttributedString inside a Text, and getting it to look like a pill in the body of a paragraph - without the layout breaking, without focus rings appearing in odd places, without dragging on the cursor change - is the kind of thing that takes an evening for one feature.
Try it
Grab the latest build from github.com/tuckerwales/cheetos/releases, or check out the source - ./build-app.sh produces a Cheetos.app. macOS 14+.
To add your own commands, put a Markdown file in ~/.cheetos/ and choose a hotkey in settings.