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
- 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 needscurlandtar. - The installer reads the package and SHA-256 for your platform from the release's
RELEASE-ASSETS.json(or fromSHA256SUMSwhen a release has no inventory), cross-checks both againstSHA256SUMS, downloads from GitHub and stops on any mismatch. It prefers a.tar.gz, then.pkg(macOS),.debor.rpm. On Linux it takes the.debwhendpkgis present, otherwise the.rpmwhenrpmis present. - 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/greppyto it, without sudo. To unpack a.debit needsar, for an.rpmit needsrpm2cpioandcpio. If the directory is not on yourPATH, it prints the line you need to add. With--systemit calls the package manager instead (installer -pkg,dpkg -i,rpm -U), which also installs the optional workspace acceleration (on macOS the FSKit app).--systemapplies to a.pkg,.debor.rpm; with a.tar.gzrelease 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:
- What the installer set up is rolled back: the agent blocks,
~/.greppy, the versions under~/.local/share/greppy/versionsand the~/.local/bin/greppylink if it points there. Agreppylink with a different target stays in place and is reported; a plaingreppyfile in that directory, as earlier installer versions created it, is removed. The*.greppy-backupfiles stay. - 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. - System-level parts are listed and left untouched: a
.pkg,.debor.rpminstalled with--system, the workspace acceleration set up withgreppy workspace setup(its login item stays until you remove it) and any othergreppyon yourPATH.