SysManage Agent

A lightweight, secure, cross-platform system monitoring agent that connects to SysManage Server via WebSocket for real-time remote management.
š Documentation
Complete documentation is available at sysmanage.org
Quick Links
Overview
SysManage Agent is a headless Python application designed to be installed on remote systems for centralized monitoring and management. It establishes a secure WebSocket connection to the SysManage Server and provides real-time system information, command execution capabilities, and health monitoring.
Key Features
- š Real-time Communication: WebSocket-based connection for instant responsiveness
- š„ļø Cross-platform Support: Linux, Windows, macOS, FreeBSD, OpenBSD
- š Secure by Design: Encrypted communication with mTLS validation, no inbound ports required
- š System Monitoring: CPU, memory, disk, network metrics collection
- ā” Command Execution: Remote command execution with security controls
- š§ Package Management: Remote software installation, updates, and OS version upgrade detection
- š Health Monitoring: Automatic heartbeat and status reporting
- š Multi-language Support: Native support for 14 languages
- šāāļø Lightweight: Minimal resource footprint and dependencies
- š Auto-Discovery: Automatically discover and configure with SysManage servers on the network
Supported Platforms
- š§ Linux: Ubuntu, Debian, CentOS, RHEL, Fedora, Rocky, AlmaLinux, Oracle Linux
- šŖ Windows: 10, 11, Server 2019/2022
- š macOS: Intel and Apple Silicon
- š FreeBSD: Latest stable versions
- š”ļø OpenBSD: Latest stable versions
Installation
Package Repositories (Recommended)
Ubuntu/Debian - APT Repository
# Add the repository
echo "deb [trusted=yes] https://bceverly.github.io/sysmanage-docs/repo/deb stable main" | \
sudo tee /etc/apt/sources.list.d/sysmanage.list
# Update and install
sudo apt update
sudo apt install sysmanage-agent
# Configure
sudo nano /etc/sysmanage-agent.yaml
sudo systemctl restart sysmanage-agent
Supported: Ubuntu 22.04+, Debian 11+
RHEL/CentOS/Fedora/Rocky/AlmaLinux/Oracle Linux - YUM/DNF Repository
EL9 (RHEL 9, Rocky 9, AlmaLinux 9, Oracle Linux 9, CentOS Stream 9):
sudo tee /etc/yum.repos.d/sysmanage.repo << EOF
[sysmanage]
name=SysManage Agent Repository
baseurl=https://bceverly.github.io/sysmanage-docs/repo/rpm/el9/x86_64
enabled=1
gpgcheck=0
EOF
sudo dnf install sysmanage-agent
EL8 (RHEL 8, Rocky 8, AlmaLinux 8, Oracle Linux 8):
# Install Python 3.11 first
sudo dnf module install python311
sudo tee /etc/yum.repos.d/sysmanage.repo << EOF
[sysmanage]
name=SysManage Agent Repository
baseurl=https://bceverly.github.io/sysmanage-docs/repo/rpm/el8/x86_64
enabled=1
gpgcheck=0
EOF
sudo dnf install sysmanage-agent
Fedora 38+:
sudo tee /etc/yum.repos.d/sysmanage.repo << EOF
[sysmanage]
name=SysManage Agent Repository
baseurl=https://bceverly.github.io/sysmanage-docs/repo/rpm/fedora/39/x86_64
enabled=1
gpgcheck=0
EOF
sudo dnf install sysmanage-agent
Direct Downloads
Download packages from GitHub Releases
Prerequisites
- Python: 3.9ā3.14 (tested across the full range in CI; 3.9 retained for macOS system Python)
- Network: Outbound HTTPS access to SysManage Server
- Privileges: Administrative rights for system management tasks (optional)
š For detailed platform-specific installation instructions, visit sysmanage.org/docs/agent/installation.html
Quick Start
# 1. Clone and setup
git clone https://github.com/bceverly/sysmanage-agent.git
cd sysmanage-agent
# 2. Create virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Note: On BSD systems (FreeBSD, OpenBSD, NetBSD), use: . .venv/bin/activate
# Windows users: .venv\Scripts\activate
# 3. Install dependencies
pip install --upgrade pip
pip install -r requirements.txt
# 4. Start the agent
gmake start # Standard agent
# gmake start-privileged # Privileged agent (for package management)
Configuration
Auto-Discovery (Recommended)
SysManage Agent includes automatic server discovery that eliminates the need for manual configuration in most scenarios:
- No Configuration Required: If no configuration file exists, the agent automatically attempts to discover SysManage servers on the network
- Network Scanning: The agent sends UDP broadcast discovery requests and listens for server announcements
- Automatic Configuration: Once a server is discovered, the agent writes a complete configuration file automatically
- Fallback: If auto-discovery fails, manual configuration is still supported
Manual Configuration (Alternative)
Create configuration file at:
- Linux/macOS/BSD:
/etc/sysmanage-agent.yaml
- Windows:
C:\ProgramData\SysManage\sysmanage-agent.yaml
š For complete configuration options, visit sysmanage.org/docs/agent/configuration.html
Security
SysManage Agent implements multiple layers of security:
- Communication Security: TLS 1.2+ encryption for all server communication
- Mutual TLS (mTLS): Certificate-based authentication after host approval
- Agent Security: Minimal privilege execution, input validation, safe command execution
- Network Security: No inbound ports required, outbound connections only
- Certificate Management: Automatic certificate retrieval and validation
š For complete security documentation, visit sysmanage.org/docs/security/
Privileged Execution
The agent requires elevated privileges for certain system management operations, particularly package management. Cross-platform privileged runner scripts are included:
- Unix-like systems:
run-privileged.sh - Works on macOS, Linux, and OpenBSD
- Windows:
run-privileged.cmd and run-privileged.ps1 - Batch and PowerShell scripts
š For detailed privileged execution setup, visit sysmanage.org/docs/agent/privileged-execution.html
Development
Running Tests
# Run all tests with coverage
make test
# Direct pytest execution
python -m pytest tests/ -v
# Run with coverage
python -m pytest tests/ --cov=. --cov-report=html
# Run linting
make lint
Code Quality Standards
- Perfect 10.00/10 PyLint score: Clean, maintainable code
- Black formatting: Consistent code style
- Comprehensive security scanning: Bandit, Semgrep, Safety, Snyk, TruffleHog
- Cross-platform testing: All major operating systems
Internationalization
SysManage Agent supports 14 languages for logging and system messages:
| Language | Code | Status |
|---|
| English | en | ā
Complete |
| Spanish | es | ā
Complete |
| French | fr | ā
Complete |
| German | de | ā
Complete |
| Italian | it | ā
Complete |
| Portuguese | pt | ā
Complete |
| Dutch | nl | ā
Complete |
| Japanese | ja | ā
Complete |
| Simplified Chinese | zh_CN | ā
Complete |
| Traditional Chinese | zh_TW | ā
Complete |
| Korean | ko | ā
Complete |
| Russian | ru | ā
Complete |
| Arabic | ar | ā
Complete |
| Hindi | hi | ā
Complete |
Project Structure
sysmanage-agent/
āāā main.py # Agent entry point
āāā config.py # Configuration management
āāā registration.py # Server registration logic
āāā websocket_client.py # WebSocket communication
āāā system_info.py # System information collection
āāā command_executor.py # Command execution engine
āāā tests/ # Test suite
āāā requirements.txt # Python dependencies
āāā run-privileged.sh # Privileged execution script
Contributing
- Fork the repository
- Create a feature branch
- Make changes with tests
- Ensure code quality (
make lint test)
- Submit a pull request
š For detailed contribution guidelines, visit sysmanage.org/docs/
Related Projects
License
This project is licensed under the GNU Affero General Public License v3.0. See LICENSE for details.
Support