Documentation

Install and uninstall

curl -fsSL https://greppy.xyz/install.sh | sh

In a terminal, a small installer menu opens: install or update, choose another version, set up the coding agents without reinstalling, or uninstall. Without a terminal (CI, scripts), it installs the latest release and sets up every coding agent it finds. --version, --yes, --list and --uninstall skip the menu. With --version and without --yes, it then asks in the terminal which agents it should set up.

Options

greppy installer

  curl -fsSL https://greppy.xyz/install.sh | sh                 interactive
  curl -fsSL https://greppy.xyz/install.sh | sh -s -- [options]

Options:
  --version TAG   install a specific release, e.g. v0.3.2 (default: latest)
  --yes           no questions: install and set up every detected agent
  --agents LIST   agents to set up: auto, none, or a comma list of
                  claude,codex,gemini,pi,opencode
  --no-agents     install the binary only
  --dir DIR       put the greppy command into DIR (default: ~/.local/bin)
  --system        install a .pkg/.deb/.rpm release with the system package
                  manager (needs sudo); default is a user-level install
  --list          list the published releases and exit
  --uninstall     roll back what this installer set up, clear caches, and
                  list system-level parts (packages, workspace provider)
  -h, --help      show this help

Environment: GREPPY_VERSION, GREPPY_INSTALL_DIR, GREPPY_HOME, NO_COLOR
Option Effect
--version TAG install a specific release, for example v0.3.2 (default: the latest)
--yes no questions: install and set up every detected agent
--agents LIST set up exactly these agents and remove greppy from all others: auto, none or a list of claude,codex,gemini,pi,opencode
--no-agents install the binary without agent setup; greppy blocks that an earlier run added to agent files are removed
--dir DIR where the greppy command goes (default ~/.local/bin)
--system install a .pkg, .deb or .rpm release with the system package manager (needs sudo)
--list list the published releases and exit
--uninstall roll back what the installer set up (see below)
-h, --help show the options

You pass options after sh -s --, for example curl -fsSL https://greppy.xyz/install.sh | sh -s -- --version v0.3.2 --yes. In a terminal, --agents and --no-agents take effect together with --yes or --version; on their own they open the menu, and you choose there.

$ curl -fsSL https://greppy.xyz/install.sh | sh -s -- --list
Published greppy releases (newest first):
  v0.4.1
  v0.3.3
  v0.3.2
  v0.2.1
Environment variable Effect
GREPPY_VERSION the release to install, like --version; in a terminal the menu opens with this version
GREPPY_INSTALL_DIR like --dir
GREPPY_HOME where the agent prompt is saved (default ~/.greppy)
GREPPY_VERSIONS_DIR where installed versions are unpacked (default ~/.local/share/greppy/versions)
NO_COLOR output without colors

What it checks and downloads

  1. It checks the platform: macOS on Apple Silicon or Linux x86_64. It refuses Intel Macs and other Linux architectures. On Linux it warns if the NVIDIA driver (libcuda.so.1) is missing; production inference uses Metal on macOS and CUDA on Linux. Windows is not a supported target platform. The installer itself needs curl and tar.
  2. The installer reads the package and SHA-256 for your platform from the release's RELEASE-ASSETS.json (or from SHA256SUMS when a release has no inventory), cross-checks both against SHA256SUMS, downloads from GitHub and stops on any mismatch. It prefers a .tar.gz, then .pkg (macOS), .deb or .rpm. On Linux it takes the .deb when dpkg is present, otherwise the .rpm when rpm is present.
  3. It copies the greppy executable with all files that ship next to it (for example the browser runtime and, on Linux, the workspace provider) to ~/.local/share/greppy/versions/<tag>/bin/ and links ~/.local/bin/greppy to it, without sudo. To unpack a .deb it needs ar, for an .rpm it needs rpm2cpio and cpio. If the directory is not on your PATH, it prints the line you need to add. With --system it calls the package manager instead (installer -pkg, dpkg -i, rpm -U), which also installs the optional workspace acceleration (on macOS the FSKit app). --system applies to a .pkg, .deb or .rpm; with a .tar.gz release such as v0.3.3, it installs at user level.

What it changes for your agents

It downloads the prompt that belongs to the installed version (the repository's AGENTS.md at that release tag), saves it as ~/.greppy/AGENTS.md and adds it to the global instructions of the agents you choose. An agent counts as found when its configuration directory (for example ~/.claude) exists or its command is on your PATH.

Agent File What it adds
Claude Code ~/.claude/CLAUDE.md one line: @~/.greppy/AGENTS.md
Codex CLI ~/.codex/AGENTS.md the greppy prompt
Gemini CLI ~/.gemini/GEMINI.md the greppy prompt
pi ~/.pi/agent/AGENTS.md the greppy prompt
OpenCode ~/.config/opencode/AGENTS.md the greppy prompt

Each entry sits between these two lines:

<!-- greppy:begin (managed by https://greppy.xyz/install.sh) -->
<!-- greppy:end -->

It backs up an existing file once as *.greppy-backup. Another run replaces the block; when you untick an agent, it removes the block there.

Uninstall

curl -fsSL https://greppy.xyz/install.sh | sh -s -- --uninstall

If you installed with --dir, pass the same --dir here. The uninstall works in three stages and says in each one what it did:

  1. What the installer set up is rolled back: the agent blocks, ~/.greppy, the versions under ~/.local/share/greppy/versions and the ~/.local/bin/greppy link if it points there. A greppy link with a different target stays in place and is reported; a plain greppy file in that directory, as earlier installer versions created it, is removed. The *.greppy-backup files stay.
  2. Caches are cleared with greppy cache clear --all --yes. Entries that a running greppy locks are kept; idle daemons exit on their own within 30 minutes.
  3. System-level parts are listed and left untouched: a .pkg, .deb or .rpm installed with --system, the workspace acceleration set up with greppy workspace setup (its login item stays until you remove it) and any other greppy on your PATH.