Installation
ai9s is a single Go binary. It runs on macOS, Linux, and Windows. GitHub Actions tests it on Ubuntu, macOS, and Windows. Install the latest 1.0 release. The supported line is 1.0.x.
apt, dnf, yum, zypper, apk, and the archives follow the latest GitHub release. Scoop, WinGet, Chocolatey, Nix, and the Arch PKGBUILD install the version named in their files in this repository. Use amd64 on x86_64 and arm64 on aarch64. Linux package filenames spell the OS in lowercase. Archive filenames spell it Linux, Darwin, or Windows.
| Package manager | Systems |
|---|---|
| Homebrew | macOS, Linux |
| apt | Debian, Ubuntu, Linux Mint, Pop!_OS, elementary OS |
| dnf | Fedora, RHEL, CentOS Stream, AlmaLinux, Rocky Linux, Amazon Linux |
| yum | older RHEL and CentOS |
| zypper | openSUSE Leap and Tumbleweed |
| apk | Alpine, postmarketOS |
| pacman | Arch Linux, Manjaro, EndeavourOS, CachyOS |
| Nix | macOS, Linux |
| mise | macOS, Linux, Windows |
| Scoop | Windows |
| WinGet | Windows |
| Chocolatey | Windows |
| Go | macOS, Linux, Windows |
Homebrew
Homebrew works on macOS and Linux.
brew tap AymanZahran/ai9s https://github.com/AymanZahran/ai9s
brew trust aymanzahran/ai9s
brew install ai9s
The formula is Formula/ai9s.rb in this repository. brew tap AymanZahran/ai9s with no URL looks for a repository named homebrew-ai9s, so pass the URL above. brew install --HEAD ai9s builds the latest main.
apt
Debian, Ubuntu, Linux Mint, Pop!_OS, and elementary OS.
curl -fL -o /tmp/ai9s.deb https://github.com/AymanZahran/ai9s/releases/latest/download/ai9s_linux_amd64.deb
sudo apt install -y /tmp/ai9s.deb
sudo dpkg -i /tmp/ai9s.deb installs the same file.
dnf
Fedora, RHEL, CentOS Stream, AlmaLinux, Rocky Linux, and Amazon Linux.
sudo dnf install -y https://github.com/AymanZahran/ai9s/releases/latest/download/ai9s_linux_amd64.rpm
yum
Older RHEL and CentOS.
curl -fL -o /tmp/ai9s.rpm https://github.com/AymanZahran/ai9s/releases/latest/download/ai9s_linux_amd64.rpm
sudo yum install -y /tmp/ai9s.rpm
zypper
openSUSE Leap and Tumbleweed. The rpm is not signed with a zypper key.
curl -fL -o /tmp/ai9s.rpm https://github.com/AymanZahran/ai9s/releases/latest/download/ai9s_linux_amd64.rpm
sudo zypper --non-interactive install --allow-unsigned-rpm /tmp/ai9s.rpm
apk
Alpine and postmarketOS. The apk is not signed with an Alpine key.
curl -fL -o /tmp/ai9s.apk https://github.com/AymanZahran/ai9s/releases/latest/download/ai9s_linux_amd64.apk
sudo apk add --allow-untrusted /tmp/ai9s.apk
pacman
Arch Linux, Manjaro, EndeavourOS, and CachyOS, from the PKGBUILD in this repository.
git clone --depth 1 https://github.com/AymanZahran/ai9s.git
cd ai9s/packaging/arch
makepkg -si
Nix
The flake downloads the release archive for the host system.
nix profile install github:AymanZahran/ai9s
mise
mise installs the release archive. The pattern keeps the .tar.gz and .zip and leaves the deb, rpm, and apk alone.
mise use -g 'github:AymanZahran/ai9s[matching_regex=\.(tar\.gz|zip)$]'
Scoop
scoop install https://raw.githubusercontent.com/AymanZahran/ai9s/main/packaging/scoop/ai9s.json
WinGet
WinGet installs from the manifest in this repository. Local manifests have to be turned on once.
winget settings --enable LocalManifestFiles
git clone --depth 1 https://github.com/AymanZahran/ai9s.git $env:TEMP\ai9s
winget install --manifest $env:TEMP\ai9s\packaging\winget
Chocolatey
Chocolatey packs the package in this repository, then installs that package.
git clone --depth 1 https://github.com/AymanZahran/ai9s.git $env:TEMP\ai9s
Set-Location $env:TEMP\ai9s\packaging\chocolatey
choco pack
choco install ai9s --yes --source .
Archives
macOS, Apple Silicon. Intel Macs use ai9s_Darwin_amd64.tar.gz.
mkdir -p ~/.local/bin "$TMPDIR/ai9s"
curl -fL https://github.com/AymanZahran/ai9s/releases/latest/download/ai9s_Darwin_arm64.tar.gz | tar -xz -C "$TMPDIR/ai9s"
install -m 755 "$TMPDIR/ai9s/ai9s" ~/.local/bin/ai9s
Linux. arm64 is the aarch64 archive.
mkdir -p ~/.local/bin /tmp/ai9s
curl -fL https://github.com/AymanZahran/ai9s/releases/latest/download/ai9s_Linux_amd64.tar.gz | tar -xz -C /tmp/ai9s
install -m 755 /tmp/ai9s/ai9s ~/.local/bin/ai9s
Windows. ai9s_Windows_arm64.zip is the arm64 build. Put the extracted ai9s.exe on PATH.
$dest = "$env:LOCALAPPDATA\ai9s"
New-Item -ItemType Directory -Force -Path $dest | Out-Null
Invoke-WebRequest https://github.com/AymanZahran/ai9s/releases/latest/download/ai9s_Windows_amd64.zip -OutFile "$dest\ai9s.zip"
Expand-Archive "$dest\ai9s.zip" -DestinationPath $dest -Force
From source
Requires Go 1.25 or newer. make install copies the binary to ~/.local/bin. Put that directory on your PATH, or choose another prefix.
git clone https://github.com/AymanZahran/ai9s.git
cd ai9s
make install
make install PREFIX=/usr/local
With the Go tool
Requires Go 1.25 or newer. The binary lands in $(go env GOPATH)/bin.
go install github.com/AymanZahran/ai9s@latest
Check
ai9s version
ai9s
With no arguments, ai9s indexes and opens the list. A non-terminal stdin prints a short message and exits, so scripts should call ai9s search or ai9s stats.
Terminal
Use a terminal with 256 colors. On Unix-like systems:
export TERM=xterm-256color
The list fills the window. d describes the selected row in that same window, and Esc returns to the list. The mouse wheel scrolls the view on screen. Resume needs the agent CLI on PATH. ai9s does not embed those CLIs.
Where the index lives
The cache database is the first of these that applies:
$AI9S_CACHE_DIR/index.db$XDG_CACHE_HOME/ai9s/index.db~/.cache/ai9s/index.db
It stores titles, metadata, and short excerpts, not a second full copy of every log. Delete that directory any time. The next run rebuilds it from the agent files.