Tools

software I recommend — nothing here is required by anything else on this site · updated 2026-10-06

Sharper defaults each one replaces something you already type

fdfind with the arguments the other way round — pattern first, path optional — and it reads .gitignore without being asked. The same trade rg makes against grep, made on the other half of the job.
batcat with syntax highlighting and line numbers, which is what turns a file.ts:42 from an agent into something you check in one command. Also one of the three renderers herdr-file-viewer on Plugins picks up on sight.
delta
git-delta
A pager for git diff, and the one tool on this page that installing does not switch on. It has to be wired in — git config --global core.pager delta and git config --global interactive.diffFilter "delta --color-only" — or the binary sits on PATH while every diff still comes out of the default pager. The exception is herdr-file-viewer, which looks for it by name and needs no git config to use it.
hunkThe same diff as a review UI rather than a scroll: a sidebar of the changed files, split or stacked panes, --watch to reload as the tree moves under you. Nothing to wire — hunk diff and hunk show stand on their own. Here for the changeset you did not write: hunk skill path prints a skill file it installs nowhere, and an agent pointed at it drives the open session over a local daemon, leaving its notes on the line they are about instead of in chat scrollback.
icdiffdiff side by side and in colour, for the comparison git diff does not cover: two files that were never in the same repository.
daseljq for the formats jq will not read — YAML, TOML, XML, CSV — under one query syntax rather than four tools. Named here because agent config has drifted to TOML (~/.codex/config.toml is where Codex keeps its plugins), and node cannot parse that at all: this site's own generator shells out to a CLI to read it.
glowRenders markdown in the terminal. Several skills' entire deliverable is a .md written into the repo — research, learn-tw — and cat on one of those hands you the source rather than the document. It is also the markdown renderer herdr-file-viewer on Plugins looks for.
tspin
tailspin
Colours a log by what its fields are — timestamps, levels, paths, numbers — with no config and no per-format rules to write. tspin file.log, or pipe into it.
aria2c
aria2
curl -O for a download big enough to care about: it opens several connections at once, and it resumes instead of starting over. Here rather than in a general list of downloaders because of one flag — yt-dlp --downloader aria2c hands it every fragment of a video, and yt-dlp is already the route the rules take for anything on YouTube.

New verbs nothing you already have does these

