syswatch 0.6.1

Single-host, read-only system diagnostics TUI. Twelve tabs covering CPU, memory, disks, processes, GPU, power, services, network, plus a Timeline scrubber and an Insights anomaly engine. Sibling to netwatch.
[package]
name = "syswatch"
version = "0.6.1"
edition = "2021"
description = "Single-host, read-only system diagnostics TUI. Twelve tabs covering CPU, memory, disks, processes, GPU, power, services, network, plus a Timeline scrubber and an Insights anomaly engine. Sibling to netwatch."
license = "MIT"
repository = "https://github.com/matthart1983/syswatch"
homepage = "https://github.com/matthart1983/syswatch"
readme = "README.md"
keywords = ["system", "monitoring", "tui", "diagnostics", "observability"]
categories = ["command-line-utilities"]
exclude = [
    # Demo assets aren't needed by anyone consuming the crate.
    "demo.gif",
    "demo.tape",
    "Formula/**",
    "LAUNCH_DRAFT.md",
]

[[bin]]
name = "syswatch"
path = "src/main.rs"

[dependencies]
ratatui = "0.29"
crossterm = "0.28"
sysinfo = "0.32"
clap = { version = "4", features = ["derive"] }
tokio = { version = "1", features = ["rt", "macros", "time", "sync"] }
anyhow = "1"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
chrono = { version = "0.4", features = ["serde"] }

# Reuse netwatch-sdk for memory/loadavg/disk/interface collection so syswatch
# and netwatch-agent share a single source of truth for those parsers.
# For local dev against an in-progress sdk change, add
#   [patch.crates-io]
#   netwatch-sdk = { path = "../../netwatch-sdk" }
# in this Cargo.toml — keep it out of commits.
netwatch-sdk = "0.1"
toml = "0.8"
dirs = "5"
# Compact binary serialization for session recordings (.swr files).
# Length-prefixed Snapshot stream — chosen over rkyv for ergonomic
# Vec/Option/String handling at the cost of zero-copy reads we don't
# need for this workload.
postcard = { version = "1", features = ["use-std"] }

# Linux NVIDIA support is opt-in: enabling `gpu-nvidia` links libnvidia-ml,
# which only ships on hosts with the proprietary driver installed.
nvml-wrapper = { version = "0.12", optional = true }

# macOS-only IOReport + SMC bindings (Apple Silicon GPU temp + per-rail
# power, no sudo). macpow's library has a compile_error gate for non-macOS,
# so target-gating means it's silently absent everywhere else.
[target.'cfg(target_os = "macos")'.dependencies]
macpow = { version = "0.1", default-features = false }

[dev-dependencies]
# tempfile lets the Linux power/gpu parsers be exercised on any host by
# constructing a tempdir-shaped sysfs view. Same pattern netwatch-sdk uses.
tempfile = "3"

[features]
default = []
gpu-nvidia = ["dep:nvml-wrapper"]
smart = []

[profile.release]
lto = "thin"
codegen-units = 1
strip = true