tui-tools

tui-network

Links, addresses, routes and DNS, with every change previewed before it runs

v0.1.1networkMIT
The links table: state, type, address, gateway and who manages each link
The links table: state, type, address, gateway and who manages each link

A terminal UI for the machine's network. It shows the links you actually have — state, type, addresses, gateway, MAC, MTU and driver — with the routing table, what systemd-resolved is using for DNS, and the .network file behind each link.

Open a link and you get the whole picture in one screen: its addresses and where each came from, its routes, its DNS servers and search domains, its DHCP lease, the .network file that configures it, and what systemd-networkd has been saying about it in the journal.

Changes are previewed. Bringing a link up or down, reconfiguring it, renewing a lease, setting DNS at runtime, and editing a .network file — which shows a unified diff and then installs the file and reloads networkd — all go through a confirm dialog carrying the exact command line. A link systemd-networkd does not manage, because NetworkManager owns it, is shown read-only with the reason.

Run tui-network --demo to drive a sample machine: every key works, every command is built and previewed for real, and nothing touches your system.

Keys

KeyAction
enterOpen the selected link
u / dBring the link up or take it down
cReconfigure the link from its .network file
nRenew the link's dynamic lease
eEdit the link's .network file, with a diff to confirm
s / SSet the link's DNS servers or search domains
fFlush the resolver cache
rReload the networkd configuration files
/Filter links across every column
RRe-read the network
?Help
qQuit

Press ? inside the tool for the full help screen, which is generated from the same action table as the key map.

Compatibility

This tool is a face on the program below, so its version matters.Tested is not a claim: a version lands there only after the tool's own suite passed against it on a real machine in the lab, and the run is kept as evidence in the repository. At startup the tool probes the backend once and says what it found in its header — a version nobody has run against is shown as(untested) in the warning colour, one older than the minimum as (below minimum) in the error colour. Neither stops it: the backend still refuses what it cannot do, in its own words.

systemd-networkd

networkctl ≥ 245
Binary
networkctl
Minimum
245
Probed with
networkctl --version
Tested
255257259261

Needs a version this new

  • json-statussince 249
  • link-up-downsince 249

What changes on older versions

  • systemd-networkd <249

    networkctl --json does not exist, so the columns of networkctl list and the Key: value block of networkctl status are parsed instead; addresses carry no prefix length there, and the DHCP lease clock is not reported at all

  • systemd-networkd <249

    networkctl up and down do not exist; the keys are dropped from the hint bar and reconfigure is offered in their place

  • systemd-networkd >=245

    no released systemd emits JSON from resolvectl status, so DNS servers and search domains are read from the text output of resolvectl dns and resolvectl domain

Install

Once per machine, then every tool in the family is one pacman away.

Add the repository
$ curl -fsSL https://pkgs.tui.tools/install.sh | sh
Or run the same thing yourself, one command at a time

A family whose whole promise is preview before you run is not going to insist you pipe a script into a shell. These are the commands that script runs.

The one-time setup, by hand
$ curl -fsSL -o /tmp/tui-tools.asc https://pkgs.tui.tools/pubkey.asc
  sudo pacman-key --add /tmp/tui-tools.asc
  sudo pacman-key --lsign-key \
    "$(gpg --show-keys --with-colons /tmp/tui-tools.asc | awk -F: '/^fpr:/{print $10; exit}')"
  printf '[tui-tools]\nServer = https://pkgs.tui.tools/arch/$arch\n' \
    | sudo tee -a /etc/pacman.conf
  sudo pacman -Sy
Arch Linux · tui-network
$ sudo pacman -S tui-network

Upgrades then arrive with the rest of your system updates.

