apt on elementary OS 8 and elementary OS 7, with the same setup command as Debian and Ubuntu: it reads UBUNTU_CODENAME from /etc/os-release and asks for the matching suite, noble on elementary OS 8 (Circe).
elementary OS is built on Ubuntu LTS, and its AppCenter is built around Flatpak apps, so command-line developer tools are left to apt and to whatever versions the Ubuntu base froze. deb.griffo.io serves the current upstream release of each tool below as an apt package for that base.
π Which suite your release gets
| Release | Built on | Suite | Tools available |
|---|---|---|---|
| elementary OS 8 (Circe) | Ubuntu 24.04 LTS βNoble Numbatβ | noble | 61 |
| elementary OS 7 (Horus) | Ubuntu 22.04 LTS βJammy Jellyfishβ | jammy | 59 |
elementary OS puts its own name in VERSION_CODENAME (circe on OS 8), which is not an apt suite. It also sets UBUNTU_CODENAME to the Ubuntu release underneath, and the setup command reads that first, so it asks for noble. Guides that use lsb_release -sc fail on elementary OS for this reason.
π¦ Add the repository
Step 1: Add the repository & key
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(. /etc/os-release; echo ${DEBIAN_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt updateinstall -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(. /etc/os-release; echo ${DEBIAN_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt updateπ There is an always-free mirror. deb-free.griffo.io serves packages free forever, no account, no subscription, at most 2 months behind upstream, security fixes immediately. It currently carries cliamp, Ghostty, lazydocker, Oh My Posh, Uncloud and Zed; any other tool can be enrolled on request.
Step 2: Install any tool
sudo apt install -y neovim ripgrep fzfapt install -y neovim ripgrep fzfTo check what the command will pick on your machine before running it:
. /etc/os-release; echo ${DEBIAN_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}.
It should print one of the suites in the table above.
π Every tool available on elementary OS
Versions are what the repository serves for noble right now (updated 2026-10-19). Older releases get the same version wherever the tool is built for them; the last column says which are.
| Tool | apt package | Version | elementary OS 7 |
|---|---|---|---|
| Atuin | atuin | 18.24.1-2~griffo | β |
| ble.sh | ble.sh | 0.4.0-git20260908.d81fd54-2~griffo | β |
| bottom | btm | 0.14.9-2~griffo | β |
| Bun | bun | 1.4.3-3~griffo | β |
| cliamp | cliamp | 2.3.0-2~griffo | β |
| Deno | deno | 2.9.7-3~griffo | β |
| difftastic | difftastic | 0.70.0-2~griffo | β |
| DuckDB | duckdb | 1.5.6-3~griffo | β |
| eza | eza | 0.23.5-3~griffo | β |
| Fastfetch | fastfetch | 2.66.0-3~griffo | β |
| fish | fish | 4.9.3-2~griffo | β |
| Forgejo | forgejo | 15.0.2-2~griffo | β |
| Forgejo Runner | forgejo-runner | 13.2.0-2~griffo | β |
| fresh-editor | fresh-editor | 0.5.3-2~griffo | β |
| fzf | fzf | 0.74.5-2~griffo | β |
| Garage | garage | 2.4.1-2~griffo | β |
| GitUI | gitui | 0.28.1-2~griffo | β |
| GPU Screen Recorder | gpu-screen-recorder-cli | 6.1.4-1~noble | β |
| Headscale | headscale | 0.29.5-2~griffo | β |
| Helix | helix | 25.07.1-3~griffo | β |
| herdr | herdr | 0.9.5-2~griffo | β |
| Jujutsu | jujutsu | 0.46.0-2~griffo | β |
| just | just | 1.59.0-2~griffo | β |
| k9s | k9s | 0.51.0-2~griffo | β |
| kitty | kitty | 0.49.2-2~griffo | β |
| lazydocker | lazydocker | 0.25.2-2~griffo | β |
| lazygit | lazygit | 0.66.2-2~griffo | β |
| lazyjira | lazyjira | 2.19.2-2~griffo | β |
| lowfi | lowfi | 2.0.7-3~griffo | β |
| mitmproxy | mitmproxy | 12.2.3-3~griffo | β |
| Neovim | neovim | 0.12.6-2~griffo | β |
| Nushell | nushell | 0.116.1-2~griffo | β |
| Oh My Posh | oh-my-posh | 31.8.0-2~griffo | β |
| rclone | rclone | 1.75.2-2~griffo | β |
| restic | restic | 0.19.1-2~griffo | β |
| rgrc | rgrc | 0.6.35-2~griffo | β |
| ripgrep | ripgrep | 15.2.0-2~griffo | β |
| Ruff | ruff | 0.17.1-2~griffo | β |
| rumdl | rumdl | 0.3.0-2~griffo | β |
| Serie | serie | 0.10.0-2~griffo | β |
| Spotifast | spotifast | 0.13.3-2~griffo | β |
| Starship | starship | 1.27.0-2~griffo | β |
| superfile | superfile | 1.6.0-2~griffo | β |
| Television | television | 0.15.9-2~griffo | β |
| Termusic | termusic | 0.13.2-3~griffo | β |
| TigerBeetle | tigerbeetle | 0.17.9-2~griffo | β |
| tree-sitter-cli | tree-sitter-cli | 0.27.1-2~griffo | β |
| Uncloud | uncloud | 0.21.0-2~griffo | β |
| Unregistry | unregistry | 0.4.3-2~griffo | β |
| uv | uv | 0.13.1-2~griffo | β |
| viu | viu | 1.6.1-3~griffo | β |
| workmux | workmux | 0.1.276-2~griffo | β |
| Yazi | yazi | 26.9.1-2~griffo | β |
| yq | yq | 4.54.1-2~griffo | β |
| yt-dlp | yt-dlp | 2026.08.19-2~griffo | β |
| ZapZap | zapzap | 7.5.1-2~griffo | β |
| Zed | zed | 1.24.3-1~griffo | β |
| Zellij | zellij | 0.45.1-2~griffo | β |
| Zig | zig-stable | 0.17.0-2~griffo | β |
| ZLS | zls | 0.16.1-2~griffo | β |
| zoxide | zoxide | 0.10.0-2~griffo | β |
β Common questions
Why does a guide using lsb_release -sc fail on elementary OS?
lsb_release -sc prints elementary's own codename (circe on OS 8), and no apt repository is built for it. The setup command here reads UBUNTU_CODENAME, which elementary OS sets to the Ubuntu base (noble).
Is deb.griffo.io an official elementary OS repository?
No. It is an unofficial repository maintained by Dario Griffo, not affiliated with elementary OS. Every package is built automatically from the official upstream release, the packaging is open source on GitHub, and the archive is GPG-signed.
Does it cost anything?
The repository is a subscription (β¬15 a year or β¬150 once) with a free trial. A free mirror, deb-free.griffo.io, serves a smaller set of tools at a delay, with the same setup on this distro.
How do I remove the repository?
Delete /etc/apt/sources.list.d/deb.griffo.io.list and /etc/apt/keyrings/deb.griffo.io.gpg, then run sudo apt update. Tools you installed stay until you apt remove them.
π Related
- Latest dev tools on Linux Mint
- Latest dev tools on Linux Mint Debian Edition (LMDE)
- Latest dev tools on Pop!_OS
- Latest dev tools on Zorin OS
- Latest dev tools on KDE neon
- Latest dev tools on Raspberry Pi OS
- Latest dev tools on Proxmox VE
- Latest dev tools on WSL (Windows Subsystem for Linux)
- Latest dev tools on Kali Linux
- All packages served by deb.griffo.io