Installation
Every method below installs two identical binaries: kikimimi and the short alias kkmm. Every command and flag in these docs works the same under either name.
Homebrew
Section titled “Homebrew”brew install isamisushi/tap/kikimimiInstall script
Section titled “Install script”curl -fsSL https://github.com/isamisushi/kikimimi/releases/latest/download/kikimimi-installer.sh | shDetects your platform and installs a prebuilt binary — no Rust toolchain needed. This also leaves a cargo-dist install receipt next to the binary, which is what lets kikimimi self-update (below) upgrade in place later.
Platforms
Section titled “Platforms”Prebuilt binaries are published for:
| OS | CPU | libc |
|---|---|---|
| macOS | Apple Silicon | — |
| macOS | Intel | — |
| Linux | x86_64 | glibc |
| Linux | aarch64 | glibc |
| Linux | x86_64 | musl (static) |
| Linux | aarch64 | musl (static) |
No Windows builds are published.
duckdb CLI (optional but needed for kikimimi query and the local dashboard)
Section titled “duckdb CLI (optional but needed for kikimimi query and the local dashboard)”kikimimi init, kikimimi agent (hooks, the daemon, OTel/rollout-log collection, and cloud/S3 sync) all work with no dependencies beyond the kikimimi binary itself. Named queries (kikimimi query <name>) and the local dashboard’s /web/q/* widgets are the exception: both shell out to the external duckdb CLI against local Parquet, so it needs to be on PATH for those specifically.
brew install duckdbOr grab a prebuilt binary from a GitHub release or duckdb.org and put it on PATH — no package manager required (apt doesn’t carry a duckdb package). kikimimi init checks for it and prints a one-line note if it’s missing; kikimimi status reports the same thing under its warnings. Without it, kikimimi query fails with an explanatory error and the dashboard’s widgets return 503.
Updating
Section titled “Updating”kikimimi self-update figures out how this install got here and does the right thing for it:
- Install script: reads the install receipt the script left behind, downloads and installs the latest release in place.
- Homebrew: no receipt to read — Homebrew owns that binary.
self-updatedetects the Homebrew/Linuxbrew install path and instead printsbrew upgrade isamisushi/tap/kikimimiand exits0. Nothing was updated, but nothing failed either. - Anything else (built from source,
cargo install, a binary placed by hand): no receipt, not Homebrew-managed —self-updateprints the same install-script one-liner from above and exits0.
kikimimi self-update # upgrade in place, or print the right command for this installkikimimi self-update --check # report only — never installs, never restarts anythingIf kikimimi agent is running under the old binary when a real update lands, self-update stops it (SIGTERM, then SIGKILL after 5s if it doesn’t exit) and restarts it from the new binary automatically — no manual restart needed.
Separately, a running daemon checks quietly in the background: once a day (first check 10 minutes after startup), it polls GitHub’s releases API and caches the result at ~/.kikimimi/update-check.json. kikimimi status reads that cache — never a live network call of its own — and prints update available: vX.Y.Z (run: kikimimi self-update) when it’s behind. Set KIKIMIMI_NO_UPDATE_CHECK=1 to disable this entirely: no task is spawned, no request is ever made.
Uninstall
Section titled “Uninstall”kikimimi uninstall # revert hooks/env onlykikimimi uninstall --purge-data # also delete ~/.kikimimi (data + spool + state)kikimimi uninstall reverts exactly what kikimimi init added to ~/.claude/settings.json: the hook entries it wrote and the env vars it set, as long as nothing else has changed them since. Any hooks or settings you added yourself — or edited since init last ran — are left untouched. It also removes the user-level service init installed (the LaunchAgent/systemd --user unit that keeps the daemon running across reboots and crashes — see Quickstart); a kikimimi agent process already running outside the service, if any, is left alone.
By default your recorded data under ~/.kikimimi is left in place. Pass --purge-data to delete it too.