kage

Realtime computer monitoring with live connection watch and one-key block

v1.0.0
Linux

Quick Start

Install via jcli (recommended)

jcli install kage

Open the dashboard

kage                                # fullscreen TUI (default)
kage --full                          # enable block / kill / unblock keybinds
kage snapshot -o json | jq .host     # one-shot, scriptable
kage --doh net                       # include public IP (off by default)

What it does

kage (影, "shadow") is a realtime computer monitor with seven live panes: host header, CPU per-core, memory, disks, network, processes — and a dedicated CONNECTIONS pane in orange that blinks for the first 3 s of every new socket. Catch a stranger before it gets comfortable; one keystroke blocks it via nftables.

TUI keybinds

KeyActionGate
q / EscQuit
?Help modal
TabToggle focus between Connections and Processes
j / kMove selection in focused pane
/Filter connections by text (proto / process / remote IP)
pPause sampling
c / m / n / PSort processes by cpu / mem / name / pid
bBlock selected remote IP via nftables--i-am-authorized
uUnblock selected remote IP--i-am-authorized
tToggle trust list membership
dReverse-DNS lookup for selected remote IP
K (shift)SIGTERM the owning process--i-am-authorized

Subcommands

CommandWhat it does
kageFullscreen TUI dashboard (default)
kage snapshotOne-shot dump — host / cpu / memory / disks / network / connections / top procs
kage top --by cpu|mem|pid|name -n NFocused process table
kage netInterfaces, public IP (with --doh), gateway
kage diskMounted block devices + IO rates
kage connections [--filter X]Active TCP/UDP table, optionally filtered

Global flags

FlagWhat it does
--dohAllow Cloudflare DoH for public-IP lookup (OFF by default — privacy)
--i-am-authorizedREQUIRED for any write action (block / unblock / kill). Suite consent convention
--fullShow extended help (cheat-sheet, or per-subcommand worked examples)
--persistPersist block rules to /etc/nftables.d/kage.nft (needs root)
-o, --output text|jsonOutput format for one-shot subcommands
--no-colorDisable ANSI colour

On-disk layout

~/.config/kage/trust.json      # trusted IPs (silenced + green)
~/.config/kage/block.json      # session block list
/etc/nftables.d/kage.nft       # with --persist, root-owned

The KAGE_HOME env var overrides the default config dir. Block / kill writes are explicitly gated by --full; the trust list is editable without it.

Touches / Produces / Gates