Installation
One line to install grith on Linux, what the installer verifies before it writes anything, and where the files land.
$ curl -fsSL https://grith.ai/install | shThat 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
- Detects your platform. Anything that is not Linux x86_64 or Linux aarch64 is a hard error, not a degraded install.
- Resolves the newest release tag from the GitHub API.
- Downloads the tarball and its
.sha256, and verifies the checksum. A mismatch aborts the install. - If
cosignis 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. - Stages the binary inside the destination directory and renames it into place, so a
running
grithcan replace itself. - 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:
$ curl -fsSL https://grith.ai/install | sh -s -- --global| Flag | Effect |
|---|---|
--global | Install 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_scopeset 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.
# 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/grithEvery 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
git clone https://github.com/grith-ai/grith.git
cd grith
make distRust 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
$ grith --version
grith 0.3.1Where things live
| Path | What |
|---|---|
~/.local/bin/grith | The binary. /usr/local/bin/grith with --global. |
~/.config/grith/config.toml | Your config. Written by grith init, not by the installer. |
~/.config/grith/update-check.json | Cached version notice. |
~/.local/share/grith/audit/ | The audit database, with cold storage under cold/. |
~/.local/share/grith/supervisor.log | Supervisor log. |
~/.cache/grith/ | Transient state. Safe to delete. |
Uninstall
rm "$(command -v grith)"
rm -rf ~/.config/grith ~/.local/share/grith ~/.cache/grithThere are no service registrations, kernel modules or system-wide files to clean up.
Next
- Quickstart -
grith init, then supervise something. - Troubleshooting - if ptrace or the daemon refuses.
- Updating grith - how the version notice and upgrade work.