fzfFuzzy-picks from any list on stdin and prints what you chose, which makes it a filter and not an application: git branch | fzf is the whole idea. Its shell bindings put the same picker on Ctrl-R.
yaziA file manager in the terminal, with previews. The case for it over ls is a tree you do not know yet — an unfamiliar repo, or a skill's references/ directory when you are deciding whether it is worth reading.
jj
jujutsu
A different version control model driving the same git repository: no staging area, every change amendable, conflicts recorded in a commit instead of blocking one. Worth a look next to the worktree rules the other pages assume, which exist largely to keep parallel work from colliding inside git's model.
git-filter-repoRewrites history across every ref — the supported answer to a key committed six months ago. Not an alternative to git filter-branch so much as its replacement: git's own documentation deprecates that one and points here.
httpiecurl for the case where you are reading the response rather than piping it — JSON parsed and coloured by default, and a request syntax that is http POST url key=value instead of four flags.
trivyScans a repository, an image or a filesystem for known vulnerabilities, misconfiguration and committed secrets. The local counterpart to two skills on Skills — code-security-audit and env-secret-scanner — which read the code rather than check it against a database.
moshssh that survives the link dropping and the lid closing, because the session lives on the server rather than in the connection. The same problem herdr solves one layer up, for the layer underneath it.
timeout
coreutils
macOS ships no timeout whatsoever, so an agent that writes timeout 30 pnpm test — a reasonable thing to write — gets command not found on a fresh Mac. That is the prerequisites page's argument in its loud form, which is why this row is the mildest thing here. Homebrew links the handful macOS genuinely lacks under their real names (timeout, nproc, shuf, tac) and everything else under a g prefix, so gdate and gsort take GNU flags while BSD date and sort stay exactly as they were. Nothing is shadowed unless you ask: that needs $(brew --prefix coreutils)/libexec/gnubin on PATH, and it is worth knowing that a script which then works for you fails for everyone without that line.
memex
nicosuave/tap/memex
Indexes the session logs Claude Code, Codex, Cursor and Copilot are already writing, and searches them: memex search, or memex tui to read one back. The question it answers is the one scrollback cannot — which session was it where this was decided, and what was the reasoning — and on a machine running as many agents as the rest of this site describes, that history is the only record of half the decisions in it. memex setup then installs a memex-search skill into whichever agents you pick, which makes this the one row on the page that installs something for the agent rather than for you. The index is built by memex index and is empty until it runs.
mitmproxyShows every request a program makes, and lets you stop one, edit it, replay it. Point an agent CLI through it and "what is this thing sending" stops being a question of trust and becomes something you read. A cask rather than a formula, and HTTPS needs its certificate trusted — mitm.it, reachable only while the proxy is running — or you get the connections with none of their contents. This reads what a program is sending; deciding whether it may send it at all is LuLu, on prerequisites.
tailscale
tailscale-app
Puts your machines on one private network — WireGuard underneath, but the part that matters is that there is nothing to configure: each device gets a stable 100.x address and a name (<host>.<tailnet>.ts.net), and reaches the others through NAT, café wifi and a phone tether alike. The case for it here is the second machine: work runs on the desk, and the laptop that wants to read it is elsewhere. tailscale serve then hands a local port to the rest of the tailnet over HTTPS, which is how what an agent just built on localhost:3000 opens on a phone with no deploy, no tunnel service and no port forwarded on the router. Two things to be deliberate about: every device is joined as you, so adding one grants it that reach until you remove it from the admin console, and tailscale funnel is the one subcommand that publishes to the open internet rather than the tailnet — a different decision wearing an adjacent name. The daemon has to be running and signed in before any of it works; tailscale status is the check. Free on the Personal plan, which is the one a machine or three of your own sits inside; a team is a paid plan.
cliclickMoves the pointer and presses keys as real macOS events, which is the layer underneath the browser automation on Skills: ego-browser and agent-browser drive the page and stop at the edge of the window, and a native file picker or permission sheet is on the other side of that edge. Needs Accessibility permission for whichever terminal calls it — granted once, in System Settings, to the terminal and not to cliclick.
ZoomIt
microsoft/sysinternalstap/zoomit
Zooms into the running screen and lets you draw on it — the Sysinternals utility, rebuilt for macOS by Microsoft rather than ported. Ctrl+4 magnifies live, Ctrl+2 annotates at 1x, and neither is something the built-in screenshot tool does: that one freezes a rectangle and hands it to Preview. The row is here for one subcommand more than the demo work — Ctrl+Option+6 OCRs a screen region straight to the clipboard, which turns "paste a screenshot of this error into the agent" into pasting the text, and text is what the agent was going to have to reconstruct anyway. A cask from a tap of its own, macOS 14 or later, and nothing captures until Screen Recording permission is granted.
espansoTypes the rest for you: a short trigger becomes a long block, anywhere text goes in. A shell alias does the same trick and stops at the edge of the terminal — this one reaches the browser textarea you paste prompts into, the issue box, the commit message. That is the case for it here: the standing preamble you retype at every fresh session becomes a file rather than something you remember, under ~/Library/Application Support/espanso/match/ as YAML. It is a service, so a fresh install expands nothing until espanso service register and espanso start — espanso status is how you find out which side of that you are on.
deeplx
owo-network/brew/deeplx
Serves a DeepL-shaped translation endpoint on localhost:1188, which turns a translation step into an HTTP call to a process on this machine rather than a key and a per-character bill. Here for translation work you wire up yourself — nothing on Skills calls it today. It is a daemon, not a one-shot command: it has to be running before anything can call it.
hfThe Hugging Face Hub as a command — hf download for weights, and hf upload the other way. The subcommand that earns it a row here is hf skills: hf skills list reads a marketplace of skills for AI assistants and hf skills add installs one, which is this site's whole subject arriving from somewhere else entirely. Worth knowing before you conclude that Skills and its install.sh are the only shape this problem has.
Upscayl
upscayl
Enlarges an image on this machine instead of asking for it to be generated again bigger — Real-ESRGAN through Vulkan, with an open backend, so it is your GPU and no key. The row above this page's image work rather than beside it: what comes back from an image model is whatever size that model emits, and the second pass costs a second generation. Two things to keep straight — it wants a Vulkan-capable GPU, and it does not recover detail, it invents plausible detail. Fine for how something looks, wrong for reading anything back off a screenshot as evidence. A window, not a command.
ImageOptim
imageoptim
Drag images in, get the same images back smaller — lossless recompression, and every piece of metadata stripped on the way through. The second half is the one to care about here: a screenshot carries where it was taken and what took it, and screenshots are what you attach to issues and paste into prompts. Repository weight is the lesser argument, though it is real — an image committed once is downloaded by every clone forever.
tldraw offline
tldraw
An infinite canvas that opens with no account and no network, and saves to a file on disk — which makes a diagram something a repository can hold rather than something living in a workspace someone else administers. It has a row on Bundles already, and this is deliberately not that row: there it is listed for what its Install Agent Skills menu item writes into your agent directories, and here for the canvas by itself. You can install it, never touch that menu item, and still have got the better end of the deal — sketching the shape of a thing before asking an agent to build it is the step that most often turns out to be the whole design.
jupyter lab
jupyterlab
A notebook is the one thing an agent writes here that nothing else on this machine will run: an editor shows you the JSON, and python on its own will not execute a cell. This is what does. The case for it is narrower than "use notebooks" — it is that checking numeric work by re-running the cell that produced it is a different and better check than reading the diff that produced it.
IP Scanner
the Mac App StorePaid
Lists every device answering on the network you are on, with names and icons you can set so the list stays readable between scans, plus ping, port scan and Wake-on-LAN. macOS gives you arp -a and a table of numbers. The use that earns the row is the one that arrives with the second machine — a laptop, a mini, a phone running something you need to reach — and the question of which address it took today, which the tailscale row above only answers for the machines you put on a tailnet. Scanning is local, with no account behind it. Free up to fifteen devices a scan; past that it is a one-time purchase, and it is on the App Store rather than Homebrew.
NepTunes
the Mac App Store
Scrobbles what Music or Spotify is playing to Last.fm and puts the track in the menu bar. This one has nothing to do with agents, and it is here for the same reason as everything else on the page: it is installed, it does one thing nothing else on the machine does, and a list that only admitted work software would be a less honest description of this machine. Free, on the App Store.
Unclutter
unclutterPaid
Pull down from the top edge of the screen and three drawers come with it: clipboard history, loose files, and notes. The first is the one macOS still has no answer to — a copy is gone the moment the next copy happens, and the thing you lose that way is usually a token, a URL or an error you were about to paste somewhere. A one-time purchase, with a trial first.
RunCat Neo
the Mac App Store
A cat runs in the menu bar, faster the harder the CPU is working. It reads as a toy and earns its row on one thing: an agent working in a pane you are not looking at is indistinguishable from an agent that has stopped, and this answers that without opening Activity Monitor or switching to the pane at all. From the author of RunCat, and the one row on this page with no Homebrew line — it is on the App Store only.
TG Pro
tg-proPaid
Temperatures for every sensor in the machine, and the fans, which macOS exposes no control over at all. The row above answers whether an agent is still working; this one answers whether the machine is still working at full speed, and those are different questions — a long run does not fail when it gets hot, it silently slows down, and Activity Monitor reports the load without ever mentioning the reason. Reading the sensors needs nothing; setting a fan curve installs a privileged helper — com.tunabellysoftware.TGFanHelper, under /Library/PrivilegedHelperTools — behind an admin prompt the first time. Half the application does not apply to a MacBook Air, which has no fans to control. A one-time licence, with a trial before it.
Thaw
thaw
Hides menu bar items behind one icon, which stops being cosmetic once a machine is set up the way these pages describe: every agent monitor is another item, and on a notched MacBook the bar runs out of room before the items do. Named rather than Ice, which is the better-known program and the one this is a fork of — the fork exists because the original appears to have stopped, and it is the one keeping up with macOS releases. It wants macOS 26 or later, so on anything older Ice is still the answer.

