dsmview/README.md
Jan Vetesnik af63fc7b15 feat: initial dsmview - TUI SSH monitor for Synology DSM 7.x
- Python 3.12+ / Textual TUI with btop-style theme and 4 tabs
  (Dashboard, Logs, Services, Disks)
- Paramiko SSH layer with ssh_config support, key fallback,
  keepalive and reconnect; async executor over a thread pool
- Read-only collectors for system, storage, disks, network,
  logs and services; confirm dialog gates service restart/stop/start
- Click CLI: dsmview ssh [-p PORT] [-i KEY] TARGET
- Homebrew formula using virtualenv_install_with_resources
- GitHub Actions release workflow: builds source tarball,
  regenerates Python resource blocks via homebrew-pypi-poet,
  pushes updated formula to janvete/homebrew-dsmview tap

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-13 16:12:58 +02:00

52 lines
1.4 KiB
Markdown

# dsmview
TUI SSH monitor for Synology DSM 7.x — read-only dashboard inspired by `btop`.
```
brew tap janvete/dsmview
brew install dsmview
```
## Usage
```
dsmview ssh -p334 root@192.168.1.100
dsmview ssh root@192.168.1.100 # default port 22
dsmview ssh nas-home # alias from ~/.ssh/config
dsmview ssh -i ~/.ssh/id_nas root@IP
```
Reads `~/.ssh/config` (HostName, Port, IdentityFile, ProxyJump). Tries
`id_ed25519`, `id_ecdsa`, `id_rsa`, then the SSH agent. Falls back to a
password prompt only when no key works.
## Read-only philosophy
The application only reads data from the NAS. No agent is installed, no
configuration is touched. The single exception is start/stop/restart of a
service — and that requires explicit confirmation in the UI.
## Tabs
- **F1 Dashboard** — CPU history graph, memory, storage pools, network
throughput, load average, temperatures.
- **F2 Logs** — live tail of `/var/log/messages` and `/var/log/auth.log`
with severity filters (ALL / ERROR / WARN / SECURITY / INFO).
- **F3 Services** — `synoservicectl --list` table with up/down status and
restart/stop/start actions.
- **F4 Disks** — per-disk model/size/temp/health from `smartctl` plus RAID
status from `/proc/mdstat`.
## Keys
```
F1..F4 switch tab
r refresh now
q quit
```
## Requirements
- Python 3.12+
- Synology DSM 7.x with SSH enabled and a user that can run system commands
(typically `root` or a user in `administrators`).