Skip to content

Installation

macOS / Linux

Terminal window
curl -fsSL https://raw.githubusercontent.com/kunchenguid/no-mistakes/main/docs/install.sh | sh

The installer keeps the real binary in ~/.no-mistakes/bin and exposes no-mistakes through a symlink in ~/.local/bin or /usr/local/bin. That keeps future no-mistakes update runs in a user-owned location instead of rewriting a system binary in place.

It also installs or refreshes the background daemon for you by running no-mistakes daemon restart, preferring a managed service (launchd on macOS, systemd user service on Linux) and falling back to a detached daemon if that path is unavailable. If the restart fails, the install command fails.

Official release binaries installed this way include the default self-hosted telemetry host and website ID. Disable telemetry with NO_MISTAKES_TELEMETRY=0, or override the host and website ID with NO_MISTAKES_UMAMI_HOST and NO_MISTAKES_UMAMI_WEBSITE_ID.

Windows (PowerShell)

Terminal window
irm https://raw.githubusercontent.com/kunchenguid/no-mistakes/main/docs/install.ps1 | iex

Installs the binary and restarts the background daemon automatically with no-mistakes.exe daemon restart, preferring a managed Task Scheduler task and falling back to a detached daemon if needed. If the restart fails, the install command fails.

Official release binaries installed this way include the default self-hosted telemetry host and website ID. Disable telemetry with NO_MISTAKES_TELEMETRY=0, or override the host and website ID with NO_MISTAKES_UMAMI_HOST and NO_MISTAKES_UMAMI_WEBSITE_ID.

Go install

Terminal window
go install github.com/kunchenguid/no-mistakes/cmd/no-mistakes@latest

go install builds the CLI without an embedded telemetry website ID, so telemetry stays off by default unless you later set NO_MISTAKES_UMAMI_WEBSITE_ID at runtime.

Nix

Terminal window
nix run github:kunchenguid/no-mistakes -- --version
nix profile install github:kunchenguid/no-mistakes
no-mistakes daemon restart

The flake builds for x86_64-linux, aarch64-linux, and aarch64-darwin. Intel macOS is not covered because nixpkgs dropped x86_64-darwin; use the install script or go install there.

To add it to a devenv shell, declare the flake as an input in devenv.yaml and add its package:

inputs:
no-mistakes:
url: github:kunchenguid/no-mistakes
{ pkgs, inputs, ... }:
{
packages = [ inputs.no-mistakes.packages.${pkgs.stdenv.system}.default ];
}

Without flakes, default.nix exposes the same packages through flake-compat, for example nix-build -A packages.x86_64-linux.default.

The flake embeds the same default telemetry host and website ID as official release binaries. Disable telemetry with NO_MISTAKES_TELEMETRY=0, or override the host and website ID with NO_MISTAKES_UMAMI_HOST and NO_MISTAKES_UMAMI_WEBSITE_ID.

no-mistakes update refuses to run on a binary in the Nix store, and the background update notice stays off. Upgrade through Nix (for example nix profile upgrade no-mistakes or a flake input update), then run no-mistakes daemon restart. The restart points the managed service at the new store path; until then the daemon keeps running the old one, which garbage collection can delete.

From source

Terminal window
git clone git@github.com:kunchenguid/no-mistakes.git
cd no-mistakes
make build
make install

make build embeds the telemetry host from NO_MISTAKES_UMAMI_HOST in a repo-local .env first, then UMAMI_HOST from the shell, then the default self-hosted host. It embeds the telemetry website ID from NO_MISTAKES_UMAMI_WEBSITE_ID in .env first, then UMAMI_WEBSITE_ID from the shell, then the default website ID.

Prerequisites

  • git - required
  • One supported agent runner - claude, codex, grok, acli (Rovo Dev), opencode, pi, copilot, or agy (Antigravity), or a configured Cursor, Devin, or other ACP runner such as agent: cursor or agent: devin; see Global Config for ACP requirements
  • Optional, for PRs and CI:
    • gh CLI (GitHub)
    • glab CLI (GitLab)
    • forgejo-axi (Forgejo)
    • NO_MISTAKES_BITBUCKET_EMAIL and NO_MISTAKES_BITBUCKET_API_TOKEN (Bitbucket Cloud)
    • az CLI with the azure-devops extension (Azure DevOps)
    • tea CLI (Gitea)
    • origin CLI (Cursor Origin)
    • or a configured provider plugin for custom hosts

Run no-mistakes doctor to check native agents, ACP aliases such as cursor and devin, provider tools, configured provider plugins, and whether the configured global runner can start a validation gate. Every validation gate requires a runnable pipeline agent and otherwise fails before its first pipeline step.

See Provider Integration for PR and CI setup per host.

Update

Terminal window
no-mistakes update
no-mistakes update --beta
no-mistakes update -y

This downloads the latest release from GitHub, verifies the SHA-256 checksum, atomically replaces the binary, and resets the daemon so it picks up the new executable. It prefers the managed service path and falls back to a detached daemon if service startup is unavailable or fails.

no-mistakes update installs the latest stable release. Use no-mistakes update --beta to opt into prereleases and install the latest beta when one is newer than the current stable release. Use no-mistakes update -y to answer yes to the daemon-executable-mismatch prompt described below. Version discovery uses the GitHub release-asset CDN rather than the rate-limited REST API; see no-mistakes update.

Because update installs the latest official release binary, it installs a binary with the default self-hosted telemetry host and website ID. Disable telemetry with NO_MISTAKES_TELEMETRY=0, or override the host and website ID with NO_MISTAKES_UMAMI_HOST and NO_MISTAKES_UMAMI_WEBSITE_ID.

If pending or running pipeline runs exist, the update refuses to restart the daemon and prints each active run’s ID, status, branch, and short head SHA. Pass --force to restart the daemon anyway and accept that those runs may fail; -y/--yes does not bypass this guard. If the running daemon was started from a different binary, the update still prompts before replacing it; -y/--yes answers that prompt non-interactively. If the daemon executable path cannot be determined, the update aborts before replacing the binary. If the daemon does not come back cleanly after a successful replacement, the new binary stays installed but the command reports the daemon reset failure.

Background update checks run automatically on each CLI invocation (except update itself and version queries --version / -v, which stay side-effect-free). Suppress with NO_MISTAKES_NO_UPDATE_CHECK=1. A Nix install upgrades through Nix instead.

Remove from a repo

Terminal window
no-mistakes eject

Removes the gate from the current repository; no-mistakes eject lists exactly what it removes and what it leaves in place.

Uninstall

Stop the daemon, delete the binary, and clear state:

Terminal window
no-mistakes daemon uninstall # macOS: removes the LaunchAgent
no-mistakes daemon stop
rm -f ~/.local/bin/no-mistakes /usr/local/bin/no-mistakes
rm -rf ~/.no-mistakes

If you configured worktree_roots, also delete the run worktree directories it placed outside ~/.no-mistakes.

On macOS, daemon uninstall removes only the LaunchAgent for the current NM_HOME. Repeat it with each instance’s NM_HOME if you installed multiple services. On Linux, also remove ~/.config/systemd/user/no-mistakes-daemon-*.service. On Windows, remove the no-mistakes-daemon-* Task Scheduler task.