1.60.0 - Compact mode, Terminate on local, Performance and Accuracy improvements
Hi All,
Happy to release the latest version of socktop and socktop agent. This releases features have been primarily driven by 2 other projects I am working on socktop-swipe and the Sway Desktop for the Argon One UP.
This release features 2 major feature updates, the first being compact mode.
Compact Mode
When presented in a small window I wanted to make sure the most important information was being presented. This was primarily driven when socktop was being displayed on a kiosk type screen along side other windows via terminal multiplexer.
Kill Local Process
The second feature added was to allow process termination only when on local clients. I had made conscious decision not to allow process termination through through socktop_agent in an effort to reduce potential attack vectors. But as I am using socktop to monitor my local system often and package it with my sway distro I wanted to make it the only system monitor you needed to install. The kill command is processed through the tui, so the agent still lacks this capability and the option will only appear when local monitoring is detected.
Additionally the following changes are available with this release.
Security
- Found an issue where a TLS certificate from another agent machine could be used to connect to a mismatched agent. The presented certificate must now be byte-identical to one in the pinned PEM (multi-cert files supported for rotation). If you use TLS, update your client.
- key.pem is created with mode 0600 (was world-readable 0644); agents also tighten existing keys on startup.
- The agent's per-PID caches now evict (60s age / 64 entries); previously they grew without bound.
- Updated multiple packaged crates with security patches available.
Performance
- Agent CPU on GPU machines cut ~6× (measured 23.5 → 4.0 ms/s at default polling): GPU collection moved to a dedicated worker thread that keeps the NVML session open instead of re-initializing it every 1.5 s on the async runtime.
- journalctl no longer blocks the agent's async workers.
- Cached "no temp sensor / no GPU" results count as fresh
- Nagle disabled on all connection paths (small request/response frames).
Tui
- Updated to ratatui .30
- keys and mouse are handled within ~30 ms instead of queueing for a full metrics interval.
- all requests carry a 5 s timeout; a dead connection shows the reconnect modal (with working q) instead of hanging the UI. Consecutive timeouts surface a persistent "agent not responding" error.
- Old agents without the per-process endpoints once again show "Agent Update Required" instead of a reconnect loop.
- Journal pane distinguishes "no entries" from "no journal access"
- Scatter-plot axes align correctly for large CPU-time values.
- Demo mode explains how to install socktop_agent when the binary is missing.
Full changelog below:
What's Changed
- Bump time from 0.3.44 to 0.3.47 by @dependabot[bot] in #29
- Bump bytes from 1.11.0 to 1.11.1 by @dependabot[bot] in #28
- Bump bytes from 1.10.1 to 1.11.1 in /socktop_wasm_test by @dependabot[bot] in #27
- Bump rustls-webpki from 0.103.8 to 0.103.10 by @dependabot[bot] in #30
- Bump rustls-webpki from 0.103.10 to 0.103.13 by @dependabot[bot] in #32
- Bump rand from 0.8.5 to 0.8.6 by @dependabot[bot] in #31
- chore: update ratatui from 0.28 to 0.30 by @jasonwitty in #33
- Add Debian packaging support for socktop-agent by @jasonwitty in #25
- fix(deps): patch all open Dependabot alerts (aws-lc-sys 0.33.0 → 0.42.0) by @jasonwitty in #34
- fix(socktop): explain how to install socktop_agent when demo mode can't find it by @jasonwitty in #36
- feat(ui): compact layout for small terminal windows by @jasonwitty in #37
- fix(ui): keep the important text visible on narrow terminals by @jasonwitty in #38
- housekeeping-p2: security, correctness, and performance pass before 1.51 by @jasonwitty in #39
- Kill a local process from the TUI, and stop the agent reporting dead ones by @jasonwitty in #40
New Contributors
- @dependabot[bot] made their first contribution in #29
Full Changelog: v1.50.0...v1.60.0