2a7951cf65
On Debian and derivatives the NVIDIA driver ships only libnvidia-ml.so.1 (the unversioned symlink belongs to the dev package), and nvml-wrapper's default init dlopens the unversioned name — so gfxinfo reported 'No GPU found' on a fully functional RTX A2000 host while nvidia-smi worked fine. Arch-family distros ship the symlink, which is why the desktop never showed this. The GPU worker now falls back to initializing NVML directly with the versioned soname when gfxinfo's probe fails, collecting name/util/vram through the same handle-caching path. nvml-wrapper was already in the tree via gfxinfo — same version, no new build cost. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
72 lines
2.8 KiB
TOML
72 lines
2.8 KiB
TOML
[package]
|
|
name = "socktop_agent"
|
|
version = "1.60.0"
|
|
authors = ["Jason Witty <jasonpwitty+socktop@proton.me>"]
|
|
description = "Socktop agent daemon. Serves host metrics over WebSocket."
|
|
edition = "2024"
|
|
license = "MIT"
|
|
readme = "README.md"
|
|
homepage = "https://github.com/jasonwitty/socktop"
|
|
repository = "https://github.com/jasonwitty/socktop"
|
|
|
|
[dependencies]
|
|
# Tokio: minimal features instead of "full" to reduce binary size.
|
|
# rt-multi-thread (runtime), net (WebSocket), sync (Mutex/oneshot),
|
|
# macros (#[tokio::test]), process (async journalctl).
|
|
tokio = { version = "1", features = ["rt-multi-thread", "net", "sync", "macros", "process"] }
|
|
axum = { version = "0.7", features = ["ws", "macros"] }
|
|
sysinfo = { version = "0.37", features = ["network", "disk", "component"] }
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
flate2 = { version = "1", default-features = false, features = ["rust_backend"] }
|
|
futures-util = "0.3.31"
|
|
tracing = { version = "0.1", optional = true }
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"], optional = true }
|
|
gfxinfo = { version = "0.1.2", optional = true }
|
|
# Direct NVML fallback for distros that ship only libnvidia-ml.so.1 (Debian
|
|
# and derivatives) — gfxinfo's default init dlopens the unversioned name.
|
|
# Same version gfxinfo already pulls in, so this adds no new build cost.
|
|
nvml-wrapper = { version = "0.10", optional = true }
|
|
once_cell = "1.19"
|
|
axum-server = { version = "0.7", features = ["tls-rustls"] }
|
|
rustls = { version = "0.23", features = ["aws-lc-rs"] }
|
|
rustls-pemfile = "2.1"
|
|
rcgen = "0.13"
|
|
anyhow = "1"
|
|
hostname = "0.3"
|
|
prost = { workspace = true }
|
|
time = { version = "0.3", default-features = false, features = ["formatting", "macros", "parsing" ] }
|
|
|
|
[features]
|
|
default = ["gpu"]
|
|
gpu = ["gfxinfo", "nvml-wrapper"]
|
|
logging = ["tracing", "tracing-subscriber"]
|
|
|
|
[build-dependencies]
|
|
prost-build = "0.13"
|
|
tonic-build = { version = "0.12", default-features = false, optional = true }
|
|
protoc-bin-vendored = "3"
|
|
|
|
[dev-dependencies]
|
|
assert_cmd = "2.0"
|
|
tempfile = "3.10"
|
|
tokio-tungstenite = "0.21"
|
|
|
|
[package.metadata.deb]
|
|
maintainer = "Jason Witty <jasonpwitty+socktop@proton.me>"
|
|
copyright = "2024, Jason Witty <jasonpwitty+socktop@proton.me>"
|
|
license-file = ["../LICENSE", "4"]
|
|
extended-description = """\
|
|
socktop_agent is the daemon component that runs on remote hosts to collect \
|
|
and serve system metrics over WebSocket. It gathers CPU, memory, disk, network, \
|
|
GPU, and process information that can be monitored remotely by the socktop TUI client."""
|
|
depends = "$auto"
|
|
section = "admin"
|
|
priority = "optional"
|
|
assets = [
|
|
["target/release/socktop_agent", "usr/bin/", "755"],
|
|
["../README.md", "usr/share/doc/socktop_agent/", "644"],
|
|
]
|
|
maintainer-scripts = "debian/"
|
|
systemd-units = { unit-name = "socktop-agent", unit-scripts = ".", enable = false }
|