Skip to content

Installation

nittle ships as a single self-contained binary. It embeds its own web client and needs no checkout, no Node, and no sidecar files. The only prerequisite is git on your PATH.

Terminal window
curl -fsSL https://nittle.dev/install | sh

The installer downloads the binary for your OS and architecture, verifies its SHA-256 against the published checksum manifest, and installs it to ~/.nittle/bin. It adds that directory to your PATH for you.

Run the same installer. After it installs nittle, it runs nittle --version once, and the binary’s own first-run migration moves everything over: the data directory, the install directory and PATH entry, the agent plugins and MCP configs, and the browser prefs. Then it removes the diffle leftovers.

The installer also finds a diffle that was installed to a custom directory. It reads the directory from the old # >>> diffle >>> block in your rc file or from PATH, and only trusts a directory that really holds a diffle binary.

If the migration can’t finish, nittle keeps both copies, prints what is left, and tries again on the next run. Details are in Migrating from diffle.

On a terminal, the installer finishes by asking Set up nittle for your coding agents? [Y/n] and runs nittle setup. It detects the agents you have installed, shows exactly what it will change, and asks before applying. You can run it any time, and nittle setup --remove undoes it. See Agent feedback.

Terminal window
nittle setup

The prompt is skipped when there’s no terminal, with NITTLE_DRY_RUN, or with NITTLE_NO_SETUP=1.

  1. Open a new terminal so PATH changes take effect.

  2. Check the version:

    Terminal window
    nittle --version
  3. From any git repository, start a review:

    Terminal window
    nittle

    nittle prints a http://127.0.0.1:<port> URL and opens it in your browser.

Terminal window
nittle update

nittle update downloads the latest release, verifies its checksum, and swaps the binary in place (on Windows the swap completes as the process exits). If a package manager installed nittle, it prints that manager’s upgrade command instead.

nittle also announces a new release in one line when you launch a review (at most one check a day). Set NITTLE_NO_UPDATE_CHECK=1 to silence it, or run nittle update --check to ask on demand.

The uninstaller removes the binary and its PATH entry, and any diffle leftovers too. On a terminal, it first runs nittle setup --remove so agents you wired up with nittle setup stop pointing at the deleted binary. Cancelling that stops the uninstall with the binary still in place. Set NITTLE_NO_SETUP=1 to skip it. Without a terminal, run nittle setup --remove yourself before uninstalling.

It only removes empty directories. Your review records and settings stay in ~/.nittle until you delete them.

Terminal window
curl -fsSL https://nittle.dev/install | sh -s -- --uninstall # binary + PATH block
rm -rf ~/.nittle # also removes review records + settings

The uninstall step removes the # >>> nittle >>> block from your rc file (and the old # >>> diffle >>> block, if there is one) and leaves the rest byte-identical. If you already have the script on disk, sh install.sh --uninstall does the same thing. NITTLE_UNINSTALL=1 works too.

nittle’s server, CLI, and MCP runtime run on Bun. The client is a built Svelte SPA.

Terminal window
git clone https://github.com/codywilliamson/diffle
cd diffle
bun install
bun run dev # backend + Vite with /api proxied