npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

sync-ai-clis

v0.4.3

Published

Detect, install, and keep up to date multiple AI coding CLIs (Claude Code, Codex, Gemini, Kiro, Antigravity) with one command

Downloads

726

Readme

sync-ai-clis

One command to detect, install, and keep your AI coding CLIs up to date — Claude Code, Codex, Gemini, Kiro, and Antigravity.

sync-ai-clis is a cross-platform (macOS · Windows · Linux) Rust CLI that reconciles your machine toward one state: every known AI CLI installed, working, and current. Installed tools get updated. Missing tools are installed after you consent. Then every tool is re-verified by actually running --version, which catches broken installs that command -v would miss.

Current status: released. list, doctor, check, audit, --dry-run, and consent-based install/update all work, verified by 150 tests plus real-channel runs on Linux containers, macOS, and Windows CI. SPEC.md holds the full design — confirmed decisions, architecture, the per-tool install/update matrix, and the test and release strategy. It is the single source of truth for this repository.

At A Glance

| Area | Current Value | | --- | --- | | Purpose | Detect · install (with consent) · update · verify AI coding CLIs | | Managed tools (v1) | claude, codex, gemini, kiro-cli, agy | | Platforms | macOS · Windows · Linux | | Stack | Rust (single binary) | | Status | Released — engine verified on all three OSes (150 offline tests + real-channel CI) | | Distribution | GitHub Releases · Homebrew tap · npm · crates.io · winget · Scoop · ghcr (Docker) | | Tests | 150 offline tests + Docker distro matrix + 3-OS CI with real-channel runs | | License | MIT | | Author | hyeonbungi |

Install

# Homebrew (macOS · Linux)
brew install hyeonbungi/tap/sync-ai-clis

# Shell installer (macOS · Linux)
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/hyeonbungi/sync-ai-clis/releases/latest/download/sync-ai-clis-installer.sh | sh

# npm
npm install -g sync-ai-clis

# cargo
cargo install sync-ai-clis
# winget (Windows)
winget install hyeonbungi.sync-ai-clis

# Scoop (Windows)
scoop bucket add hyeonbungi https://github.com/hyeonbungi/scoop-bucket
scoop install sync-ai-clis

# PowerShell installer (Windows)
powershell -ExecutionPolicy Bypass -c "irm https://github.com/hyeonbungi/sync-ai-clis/releases/latest/download/sync-ai-clis-installer.ps1 | iex"
# Docker / devcontainers — bake AI CLIs into your image (static musl binary, amd64+arm64)
COPY --from=ghcr.io/hyeonbungi/sync-ai-clis:latest /sync-ai-clis /usr/local/bin/sync-ai-clis
RUN sync-ai-clis --yes --only claude,gemini

Usage

The contract from SPEC.md §6, fully implemented:

sync-ai-clis                 # default: update installed tools, ask (y/N) before installing missing ones
sync-ai-clis --yes, -y       # non-interactive: install missing + update everything (CI-friendly)
sync-ai-clis --no-install    # update only, never offer to install
sync-ai-clis --only claude,gemini
sync-ai-clis --except kiro
sync-ai-clis --dry-run       # print the exact commands, execute nothing
sync-ai-clis list            # known tools + installed/current version table (alias: status)
sync-ai-clis doctor          # read-only diagnosis: broken, duplicate, or shadowed installs
sync-ai-clis check           # read-only: is an update available? signals via exit code (CI/cron/prompt badge)
sync-ai-clis audit           # read-only: did a remote install script change? unified diff, --accept to re-baseline
sync-ai-clis --json          # machine-readable summary

--only, --except, and --json are global flags, so they also work after subcommands, for example sync-ai-clis doctor --only gemini --json.

Exit codes: 0 all OK · 1 any failure · 2 usage error (check and audit add 10 = an update is available / a script changed). Configuration lives in ~/.config/sync-ai-clis/config.toml, and flags win over config.

Trust Model

This tool runs remote official installers (curl | bash, irm | iex) and package-manager commands, so its security rules are spelled out rather than left implicit (SPEC.md §5.5):

  • Install/update URLs are hardcoded official HTTPS constants in the tool registry — neither config nor flags can inject arbitrary URLs.
  • Installing a missing tool requires consent: an interactive prompt or an explicit --yes.
  • --dry-run prints exactly the commands that would run.
  • No automatic privilege escalation — the tool never runs sudo/UAC elevation on its own.

Repository Map

| Path | Purpose | | --- | --- | | SPEC.md | Design source of truth: decisions, architecture, tool matrix, test strategy | | Cargo.toml, src/ | Rust crate — engine, tool registry, CLI (see SPEC.md §5) | | tests/ | Integration tests (OS × state command-selection matrix, binary smoke) | | docker/ | Linux integration matrix — the only place real installs run locally | | .github/workflows/ | 3-OS CI, real-channel integration, release pipeline, winget publish | | dist-workspace.toml | Release and packaging configuration (dist) |

Development

cargo test                 # 150 offline tests — no network, no system changes
cargo fmt --check && cargo clippy --all-targets -- -D warnings
cargo run -- list          # read-only: detect tools and show versions
cargo run -- --dry-run     # show exactly what a sync would run, execute nothing
docker/run-matrix.sh       # real install/update integration (disposable containers only)

For the reasoning behind it — decisions, architecture, the per-tool command matrix, and the test strategy — see SPEC.md. Real installs and updates never run on a development machine; that is what the Docker matrix and CI runners are for.

Known Limitations

  • Kiro on Windows: needs Windows 11. Command selection is covered offline; full desktop install verification belongs in Windows CI or a disposable VM, not on a development machine.
  • Alpine/musl: the sync-ai-clis binary runs on musl, but most upstream installers do not ship musl builds yet.
  • Config [channels] overrides apply to update planning only. Missing-tool installs and doctor diagnostics still use the real detected state.

Maintenance Signals

Origin

This tool grew out of a personal macOS-only bash script (update-ai-clis) that updated and re-verified five AI CLIs. v1 generalizes it to three OSes, with consent-based installation of missing tools and public distribution channels.

Author

License

MIT. See LICENSE.