Installation
Ninja ships as a single static binary (~6 MB compressed download). No Node, Python, or runtime service required.
One-line install
Linux / macOS
curl -sfL https://ninja-cli.btaskee.work/install.sh | bash
Mirror (same deploy):
curl -sfL https://ninja-cli.pages.dev/install.sh | bash
Installs to ~/.local/bin/ninja. Pin a version:
NINJA_VERSION=v0.1.0-beta.1 curl -sfL https://ninja-cli.btaskee.work/install.sh | bash
Windows (PowerShell)
irm https://ninja-cli.btaskee.work/install.ps1 | iex
Installs to %LOCALAPPDATA%\ninja and adds it to user PATH. Open a new terminal afterward.
Git Bash / MSYS / WSL can use the bash installer.
macOS Gatekeeper
If macOS blocks the binary:
xattr -d com.apple.quarantine ~/.local/bin/ninja
Manual download
Compressed artifacts under https://ninja-cli.btaskee.work/releases/latest/:
| Platform | File |
|---|---|
| Linux amd64 | ninja-linux-amd64.gz |
| Linux arm64 | ninja-linux-arm64.gz |
| macOS Apple Silicon | ninja-darwin-arm64.gz |
| macOS Intel | ninja-darwin-amd64.gz |
| Windows amd64 | ninja-windows-amd64.exe.zip |
| Windows arm64 | ninja-windows-arm64.exe.zip |
Unix example:
curl -sfL -o ninja.gz https://ninja-cli.btaskee.work/releases/latest/ninja-linux-amd64.gz
gzip -dc ninja.gz > ninja && chmod +x ninja
mv ninja ~/.local/bin/ninja
Verify install
ninja --version
ninja doctor # config, model endpoint, MCP, session dir
doctor works even before a model is reachable (it will report endpoint status).
Uninstall / remove
Ninja is a single binary plus optional config and session data. There is no
package manager entry to reverse — delete the paths you care about.
Linux / macOS — binary only
rm -f ~/.local/bin/ninja
Linux / macOS — full remove (binary + config + sessions)
# Binary
rm -f ~/.local/bin/ninja
# Config, MCP, user skills, allowlists, cloudflare.env, …
# Linux: ~/.config/ninja
# macOS: ~/Library/Application Support/ninja
rm -rf ~/.config/ninja
rm -rf "$HOME/Library/Application Support/ninja" # macOS only if present
# Saved sessions (Linux / macOS)
rm -rf ~/.local/share/ninja
Project-local data (optional — only in repos where you ran Ninja):
# From a project root
rm -rf .ninja
Windows (PowerShell) — binary only
Remove-Item -Force "$env:LOCALAPPDATA\ninja\ninja.exe" -ErrorAction SilentlyContinue
# Optional: remove install dir if empty of other files
Remove-Item -Recurse -Force "$env:LOCALAPPDATA\ninja" -ErrorAction SilentlyContinue
If the installer added %LOCALAPPDATA%\ninja to your user PATH, remove
that entry in *Settings → System → About → Advanced system settings →
Environment Variables*, or:
$userPath = [Environment]::GetEnvironmentVariable("Path", "User")
$installDir = Join-Path $env:LOCALAPPDATA "ninja"
$parts = $userPath -split ";" | Where-Object { $_ -and ($_ -ne $installDir) }
[Environment]::SetEnvironmentVariable("Path", ($parts -join ";"), "User")
Windows — full remove
Remove-Item -Recurse -Force "$env:LOCALAPPDATA\ninja" -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force "$env:APPDATA\ninja" -ErrorAction SilentlyContinue
# Project-local (from each repo):
# Remove-Item -Recurse -Force .ninja -ErrorAction SilentlyContinue
What each path is
| Path | Contents |
|---|---|
~/.local/bin/ninja or %LOCALAPPDATA%\ninja\ninja.exe |
The binary |
Config dir (~/.config/ninja, macOS Application Support, or %APPDATA%\ninja) |
config.json, mcp_config.json, user skills, allowlists, optional Cloudflare env |
~/.local/share/ninja/sessions (Unix) |
Saved chat sessions |
.ninja/ in a project |
Project skills, allowlists, MCP override |
Builtin Ninjaskills live inside the binary only (not on disk). Removing the
binary is enough to drop them; user skills under the config skills dir are
removed with the config directory.
Next
- Quickstart — first conversation
- Configure models — planner vs coder