Mac apps something you already have answers each of these; these are the better answer

Rectangle
rectangle
Windows to halves, quarters and thirds from the keyboard, or by throwing them at an edge. macOS 15 added tiling of its own, which makes this the row on the page whose case has genuinely weakened — take it if you want a shortcut per position rather than a drag, and skip it if the built-in tiling already covers what you do. The setup that makes it pay is the one these pages describe anyway: an agent in one pane, the app it is editing in another, and the diff in a third. Free and open source; the Rectangle Pro sold beside it is a separate application with a licence of its own, not this one asking to be upgraded.
KeepingYouAwake
keepingyouawake
Stops the machine sleeping, from a menu bar icon, for a duration you pick. macOS already ships caffeinate and it costs nothing, so the honest case for this is not capability but the ending: a terminal you left running caffeinate -d in is a terminal you will close and forget, and a long agent run that dies because the lid closed is a run you have to start again. Click on, click off, and the icon is the reminder that it is still on.
Keka
keka
Archive Utility opens .zip and stops. This opens .7z, .rar, .tar.zst and the rest of what arrives from a Windows machine or a release page, and it writes encrypted archives with a password rather than an unprotected zip beside a message saying what the password is. A double-click tool, which is the point — the command-line equivalents are already on this machine and are not what you reach for at the moment a download finishes. Free from keka.io, which is what the cask installs; the App Store copy is the same program with a price on it, sold as a way to fund the free one.
Pika
pika
Picks the colour under the pointer anywhere on screen and copies it in the format you are about to paste — Hex, RGB, HSB, HSL, LAB or OpenGL, on ⌘1 through ⌘6. Digital Color Meter ships with macOS and reads one value in one format; this holds a foreground and a background at once, which is the shape the question actually has when the thing you are matching is a screenshot of a design and not a swatch.
IINA
iina
mpv wearing a macOS application, which means it plays the file QuickTime refuses — .mkv, an unusual codec, a subtitle track in a separate file — instead of sending you to convert it first. Picture-in-picture, playback speed, and a window that behaves like a Mac window. The relevance to the rest of the page is thin and the row is here anyway: half of what ffmpeg gets pointed at, you first want to watch.
Adapter
adapter
ffmpeg with a window in front of it — its own site says so: an FFmpeg back end, VLC-rendered previews, batches, and an output size estimate before you commit to the encode. ffmpeg itself is on the prerequisites page because skills shell out to it, so this row is not for them. It is for you, at the moment when the conversion is a one-off, the flags are not in your head, and reading the manual costs more than the job is worth.
Cap
cap
Screen recording that ends in something you can send. ⌘⇧5 already records and hands you a file; this records with a webcam corner and an editor for zooms, trims and captions, and it is open source with the storage left as your decision — its own cloud, your S3 bucket, entirely local, or self-hosted. Read the two modes carefully before the first recording, because they differ on where the pixels go: Instant Mode uploads while you record so the link exists the moment you stop, Studio Mode records locally and exports when you say. A screen with an agent session on it is a screen with tokens, paths and client names on it, so which mode is selected is a real decision, not a preference. The application and self-hosting are free and open source; the hosted side, links and workspaces included, is a paid plan.
OrbStack
orbstack
Docker Desktop's job, done by something that starts in seconds and does not sit on the fans. The docker command does not change — prerequisites asks for it because one skill self-hosts a container, and whichever runtime answers, that line is the same. Worth knowing which one is answering on your machine: readlink -f $(which docker) says, and on this one it resolves inside OrbStack rather than Docker.app. Free for personal, non-commercial use; commercial use is a paid plan.
PopClip
popclipPaid
Select text anywhere and a small bar appears over it — copy, search, open a link, and whatever else you add, because the actions are extensions and there are hundreds of them. The right-click menu is macOS's answer to the same question and this one is shorter by a click and reachable with the mouse already where the text is. The relevance to these pages is unglamorous and daily: the loop of reading an error, taking the part that matters and putting it in front of an agent is one that runs dozens of times an hour. A licence, with a free trial before it.
Handy
handy
Hold a key, talk, release, and the words land in whatever field the cursor is in. macOS has had dictation for years, so what this changes is where the audio goes: Whisper runs on this machine and nothing leaves it, which is the difference between dictating a prompt about your own code and dictating it to a service. Free and open source. The case for talking rather than typing is stronger for prompts than for prose — a paragraph of context you would not have bothered to type is exactly the paragraph that makes the difference to the answer.
Obsidian
obsidian
Notes as a folder of Markdown files that you already know how to read, which is the whole reason it is on this page rather than any other note-taking application: an agent can open the vault with the tools it already has, and no export, API or integration stands between the two. Notes is the one that ships and keeps its notes in a database. Free, including for work — the optional subscriptions are Sync and Publish, and a vault that lives in a repository or a synced folder needs neither.
1Password
1passwordSubscription
macOS ships Passwords now, so the row is not about storing passwords. It is about op, the CLI that comes with this one: op run --env-file=.env -- pnpm dev injects secrets into a process from the vault and leaves nothing on disk, which is the difference between an agent that can read your keys out of a .env and one that cannot. A subscription, and the CLI is part of it rather than a separate purchase.
Phoenix Slides
phoenix-slides
Points at a folder of images and moves through them at the speed of the arrow key — thumbnails first, full screen next, no import step and no library. Quick Look shows one file and Preview starts thinking somewhere around the second hundred, which is the size a folder of screenshots or generated images reaches without anyone deciding it should. Free.
BetterDisplay
betterdisplayPaid
Resolution, scaling and brightness on external displays, at a granularity the Displays pane does not offer — including HiDPI on a monitor macOS has decided does not deserve it, which is what makes screenshots come out at a size you chose rather than a size you got. The free version covers the basics; flexible HiDPI scaling — the part this row is recommending it for — is in Pro, a one-time purchase.
DaisyDisk
daisydiskPaid
The Storage pane in System Settings answers the question in categories, and the largest category it knows is called Other. This answers it in paths: a ring per directory, click to descend, drag what you find to a tray and delete it in one pass. The case for it is specific to a machine set up like this one — node_modules per project, container images, model weights, a ~/Library/Caches nobody decided to grow — none of which any single act created, which is exactly why none of them is where you would look. Scanning system locations and other users' files needs more than it starts with: Full Disk Access, and a rescan as administrator. A one-time licence covering several of your own Macs, with a trial first.
Itsycal
itsycal
The menu bar clock tells you the time and, if you click it, the time. This puts a month under it and the day's events beside that, reading the calendars macOS already holds rather than an account of its own — so it shows nothing at all until you grant Calendar access on first launch, which reads as broken and is a permission. It can take the system clock's place entirely, date format included. Free and open source.
Fluor
fluor
The fn keys are one global setting in Keyboard settings, and the right answer to it changes per application: F2 means something in an editor or a terminal-based tool and means brightness everywhere else. This makes that setting a per-application rule and flips it as you switch. Needs Accessibility permission — it has to see which application is in front. MIT, and finished rather than maintained: no release since 2022, no commit since 2021. It still does what it does, and it is not going to do anything else.

Every row is on the machine this site is generated from — a shortlist out of what is actually installed, not one assembled for the page. What is left out is left out on purpose: that machine also carries firmware, audio and Windows toolchains that have nothing to do with any of this, and listing those would make it an inventory instead of a recommendation.