↑ ↓ to move · Enter to open · Esc to close Something not working? Troubleshooting
    On this page

    Update & Uninstall

    Keep Suvadu up to date with one command. Your data is never touched during updates, and uninstalling leaves your history intact so you can come back anytime.

    Update Methods

    Choose whichever method matches how you originally installed Suvadu. All methods update the binary only — your database, config, and shell integration remain untouched.

    On macOS, do not use suv update to upgrade from 0.4.1. The updater in 0.4.1 asks for the wrong archive: on Apple Silicon the download fails, and on an Intel Mac it installs the Apple Silicon binary, which will not run. The fix ships in 0.4.2, so it cannot reach you through the updater already on your machine. Upgrade with Homebrew, the install script, or Cargo this once. Linux is unaffected, as are Homebrew and Cargo installs, and suv update works normally from 0.4.2 onward.
    Upgrading from 0.4.2 to 0.5.0? The updater improvements listed below arrive with 0.5.0, so the updater already on your machine does not have them. For this one upgrade:
    • Homebrew: brew update && brew upgrade suvadu. The 0.4.2 updater detects Homebrew from the executable's path without first resolving links, so some linked installations can be missed — on an Intel Mac, for example, where /usr/local/bin/suv is a link into Homebrew's Cellar, it could replace Homebrew's link.
    • Cargo: cargo install suvadu. The 0.4.2 updater detects Cargo only when the executable's path contains /.cargo/bin/, so a custom $CARGO_HOME, or a link to Cargo's binary, can be missed.
    • A suv in a directory you own, such as ~/.local/bin: run the install script with --user (for ~/.local/bin) or --dir pointing at that directory. The 0.4.2 updater runs every step with sudo and would leave a root-owned binary there.
    • The install script's default, /usr/local/bin: suv update works, or re-run the install script.
    From 0.5.0 on, suv update handles all of these cases itself.

    Self-Update (Recommended)

    The built-in self-update command auto-detects your platform, downloads the latest release, verifies it with its minisign signature and SHA-256 checksum, and replaces the existing binary in place.

    suv update

    Use it for install-script and manual installs, on 0.4.2 and later; see the notes above if you are on 0.4.1 on a Mac or are upgrading from 0.4.2. From 0.5.0, for a Homebrew or Cargo install — including one reached through a link or under a custom $CARGO_HOME — suv update does not replace the package manager's files: it points you at brew upgrade suvadu or cargo install suvadu instead.

    Since 0.5.0:

    • sudo only when needed. suv update replaces the binary as you when its directory is writable, so a suv in a directory you own, such as ~/.local/bin, updates without a password and stays owned by you. It uses sudo only when the directory is not writable by you.
    • A failed update keeps the old version. The new binary is written beside the old one and renamed into place, with or without sudo, so an update that fails part-way, or a full disk, leaves the previous version working instead of no suv at all.
    • Links are followed first. A Homebrew install on Intel macOS, where /usr/local/bin/suv is a link into Homebrew's Cellar, is recognised as Homebrew's, as are a link to Cargo's binary and a Cargo install under a custom $CARGO_HOME. On macOS, running it as suvadu update replaces suv rather than the suvadu link.

    Homebrew

    If you installed via Homebrew, update through the standard Homebrew workflow.

    brew update && brew tap AppachiTech/suvadu && brew upgrade suvadu

    Cargo

    If you installed from source via Cargo, reinstall to get the latest version from crates.io.

    cargo install suvadu

    Install Script

    Re-running the install script updates a suv it installed itself — recognised by the suvadu link beside it — in the directory it is already in, and downloads nothing when you already have the latest version. If the suv on your PATH came from Homebrew or Cargo, the script stops and prints brew upgrade suvadu or cargo install suvadu rather than installing a second copy; any other suv it did not install is left alone. See Installation for its options.

    curl -fsSL https://downloads.appachi.tech/suvadu/install.sh | bash

    What Happens During an Update

    • Your data is never touched. The database and config are stored separately from the binary (see paths below), so updating only replaces the suv executable.
    • No need to re-run suv init. Your shell integration (the hook in .zshrc / .bashrc) does not change between versions.
    • No need to re-source your shell config. The updated binary is picked up the next time you run any suv command.
    Switching install methods? The above applies to in-place updates that keep the binary in the same location. If you switch package managers (for example Homebrew → Cargo) or run brew unlink suvadu, the binary moves to a new path. Already-open shells still reference the old path and will print no such file or directory until reloaded. Run exec zsh (or exec bash) in each open shell, or open a new terminal, so the hook picks up the new binary location. Also make sure the new location (e.g. ~/.cargo/bin) is on your PATH.

    Update Notices

    Since 0.5.0, Suvadu tells you when a newer release is out. Once a day, in the background, it looks up the newest release number — the same version.txt on downloads.appachi.tech that suv update reads — and when there is a newer one, prints one line before a command you run at a terminal:

    suvadu 0.5.1 is available (you have 0.5.0) — update with: brew upgrade suvadu
    • The update command matches how you installed Suvadu: brew upgrade suvadu, cargo install suvadu, or suv update.
    • It appears at most once a day, and in the status line of Home. Nothing is downloaded or installed until you run the update yourself.
    • The command you ran never waits for the network. The request reads a version number and sends nothing about you or your history.
    • Shell hooks, recall (Ctrl+R, Up/Down, suv search), suv pause, the MCP server, scripts, pipes and CI never check or print.

    It is on by default. Turn it off with Check for Updates in the Shell tab of suv settings, in your config.toml, or for one shell with export SUVADU_NO_UPDATE_CHECK=1:

    [update]
    check = false

    Checking Your Version

    Verify which version you are running at any time.

    suv version

    Shell Completions

    Suvadu can generate shell completion scripts for tab-completing commands and flags. After updating, you may want to regenerate completions if new subcommands were added.

    suv completions <SHELL>

    See the Completions page for detailed setup instructions for Zsh, Bash, and Fish.

    Man Page

    Generate a man page for offline reference.

    suv man

    This outputs the man page to stdout. To install it system-wide:

    suv man > /usr/local/share/man/man1/suv.1

    Uninstalling

    To remove Suvadu, run the built-in uninstall command.

    suv uninstall

    It lists the installation sources it found — Homebrew, Cargo, and since 0.5.0 the install script — and asks for confirmation. It then removes the binary the way it was installed (for a script install, suv and its suvadu link, using sudo only if that directory is not writable), removes the shell hook line from ~/.zshrc and ~/.bashrc, and cleans up the agent integrations. Your data is preserved — the history database and configuration remain on disk so you can reinstall later without losing anything, and suv uninstall prints where they are.

    • A ~/.zshrc or ~/.bashrc that is a link — into a dotfiles repository, say — stays a link: the file it points to is edited and keeps its permissions.
    • A suv in a system or package-manager location (/usr/bin, the Nix store, /opt/local, …) is never treated as a script install.
    • For a manual install (a suv with no suvadu link beside it), suv uninstall only prints the binary's path; delete it and remove the eval "$(suv init …)" line yourself.

    If suv no longer runs: uninstall.sh

    Each release archive includes scripts/uninstall.sh (read it on GitHub), a fallback that removes what the install script added, and only that. While suv still runs, prefer suv uninstall, which also removes agent integrations.

    bash uninstall.sh              # the script-installed suv on your PATH, else /usr/local/bin
    bash uninstall.sh --user       # the copy in ~/.local/bin
    bash uninstall.sh --dir DIR    # the copy in DIR (SUVADU_INSTALL_DIR=DIR works too)

    With no option it finds the suv on your PATH and removes it only if the install script put it there; for a Homebrew or Cargo install it stops and points you at suv uninstall, and any other suv is left alone unless you name its directory with --dir. It removes suv and its suvadu link, using sudo only when the directory is not writable, and removes the hook line only from the startup files that contain it (~/.zshrc, ~/.bashrc, ~/.bash_profile), keeping each previous version as .suvadu-backup. Your history and config are kept.

    Data Locations

    Platform Data Directory Config Directory
    macOS ~/Library/Application Support/tech.appachi.suvadu/ The same directory
    Linux ~/.local/share/suvadu/ ~/.config/suvadu/

    On Linux, $XDG_DATA_HOME and $XDG_CONFIG_HOME replace ~/.local/share and ~/.config when set. If you want a complete removal, delete these directories manually after running suv uninstall:

    # macOS
    rm -rf ~/Library/Application\ Support/tech.appachi.suvadu/
    
    # Linux
    rm -rf ~/.local/share/suvadu/ ~/.config/suvadu/
    Warning: Deleting the data directory is permanent and removes your entire command history, bookmarks, notes, tags, and aliases. Consider exporting a backup first.
    Tip: After updating, run suv version to confirm the new version is active. If you see the old version, open a new terminal session to pick up the updated binary.