grithdocs

Installation

One line to install grith on Linux, what the installer verifies before it writes anything, and where the files land.

terminal
$ curl -fsSL https://grith.ai/install | sh

That resolves the latest release, downloads the tarball for your architecture, verifies it, and puts grith in ~/.local/bin. Do not pin a version.

If you would rather read the script before running it, https://grith.ai/install serves scripts/install.sh from the repository verbatim - fetch it, read it, then run it.

What the installer does

  1. Detects your platform. Anything that is not Linux x86_64 or Linux aarch64 is a hard error, not a degraded install.
  2. Resolves the newest release tag from the GitHub API.
  3. Downloads the tarball and its .sha256, and verifies the checksum. A mismatch aborts the install.
  4. If cosign is on your PATH, downloads the sigstore bundle and verifies the signature against the release workflow's identity. A present-but-invalid signature aborts the install. No cosign means the step is skipped with a note, and the checksum still had to pass.
  5. Stages the binary inside the destination directory and renames it into place, so a running grith can replace itself.
  6. Tells you if the destination is not on your PATH, with the line to add for your shell.

The installer writes nothing else. There is no config file, no service registration and no directory created under ~/.config - it finishes by pointing you at grith init, which is what writes the config.

Two flags, passed through the pipe:

terminal
$ curl -fsSL https://grith.ai/install | sh -s -- --global
FlagEffect
--globalInstall to /usr/local/bin instead of ~/.local/bin, using sudo if the directory is not writable.
--version <ver>Install a specific release rather than the latest. Useful for rolling back.

Requirements

  • Linux x86_64 (kernel 4.8 or newer) or Linux aarch64 (kernel 5.3 or newer). aarch64 supervision needs PTRACE_GET_SYSCALL_INFO, which is where the higher floor comes from; grith probes for it at session start and refuses rather than silently degrading.
  • CAP_SYS_PTRACE, or /proc/sys/kernel/yama/ptrace_scope set to 0 or 1. Ubuntu and Debian default to 1, which is fine - grith is the parent of the tool it supervises. At 2 or above, supervision cannot start.
  • Nothing else. The release binaries are statically linked against musl: no glibc pin, no shared libraries, no runtime dependencies.

Manual download

One tarball per architecture, containing a single file. The filenames carry the bare version, with no leading v.

manual install
# Check https://github.com/grith-ai/grith/releases/latest for the current tag.
VERSION=0.3.1
ARCH=x86_64        # or aarch64
ARCHIVE=grith-${VERSION}-${ARCH}-unknown-linux-musl.tar.gz
curl -fsSLO https://github.com/grith-ai/grith/releases/download/v${VERSION}/${ARCHIVE}
curl -fsSLO https://github.com/grith-ai/grith/releases/download/v${VERSION}/${ARCHIVE}.sha256
sha256sum --check ${ARCHIVE}.sha256
tar -xzf ${ARCHIVE}
install -m 755 grith ~/.local/bin/grith

Every release also ships a CycloneDX SBOM, a cosign bundle for the tarball and the SBOM, and an SLSA build-provenance attestation. Signatures are .cosign.bundle files. See Verifying releases for the commands.

Build from source

bash
git clone https://github.com/grith-ai/grith.git
cd grith
make dist

Rust 1.88 or newer and Node 22. Use make dist, not a bare cargo build --release: the dashboard is a separate front-end bundle, and a cargo-only build produces a binary whose dashboard is a placeholder page.

ℹ️Source builds do not upgrade in place

grith only replaces itself when the binary sits in ~/.local/bin or /usr/local/bin. Anywhere else - a source build, a hand-placed copy - it prints instructions rather than installing a second binary somewhere on your PATH.

Verify

terminal
$ grith --version
grith 0.3.1

Where things live

PathWhat
~/.local/bin/grithThe binary. /usr/local/bin/grith with --global.
~/.config/grith/config.tomlYour config. Written by grith init, not by the installer.
~/.config/grith/update-check.jsonCached version notice.
~/.local/share/grith/audit/The audit database, with cold storage under cold/.
~/.local/share/grith/supervisor.logSupervisor log.
~/.cache/grith/Transient state. Safe to delete.

Uninstall

bash
rm "$(command -v grith)"
rm -rf ~/.config/grith ~/.local/share/grith ~/.cache/grith

There are no service registrations, kernel modules or system-wide files to clean up.

Next

Last updated: 2026-08-24Edit this page on GitHub →