install

nerd 0.14.0
curl -fsSL https://nerdterm.dev/install.sh | sh

Read the script first. Current version: 0.14.0, released 2026-10-21; what changed.

The script downloads the latest release, checks its checksum, installs nerd into ~/.local/bin and, if that folder is not on your PATH, adds it in ~/.zshrc. Run it again to upgrade. NERD_BINDIR installs somewhere else. To install an archive you already have, run sh install.sh nerd-….tar.gz with its .sha256 file beside it; without one the script refuses unless NERD_INSTALL_UNVERIFIED=1 is set.

Or with Homebrew, upgraded with brew upgrade nerd:

requirements

  • macOS. nerd relies on macOS for its sandbox, clipboard, sounds, image conversion and login item. Linux and Windows are planned by the maintainer; pull requests for them are not accepted.
  • Apple Silicon for the prebuilt binary. Intel Macs can build from source; this is not tested.
  • Any terminal with mouse support and 24-bit colour.
  • Full-quality image previews need a terminal with the Kitty graphics protocol (Ghostty, Kitty, WezTerm, iTerm2). Elsewhere they are drawn in coloured blocks, and nerd says so under the image.
  • To build from source: Rust 1.88 or newer.

limitations

  • nerd is early software (0.x). Configuration and behaviour may change between releases.
  • The binary is not notarized by Apple. The installer removes the download quarantine and Homebrew sets none; for an archive downloaded by hand, run xattr -d com.apple.quarantine nerd.
  • The installer adds ~/.local/bin to PATH in ~/.zshrc only. With another shell, add it yourself.
  • Inside tmux or screen, image previews fall back to coloured blocks: neither passes a graphics protocol on. In Ghostty, Kitty and WezTerm, nerd offers to open itself in a new window of the same terminal instead.
  • Exact agent states come from the hook, for the supported agents. For other agents the state is read from their output: it can lag, be wrong, or miss "waiting for you".
  • After a restart, pane text and layout come back; running processes do not. Pane text is lost if the server is killed with kill -9 or the Mac loses power.

build from source

brew install nerdterm/tap/nerd

Keep one of the two: with both, the one earlier on your PATH runs, usually ~/.local/bin.

git clone https://github.com/nerdterm/nerd.git
cd nerd
cargo build --release
install -m 755 target/release/nerd ~/.local/bin/nerd
codesign --force --sign - ~/.local/bin/nerd

Use install, not cp: macOS caches code signatures by inode and kills a binary overwritten in place.

updating

Check for a new release… in the main menu asks GitHub for the newest release of nerd and shows it with its changelog: install downloads it, checks it against the checksum published with it and puts it in ~/.local/bin, as install.sh does; skip this release keeps the daily check quiet about it; later leaves it. A nerd installed with Homebrew is told to run brew upgrade nerd, and one running from anywhere else names its path and installs nothing. Install works only from nerd's own window on the Mac the server runs on, not from a window opened inside a pane or from another Mac (though a program running as you could ask for the install itself: it would get only the newest release, checked against its checksum: nothing it could not already do as you). The first window on a Mac asks once whether nerd may check by itself once a day; Settings… → Check for new releases changes the answer, which is kept per Mac in update-check next to config.json. A daily check only shows a card, and marks Check for a new release… in the menu until you install or skip that release. Every check writes a line to the log, and what it sends is in What leaves nerd.

After you install a new build, a card says Update available, and the ≡ menu button and Update… in the menu are marked. … more on the card, or Update…, opens a window with the running build, the new one and what changed between them: update now hands the running server's panes to the new build, and their programs keep running; skip this build says nothing more about that build; later leaves it for now.

uninstall

From a terminal outside nerd:

nerd --stop
nerd --uninstall-hook
nerd --uninstall
rm ~/.local/bin/nerd   # or, installed with Homebrew: brew uninstall nerd
rm -rf ~/Library/Application\ Support/nerd

nerd --uninstall also undoes every terminal preset, before the folder that holds the preset files goes.

If you set up another account for isolation, also remove its copy of nerd, sudo rm -rf "/Library/Application Support/nerd", and, if you added it, the sudoers file the Accounts window showed, sudo rm /etc/sudoers.d/nerd-<account>.

Next Quick start