aptmatic-0.1.0 is not a library.
aptmatic ๐ค๐ฆ
Because SSHing into 40 servers one by one to run
apt-get upgradeis a cry for help.
A snappy terminal UI for wrangling apt across a fleet of Debian/Ubuntu hosts โ written in Rust, because I don't know how to code in OCaml.
โญโ aptmatic โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ Hosts โ Detail โ
โ โธ webservers โ web1.example.com โ
โ โ web1 [2] โ user: ubuntu port: 22 sudo: true โ
โ โ web2 โ โ
โ โธ databases โ Status: 2 upgrade(s) available โ
โ โ ธ db1 โ โ
โ โ db2 โ Kernel โ
โ โ Running: 6.1.0-28-amd64 โ
โ โ Latest: linux-image-6.1.0-32-amd64 โ reboot to activate โ
โ โ โ
โ โ Upgradable โ
โ โ curl (7.88.1-10 โ) 7.88.1-10+deb12u8 โ
โ โ libcurl4 (7.88.1-10 โ) 7.88.1-10+deb12u8 โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
r:refresh R:refresh all u:update U:upgrade p:purge-rc t:task output z:zoom q:quit
Features
- ๐ฅ๏ธ Multi-host dashboard โ see every host's status at a glance
- ๐ฅ Groups โ organise hosts and trigger actions on a whole group at once
- ๐ SSH native โ talks directly to each host over SSH, no agents or daemons required
- ๐ Live task output โ watch
apt-get upgradescroll by in real time - ๐ง Kernel tracking โ know which hosts are silently waiting for a reboot
- ๐ฆ Held/kept-back packages โ spot the stragglers and why they're stuck
- ๐งน RC package purging โ one key to purge all those half-removed ghosts
- ๐ฑ๏ธ Draggable divider โ because you deserve to customise your own TUI
- ๐ฆ Written in Rust โ guaranteed* to have no bugs
* guarantee void where prohibited by logic
Installation
Or build from source:
# binary at ./target/release/aptmatic
Configuration
aptmatic looks for its config at ~/.config/aptmatic.toml by default. Pass -c /path/to/config.toml to override.
[]
= "ubuntu"
= 22
= true
[[]]
= "webservers"
[[]]
= "web1.example.com"
[[]]
= "web2.example.com"
= "admin" # override per-host
[[]]
= "databases"
[[]]
= "db1.example.com"
Keybindings
| Key | Action |
|---|---|
โ / k |
Move up |
โ / j |
Move down |
r |
Refresh selected host(s) |
R |
Refresh all hosts |
u |
apt-get update on selected |
U |
apt-get upgrade on selected |
p |
Purge RC packages on selected |
t / Enter |
View live task output |
z |
Zoom โ hide sidebar for clean copy/paste |
q / Esc |
Quit |
The sidebar divider is also mouse-draggable if you're feeling fancy.
Development
Why?
Managing a modest fleet of Linux boxes with apt should not require an orchestration platform, a PhD in Ansible, or accepting a cookie banner. aptmatic is a single binary, a TOML file, and a spare SSH key away from a good time.