Skip to content
Start here

Installing InnerWarden

Every way to install the free InnerWarden Community guardrail on Linux, macOS, and Windows, and how to verify each download with checksums, signatures, and npm provenance.

Installing InnerWarden

For: anyone choosing how to install the free Community guardrail, from "give me the fastest command" to "show me the keys and let me verify every byte".

The Community edition is a single per-user binary (innerwarden, with iw and iw-guard aliases): pure Rust, no daemon, no kernel module. It runs entirely as your user, needs no root, and keeps its config under ~/.config/innerwarden. The one caveat is where a given package manager puts a global binary: npm install -g writes to npm's prefix, which is root-owned on a distro-packaged Node (see below). Every method below ends at the same signed binary. Pick the one you trust.

In a hurry? On macOS and Linux, curl -fsSL https://innerwarden.com/free | sh; on Windows, irm https://www.innerwarden.com/free.ps1 | iex. It picks the signed binary for your machine, checks its sha256 and its Ed25519 signature, and installs to ~/.local/bin without root. Everything else on this page is another route to the same signed binary: npm if you already live in npm, a native package if you want your system to track it, or from source if you want to build it yourself.


Or have your agent install it

If you already have a coding agent open, it can do all of this. Point it at the public innerwarden-skill repository and tell it:

install InnerWarden and verify it is actually screening my commands

It works out which machine it is on, installs the right way for it, wires your agent, and refuses to report success until scripts/verify-install.sh exits 0. That script does not check that files exist: it sends real commands through the guard and reads the verdicts, because "installed" and "protecting you" are different claims.

Every command on this page still works, and nothing here is skipped by taking that route. It is the same install, done by something that types faster.

The install methods

1. npm (all platforms, if you already use npm)

Same command on Linux, macOS, and Windows. Downloads a prebuilt binary, no compiler, no postinstall script. It is the only method here that carries npm provenance, so reach for it if that is what you want to verify against.

On Linux, expect this to need sudo. InnerWarden itself never needs root, but npm install -g needs write access to npm's global prefix, and on a distro-packaged Node (for example apt install npm on Ubuntu) that prefix is /usr/local/lib/node_modules, owned by root. Without sudo the command fails with EACCES before InnerWarden is reached. To keep everything in your user directory instead, point npm at a prefix you own first (npm config set prefix ~/.npm-global, then add ~/.npm-global/bin to your PATH), or use npx innerwarden, or use the shell installer, which needs no root on any platform.

npm install -g innerwarden
# or run it once without installing:
npx innerwarden --help

Under the hood, innerwarden is a tiny launcher that pulls in the one prebuilt package matching your OS and CPU (@innerwarden/cli-linux-x64, @innerwarden/cli-darwin-arm64, @innerwarden/cli-win32-x64, and so on). There is no install-time download and no postinstall step, so npm install --ignore-scripts works and the only artifact is the registry tarball. How to verify: see npm provenance below.

2. Debian / Ubuntu (.deb)

Download the package for your architecture and install it with apt. This is a native package: your system records it, and apt remove innerwarden uninstalls it.

# amd64 (Intel/AMD)
curl -fsSLO https://github.com/InnerWarden/innerwarden-releases/releases/download/iw-guard/innerwarden_amd64.deb
sudo apt install ./innerwarden_amd64.deb

# arm64
curl -fsSLO https://github.com/InnerWarden/innerwarden-releases/releases/download/iw-guard/innerwarden_arm64.deb
sudo apt install ./innerwarden_arm64.deb

Note the leading ./ so apt installs the local file rather than looking for a repository. These names always carry the current release; to pin an exact one, the same tag also holds innerwarden_<version>_amd64.deb. How to verify: see checksums below.

3. Fedora / RHEL / Rocky / openSUSE (.rpm)

# x86_64
sudo dnf install https://github.com/InnerWarden/innerwarden-releases/releases/download/iw-guard/innerwarden.x86_64.rpm

# aarch64
sudo dnf install https://github.com/InnerWarden/innerwarden-releases/releases/download/iw-guard/innerwarden.aarch64.rpm

(Use zypper install on openSUSE, or rpm -i directly.) How to verify: see checksums.

4. Shell installer (macOS / Linux)

The one-liner that selects the right signed binary for your machine, checks its SHA-256, and verifies its Ed25519 signature before installing.

curl -fsSL https://innerwarden.com/free | sh

Prefer not to pipe into a shell? Read it first, then run it:

curl -fsSL https://innerwarden.com/free -o install-innerwarden.sh
less install-innerwarden.sh          # read it
sh install-innerwarden.sh

