A vim-modal system powertool: network, process, memory, disk, and hardware monitoring/control in one TUI + CLI
  • Rust 87.3%
  • HTML 6%
  • CSS 3.3%
  • Shell 2.5%
  • Nix 0.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
JagHack d36ca69ed8 Add :q / :q! to the command line to quit the TUI
The `:` prompt only ever ran text through the Cli grammar, so vim
muscle memory (`:q`) fell through to a "unrecognized subcommand"
error instead of quitting — there's no real `kanri q` CLI action to
back it, since quitting only makes sense from the TUI. Short-circuit
both spellings in run_tui_command before Cli::try_parse_from.
2026-09-22 13:54:31 +02:00
docs Add Fedora (COPR) packaging + a universal install script 2026-09-18 16:42:57 +02:00
packaging Add Fedora (COPR) packaging + a universal install script 2026-09-18 16:42:57 +02:00
src Add :q / :q! to the command line to quit the TUI 2026-09-22 13:54:31 +02:00
website install.sh: fix git flake ref for the v0.1.1 tag 2026-09-18 16:44:43 +02:00
.gitignore Initial implementation: kanri, a vim-modal system powertool 2026-09-16 14:39:51 +02:00
Cargo.lock Bump to v0.1.1 — the first release that actually includes LICENSE 2026-09-17 14:44:30 +02:00
Cargo.toml Bump to v0.1.1 — the first release that actually includes LICENSE 2026-09-17 14:44:30 +02:00
flake.lock Add packaging, docs, and README for public release 2026-09-16 23:21:16 +02:00
flake.nix Add Fedora (COPR) packaging + a universal install script 2026-09-18 16:42:57 +02:00
LICENSE License kanri: Apache License 2.0 with the Commons Clause condition 2026-09-17 14:40:01 +02:00
README.md License kanri: Apache License 2.0 with the Commons Clause condition 2026-09-17 14:40:01 +02:00
shell.nix Initial implementation: kanri, a vim-modal system powertool 2026-09-16 14:39:51 +02:00

kanri (管理)

A vim-modal system powertool for Linux — the functionality of nmcli/nmtui, btop, du(f)/df, dmidecode, free/top/vmstat, plus real WireGuard, Tailscale, and packet capture, in one TUI and one scriptable CLI. Not two separate tools sharing a name — one shared action layer behind both: every keybind and every : command in the TUI runs through the exact same code as its CLI subcommand.

kanri              # TUI
kanri proc list    # CLI, same underlying action
kanri disk --json  # machine-readable

What's in it

  • Overview — CPU/memory/network/disk at a glance, real sparklines and gauges
  • Network — devices & connections (NetworkManager), live diagnostics, socket list, WireGuard status + up/down, Tailscale status + up/down/exit-node, per-process bandwidth, subnet scan, live packet capture (Wireshark-style dissection)
  • Process — sortable/filterable table, per-core CPU strip, kill/renice
  • Memory, Disk (grouped by physical drive, real capacities, collapsible), Hardware (host/CPU/kernel/sensors)

100% vim-modal (hjkl, gg/G, : command line, / live filtering — contextual to whatever list is on screen), fully remappable, live theme hot-reload, zero config required.

Install

See docs/install.md — Arch, Debian/Ubuntu, NixOS, or build from source.

Docs

Design notes

  • One action layer. Action (also a clap::Subcommand) is dispatched identically whether it came from a shell argv or the TUI's : line parsed with the same grammar. There is exactly one implementation per action.
  • Never grants its own privilege. WireGuard control and packet capture both need root/capabilities kanri doesn't have by default and won't silently acquire — see the docs above for the one-time setup, scoped as narrowly as you want it.
  • --json on everything that has a CLI form — same data as the human-readable text, nothing summarized differently between the two.

Status

Actively developed, pre-1.0. Source lives on this project's own self-hosted Forgejo instance, not GitHub.

License

Apache License 2.0 with the Commons Clause condition. In plain terms: free to use, modify, and redistribute for any purpose — including inside a company, privately — except selling it (the software itself, or a derivative, as a product or paid service). Any modified file must be marked as changed, so credit follows even a small edit through to anyone who receives it.

This isn't an OSI-approved "open source" license — the no-selling condition is a real restriction on top of Apache-2.0, not compatible with the open source definition's "no restrictions on fields of endeavor" requirement. It's source-available, not open source, on purpose.