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 managerSystems
HomebrewmacOS, Linux
aptDebian, Ubuntu, Linux Mint, Pop!_OS, elementary OS
dnfFedora, RHEL, CentOS Stream, AlmaLinux, Rocky Linux, Amazon Linux
yumolder RHEL and CentOS
zypperopenSUSE Leap and Tumbleweed
apkAlpine, postmarketOS
pacmanArch Linux, Manjaro, EndeavourOS, CachyOS
NixmacOS, Linux
misemacOS, Linux, Windows
ScoopWindows
WinGetWindows
ChocolateyWindows
GomacOS, 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:

  1. $AI9S_CACHE_DIR/index.db
  2. $XDG_CACHE_HOME/ai9s/index.db
  3. ~/.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.