Skip to main content

DeviceValet Linux Agent

PyPI version Python 3.10+ License: MIT

Fleet management daemon for Linux desktops, servers, and IoT devices. Part of the DeviceValet ecosystem.

Features

  • Device Enrollment — One-command enrollment via token
  • System Telemetry — CPU, memory, disk, GPU, thermals, network
  • WiFi Geolocation — Location via BeaconDB (privacy-respecting)
  • Real-time Commands — MQTT-based instant command execution
  • Package & Service Inventory — Track installed software
  • Systemd Integration — Runs as a background service

Quick Start

Install from PyPI

# Install with pipx (recommended)
pipx install valet-agent

# Or with pip
pip install valet-agent

# Or with uv
uv tool install valet-agent

Enroll Your Device

# Get an enrollment token from your DeviceValet dashboard, then:
sudo valet-agent enroll --server https://valet.example.com --token YOUR_TOKEN

# Start the agent
sudo valet-agent run

Install as System Service

# Copy the systemd unit file
sudo cp valet-agent.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now valet-agent

# Check status
sudo systemctl status valet-agent
sudo journalctl -u valet-agent -f

CLI Commands

valet-agent --help              # Show all commands

# Enrollment
valet-agent enroll              # Enroll device with server
  --server URL                  # Server URL (required)
  --token TOKEN                 # Enrollment token (required)
  --mqtt-url URL                # Override MQTT broker URL

# Agent Operations
valet-agent run                 # Start the agent daemon
  --config-dir PATH             # Config directory (default: /etc/valet-agent)
  --once                        # Single check-in then exit

# Diagnostics
valet-agent status              # Show enrollment & connection status
valet-agent info                # Display detailed hardware info
  --json                        # Output as JSON
  --packages                    # Include installed packages
  --services                    # Include running services

Configuration

After enrollment, configuration is stored in /etc/valet-agent/agent.env:

Variable Description Default
VALET_SERVER_URL DeviceValet server URL Set during enrollment
VALET_AUTH_TOKEN Device authentication token Set during enrollment
VALET_DEVICE_ID Unique device identifier Set during enrollment
VALET_CHECKIN_INTERVAL_SECONDS Telemetry interval 300
VALET_REPORT_LOCATION Report WiFi-based location true
VALET_REPORT_PACKAGES Include package inventory true
VALET_REPORT_SERVICES Include running services true
VALET_MQTT_ENABLED Enable real-time commands true
VALET_BEACONDB_ENABLED Use BeaconDB for location true
VALET_BEACONDB_CONTRIBUTE Contribute to BeaconDB true

Remote Commands

The agent responds to commands sent via MQTT:

Command Description
lock Lock the screen (requires display session)
ring Play sound to locate device
message Display desktop notification
reboot Schedule system reboot
shutdown Schedule system shutdown
run_script Execute approved scripts
install_package Install system package (apt/pacman)

Docker Deployment

For containerized environments or server monitoring:

services:
  valet-agent:
    image: ghcr.io/supported-systems/valet-agent:latest
    environment:
      VALET_SERVER_URL: https://valet.example.com
      VALET_AUTH_TOKEN: ${DEVICE_TOKEN}
    restart: unless-stopped
    volumes:
      # Required for hardware identification
      - /etc/machine-id:/etc/machine-id:ro
      - /sys/class/dmi/id:/sys/class/dmi/id:ro
      # Optional: for full system metrics
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro

Supported Distributions

Distribution Package Manager Notes
Arch Linux pacman Full support
Debian 11+ apt/dpkg Full support
Ubuntu 22.04+ apt/dpkg Full support
Fedora 38+ dnf Full support
RHEL/Rocky 9+ dnf Full support
Alpine apk Container-only

Requires Python 3.10+ and systemd for service management.

Development

# Clone the repository
git clone https://github.com/supported-systems/devicevalet.git
cd devicevalet/agent-linux

# Install with dev dependencies
uv pip install -e ".[dev]"

# Run tests
pytest

# Type checking
mypy src/valet_agent

# Linting
ruff check src/
ruff format src/

Telemetry Data

The agent collects and reports:

  • Hardware: Manufacturer, model, serial number
  • System: OS version, kernel, uptime, hostname
  • Resources: CPU usage, memory, disk space
  • Network: IP address, MAC address, connection type
  • Extended (in platform_data):
    • CPU model, cores, frequency, cache
    • GPU info (name, driver, VRAM)
    • Thermal sensors
    • Installed packages
    • Running systemd services

Privacy

  • No data is sent to third parties
  • WiFi geolocation uses BeaconDB (opt-in contribution)
  • All communication is over HTTPS/WSS
  • Device tokens are stored with 0600 permissions

License

MIT License - see LICENSE for details.

Links

Metadata

Release files for valet-agent 2026.1.20

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for valet-agent 2026.1.20
File Size Uploaded Provenance
valet_agent-2026.1.20.tar.gz 39.3 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for valet-agent 2026.1.20
File Interpreter ABI Platform
valet_agent-2026.1.20-py3-none-any.whl Python 3 none any Details

Total release size: 83.4 kB

Release files / valet_agent-2026.1.20.tar.gz

Download URL valet_agent-2026.1.20.tar.gz
Size 39.3 kB
Tags Source
SHA-256 checksum
How to use checksums
1e747ca2a59c524edda4ccf1666c32672bcaed768b6f91cf21f65951b6088443
BLAKE2b-256 checksum
How to use checksums
c691c4fc23060668f92162902da7b19ebb95c6f8d684a87045f7567bd96cdde4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Release files / valet_agent-2026.1.20-py3-none-any.whl

Download URL valet_agent-2026.1.20-py3-none-any.whl
Size 44.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
37131d4590b3f9db472ec952748414d705262875d5285b905245c07cb5e14691
BLAKE2b-256 checksum
How to use checksums
cafa88006ac066a57118110fe4ef214c46ab770b60afe60665672d7e0419056b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Security for valet-agent 2026.1.20

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page