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? npm install -g innerwarden (or npx innerwarden). It is the trusted default: a prebuilt binary with signed npm provenance, the same command on every OS, nothing runs at install time. Everything else on this page is for people who want a native package, a specific tool, or byte-level verification.


The install methods

Same command on Linux, macOS, and Windows. Downloads a prebuilt binary, no compiler, no postinstall script.

InnerWarden itself never needs root. npm install -g does need write access to npm's global prefix, and on a distro-packaged Node (for example apt install npm on Ubuntu) that prefix is root-owned, so the command needs sudo there. To keep it entirely in your user directory, 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 install by any other method on this page.

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_1.3.2_amd64.deb
sudo apt install ./innerwarden_1.3.2_amd64.deb

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

Note the leading ./ so apt installs the local file rather than looking for a repository. 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-1.3.2-1.x86_64.rpm

# aarch64
sudo dnf install https://github.com/InnerWarden/innerwarden-releases/releases/download/iw-guard/innerwarden-1.3.2-1.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://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 and needs a Rust toolchain, so it is the slowest path. 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_1.3.2_amd64.deb
curl -fsSLO https://github.com/InnerWarden/innerwarden-releases/releases/download/iw-guard/innerwarden_1.3.2_amd64.deb.sha256
sha256sum -c innerwarden_1.3.2_amd64.deb.sha256      # macOS: shasum -a 256 -c
#   -> innerwarden_1.3.2_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.