nmcli + btop + wireshark + dmidecode, one binary

Your terminal already runs
everything. Now it controls it too.

kanri is a vim-modal system powertool for Linux — network, process, memory, disk, and hardware, watched and controlled, from one TUI and one scriptable CLI. Every keybind and every kanri command runs through the exact same code underneath.

Six tabs. Nothing hidden behind a menu.

Read state and change it, from the same screen — WRITE marks the parts that don't just watch.

TabWhat's there
OverviewCPU, memory, network throughput, disk usage — sparklines and gauges, one glance at boot.
NetworkWRITEDevices & NetworkManager connections, WiFi connect, live diagnostics, socket list, WireGuard status/up/down, Tailscale status/up/down/exit-node, per-process bandwidth, subnet scan, live packet capture with real protocol dissection.
ProcessWRITESortable, filterable table. Per-core CPU strip. Kill and renice, straight from the keyboard.
MemoryUsed, available, free, swap — no unit conversion in your head.
DiskGrouped by physical drive, not a flat mount-point dump. Real capacities from sysfs. Collapse what you don't need to see.
HardwareHost, CPU, kernel, live sensor temperatures.

Built like a tool, not a dashboard

One action layer

Every keybind and every : command in the TUI dispatches through the exact same code as its CLI subcommand. Nothing the TUI can do that the CLI can't script, and vice versa.

Never grants its own privilege

WireGuard control and packet capture need root or capabilities kanri doesn't have by default — and won't silently acquire. You set that up once, scoped as narrowly as you want.

--json on everything

Every CLI subcommand's machine-readable output is the exact same data as its human-readable text. Pipe it, don't scrape it.

Install

Pick your OS.

kanri is a single binary. No runtime beyond what's listed per method.

One line, any distro
curl -fsSL https://kanri.management/install.sh | sh

Reads /etc/os-release and runs the exact commands below for your distro — including atomic/immutable Fedora images (Bazzite, Silverblue, Kinoite), which get routed to Nix instead of rpm-ostree. Prints every command before it runs it. Prefer to read the commands first, or your distro isn't one of the four below? Use the tabs.

Coming soon — not yet published to the AUR
Once published
yay -S kanri
Today, from the PKGBUILD directly
git clone https://git.kanri.management/jaghack/kanri.git
cd kanri/packaging/aur
makepkg -si
Live — signed apt repository, verified end-to-end on Debian 13
Add the repo, then install
# add the repo, then install
curl -fsSL https://kanri.management/apt/key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kanri.gpg
echo "deb [signed-by=/usr/share/keyrings/kanri.gpg] https://kanri.management/apt stable main" | sudo tee /etc/apt/sources.list.d/kanri.list
sudo apt update && sudo apt install kanri
Or build a local .deb yourself with cargo-deb
cargo install cargo-deb
git clone https://git.kanri.management/jaghack/kanri.git
cd kanri && cargo deb
Coming soon — not yet published to COPR
Today, build the real, verified spec directly
git clone https://git.kanri.management/jaghack/kanri.git
cd kanri
mkdir -p ~/rpmbuild/SOURCES ~/rpmbuild/SPECS
git archive --format=tar.gz --prefix=kanri-0.1.1/ v0.1.1 -o ~/rpmbuild/SOURCES/kanri-0.1.1.tar.gz
cp packaging/fedora/kanri.spec ~/rpmbuild/SPECS/
rpmbuild -bb ~/rpmbuild/SPECS/kanri.spec
sudo dnf install ~/rpmbuild/RPMS/x86_64/kanri-0.1.1-1*.rpm

On an atomic/immutable Fedora image (Bazzite, Silverblue, Kinoite, or another uBlue-style build)? rpm-ostree layering needs a reboot and most of these images don't ship cargo/clang at all. Use the install script above, or the NixOS tab's nix run line below — both install under Nix's own /nix prefix and never touch your base image.

flake.nix
{
  inputs.kanri.url = "git+https://git.kanri.management/jaghack/kanri.git";

  outputs = { self, nixpkgs, kanri, ... }: {
    nixosConfigurations.yourhost = nixpkgs.lib.nixosSystem {
      modules = [{
        environment.systemPackages = [ kanri.packages.x86_64-linux.default ];
      }];
    };
  };
}
Or try it without installing anything
NIXPKGS_ALLOW_UNFREE=1 nix run --impure git+https://git.kanri.management/jaghack/kanri.git

The unfree opt-in is required, not optional — kanri's license (Apache-2.0 + Commons Clause) isn't "free" in nixpkgs' own sense. --impure is required too, since a flake command needs it to read the env var at all.

Needs a Rust toolchain (edition 2024) and libclang
git clone https://git.kanri.management/jaghack/kanri.git
cd kanri
cargo build --release
./target/release/kanri
Or with Nix — no system Rust install needed
nix develop
cargo run
WireGuard control needs one sudo rule kanri never has standing root. Reading status and bringing an interface up/down go through sudo -n, scoped by you. See docs/wireguard.md in the repo.
Packet capture needs one-time setup Same idea as installing Wireshark itself — a capability grant or group membership, your choice. See docs/capture.md in the repo.