What it can do to your machine

  • Preview, then confirm

    Every change is shown as an exact command line and confirmed before it runs. The dialog and the runner receive the same value, so the preview cannot drift from what executes.

  • Escalates for actions

    Reads are unprivileged: networkctl list, resolvectl dns and ip route answer to any user. Escalation is sudo -n, which never prompts: the 0640 .network file netplan renders, and every change — up/down, reconfigure, renew, DNS, install, reload.

  • No daemon, no state of its own

    Nothing keeps running after you quit, and nothing is installed to run later. The system is the source of truth; the tool re-reads it after every change.

  • No network access

    The tool opens no network connection of its own. No telemetry, no update check, no phone home.

  • Static binary

    Released statically linked, with no runtime dependencies to install.

  • Releases are not signed yet

    Releases carry SHA-256 checksums but no signature. Verify the checksum, and read this as the open item it is.

Reporting

Report a security issue privately, through GitHub's private vulnerability reporting on the repository's Security tab. The family-wide policy, and what counts as in scope, is on the security page.

Downloads

v0.1.1 · 2026-08-30
FileSizeSHA-256
checksums.txt800 B
tui-network-0.1.1-1-aarch64.pkg.tar.zst1.7 MB417af6596ee1fc30c316c775902d946d7866f829ea9f4a28bb02270d0bcacca3
tui-network-0.1.1-1-x86_64.pkg.tar.zst1.9 MBcf53295442e5d7221ba3748ebd61a61d09afbe769602e0b7af7ee470497817f5
tui-network-0.1.1-1.aarch64.rpm1.7 MB601bca578f5b4a09769a2c14f26755f667387f7a247314ee91370a0a7b986ae1
tui-network-0.1.1-1.x86_64.rpm1.9 MBf2604a155d61ea1fe6a07e14bd29bd967c405de283a2632d3b4f1b83f3de3ae3
tui-network_0.1.1_amd64.deb1.9 MB340e8ee1343d95c2a3f29e287a78cd17eef251ea5907d27158838334b1e482f2
tui-network_0.1.1_arm64.deb1.7 MBada18f322d606363fd4af88a532b4a7c43aa3c44f58e730a62a58bb79cd95adc
tui-network_0.1.1_linux_amd64.tar.gz1.8 MBc35570e58d3c9592d357e552a752e53a176387d87ef8d15d4b19b11625d83639
tui-network_0.1.1_linux_arm64.tar.gz1.7 MBbf6f7c9ce310fdc232b2db4e69bc319f1b1776c388324a946cbebf924f495e82

Every release ships a checksums.txt. Download it next to the archive and run sha256sum -c checksums.txt --ignore-missing. See verifying a download.

Releases

v0.1.1

2026-08-30
## Changelog
* ccdb2902d759995b7ee43ce29d09bcffe1804a97 Bump the github-actions group with 5 updates (#1)
* a2f49b8122405212975e1d32dbc85d9f212779d9 Packages are available from pkgs.tui.tools
* 9a04b3e925fa33db0f32006d011c699603784bb7 Point the install line at v0.1.0
* a1816df47018de2a0ffabae96d8605de3b0fe15e Re-pin the kit at v0.2.3
* 7c36585f99c3fc9f347113c05d3da44fda406715 Read the .network file netplan hides, and prove it on three machines
* 8d5b3ddc0937100dba0afc4a4cae62416f21cc50 Ship the tool as a .deb, an .rpm and a pacman package
* 0e1fca0d9294a83ab72a2b75d2e6dc0ba130db3b Trim needs_sudo back under the manifest's 300-character cap

v0.1.0

2026-08-30
## Changelog
* 11031373f2496eaf83ff162a27d9d549a04e88bd Give it a face: the branding, six frames and the README
* 8d28b3cd0fcbba62e61c0405d6f6c81f4c5f52c1 Initial commit
* 85ba4845f42a4dd8d438a32a2ded0e7d044ee81b Keep the sudo note inside what the schema allows
* dab17731572c36decbcd75e39d506c94a5bcba66 Prove it against a real machine, and record which one
* 234f591f987db4673aa800d4a991d95d855b8b7f Read the network: the model, the backend and its parsers
* 82dcc79151c850bd5501e5799144e8528eded661 Start tui-network from the family template
* e146699e26eef235870a2a662e6b490064006efb The screens: a link list, a link in full, and one confirm dialog