Overrides: IW_GUARD_DIR (install dir, default ~/.local/bin), IW_GUARD_TAG (the release to pull from; defaults to iw-guard, the rolling release, which is the only published cut today), IW_GUARD_NO_HOOK=1 (skip wiring the agent hook).

5. Windows

PowerShell one-liner:

irm https://www.innerwarden.com/free.ps1 | iex

Or with Scoop, which resolves the current signed binary from its published manifest:

scoop install https://github.com/InnerWarden/innerwarden-releases/releases/download/iw-guard/innerwarden.json

6. Other binary installers (ubi, eget, mise)

These read the GitHub release directly, so there is nothing to trust beyond the signed binary itself.

# ubi (Universal Binary Installer)
ubi --project InnerWarden/innerwarden-releases --tag iw-guard --exe innerwarden --in ~/.local/bin

# eget
eget InnerWarden/innerwarden-releases --tag iw-guard --asset innerwarden --to ~/.local/bin

# mise (version manager, ubi backend)
mise use -g "ubi:InnerWarden/innerwarden-releases[exe=innerwarden,tag=iw-guard]"

7. From source (Rust)

cargo install --git https://github.com/InnerWarden/inner-warden innerwarden

This compiles from source, so it is the slowest path and the one with prerequisites: a Rust toolchain (rustup) and a C linker, which a minimal Linux image does not ship. On a stock Ubuntu or Debian, sudo apt-get install -y build-essential; on Fedora or RHEL, sudo dnf install -y gcc. Without a linker the build stops at linker `cc` not found while compiling the first proc-macro crate. Every other method on this page is a prebuilt binary and needs none of this. cargo install innerwarden and cargo binstall innerwarden (which fetches the prebuilt binary) are coming once the crate is published to crates.io.


Verifying your download

Every method ends at the same signed artifact, but each gives you a different way to prove you got the real one.

npm provenance

Each npm package ships a signed provenance attestation that links it to this source repository and the exact CI build that produced it. npm verifies the registry signature automatically on install. To inspect or verify it yourself:

# in a project that depends on innerwarden
npm audit signatures

The provenance is also shown on the package page at npmjs.com/package/innerwarden. This is the strongest chain: registry signature plus a build attestation, no key handling on your side.

Checksums (.deb, .rpm, and binaries)

Every release asset publishes a .sha256 next to it. For the Linux packages the file is in standard format, so you can check it directly:

curl -fsSLO https://github.com/InnerWarden/innerwarden-releases/releases/download/iw-guard/innerwarden_amd64.deb
curl -fsSLO https://github.com/InnerWarden/innerwarden-releases/releases/download/iw-guard/innerwarden_amd64.deb.sha256
sha256sum -c innerwarden_amd64.deb.sha256      # macOS: shasum -a 256 -c
#   -> innerwarden_amd64.deb: OK

Ed25519 signatures (most paranoid)

Every release binary also ships an Ed25519 .sig, and the release publishes its public key as innerwarden-release.pub. The signature is Ed25519 over the SHA-256 digest of the binary, so a tampered mirror or a swapped asset is rejected, not just a corrupted download.

base=https://github.com/InnerWarden/innerwarden-releases/releases/download/iw-guard
asset=innerwarden-linux-x86_64            # pick your os/arch

curl -fsSLO "$base/$asset"
curl -fsSLO "$base/$asset.sig"
curl -fsSLO "$base/innerwarden-release.pub"

# Needs OpenSSL >= 1.1.1. On macOS install it (brew install openssl@3) since the
# system LibreSSL cannot verify Ed25519; use its full path if `openssl` is LibreSSL.
openssl dgst -sha256 -binary "$asset" > digest.bin
base64 -d < "$asset.sig" > sig.bin        # macOS: base64 -D
openssl pkeyutl -verify -pubin -inkey innerwarden-release.pub -rawin -in digest.bin -sigfile sig.bin
#   -> Signature Verified Successfully

install -m 0755 "$asset" ~/.local/bin/innerwarden

The curl | sh installer does exactly this automatically, against a public key pinned inside the installer itself, so it rejects a swapped binary even from a compromised release host. For the strongest guarantee, compare innerwarden-release.pub against the key fingerprint published out of band, so no single host controls both the binary and the key.


After installing

innerwarden setup          # guided onboarding: how you get alerts, monitor mode
innerwarden dashboard      # the local security record and detected agents
innerwarden --version

InnerWarden starts in monitor mode: nothing is blocked until you choose enforcement. It makes no network calls beyond the download, and the optional install ping is opt-in only. To remove it: innerwarden uninstall, then delete ~/.config/innerwarden for all state.