Documentation > Agent > Installation

Agent Installation Guide

Complete step-by-step installation guide for deploying SysManage agents across all supported platforms.

System Requirements

🐍 Python

Required: 3.9, 3.11, or 3.12

Note: Python 3.13 is NOT yet supported due to package compatibility

💻 Operating System

Supported: Linux (Ubuntu, CentOS/RHEL, openSUSE, SLES), Windows, macOS, FreeBSD, OpenBSD, NetBSD

Cross-platform compatibility

🌐 Network Access

Required: Outbound HTTPS access to SysManage Server

No inbound ports required

🛡️ Privileges

Optional: Administrative rights for system management

Can run as regular user with limitations

Platform-Specific Prerequisites

Ubuntu 22.04 - 24.10

# Update package manager
sudo apt update

# Install Python (3.11 or 3.12 ONLY - not 3.13)
sudo apt install python3.11 python3.11-venv python3.11-dev python3-pip

# Install build tools for cryptography packages and SQLite
sudo apt install build-essential libffi-dev libssl-dev pkg-config sqlite3

# Install Rust (required for cryptography)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env

Ubuntu 25.04+ (Python 3.12 from Source)

Note: Ubuntu 25.04+ only ships with Python 3.13. You must build Python 3.12 from source:

# Install build dependencies
sudo apt install build-essential libssl-dev zlib1g-dev libbz2-dev \
    libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
    libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev \
    python3-openssl git pkg-config

# Download and build Python 3.12
cd /tmp
wget https://www.python.org/ftp/python/3.12.7/Python-3.12.7.tgz
tar -xf Python-3.12.7.tgz
cd Python-3.12.7

# Configure and build (takes 10-15 minutes)
./configure --enable-optimizations --with-ensurepip=install
make -j$(nproc)
sudo make altinstall

# Verify installation
python3.12 --version

# Install Rust (required for cryptography)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env

CentOS/RHEL/Fedora

# Install Python 3.9+
sudo dnf install python3 python3-devel python3-pip

# Install build tools and SQLite
sudo dnf groupinstall "Development Tools"
sudo dnf install libffi-devel openssl-devel pkg-config sqlite

# Install Rust (required for cryptography)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env

macOS

# Install Homebrew (if not already installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Install Python 3.9+
brew install python3

# Install SQLite3
brew install sqlite3

# Install Rust (required for cryptography)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env

# Build tools are included with Xcode Command Line Tools
xcode-select --install

Windows

  1. Python 3.9-3.12: Download from python.org
    • ⚠️ AVOID Python 3.13 - Package compatibility issues
    • Check "Add Python to PATH" during installation
    • SQLite3 is included with Python on Windows
  2. Rust: Download from rustup.rs
    • Run rustup-init.exe and follow prompts
  3. Git for Windows: Download from git-scm.com
    • Includes build tools needed for Python packages
  4. Windows Build Tools (if needed): Download Visual Studio Build Tools

FreeBSD

# Update package manager
sudo pkg update

# Install Python 3.9+
sudo pkg install python3 py3-pip

# Install SQLite3
sudo pkg install sqlite3

# Install build tools and Rust
sudo pkg install rust gcc cmake make pkg-config

# Set up environment
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

OpenBSD

# Update package manager
doas pkg_add -u

# Install Python 3.9+
doas pkg_add python-3 py3-pip

# Install SQLite3
doas pkg_add sqlite3

# Install build tools and Rust (REQUIRED for cryptography)
doas pkg_add rust gcc cmake gmake pkgconf

# Set up environment
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.profile
. ~/.profile

⚠️ Important for OpenBSD

Rust is absolutely required for building cryptography packages. The agent uses certificate-based authentication which requires cryptography support for security.

NetBSD

# Update package manager
sudo pkgin update

# Install Python 3.12
sudo pkgin install python312 py312-pip

# Install SQLite3
sudo pkgin install sqlite3

# Install GCC 14 and build tools (REQUIRED for C++17 support)
sudo pkgin install gcc14 cmake gmake pkgconf

# Install Rust (REQUIRED for cryptography)
sudo pkgin install rust

# Set up environment (GCC 14 for C++17 support)
echo 'export PATH="/usr/pkg/gcc14/bin:$PATH"' >> ~/.profile
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.profile
echo 'export CXXFLAGS="-std=c++17"' >> ~/.profile
. ~/.profile

⚠️ Important for NetBSD

GCC 14 is required: NetBSD's base system GCC 10.5 doesn't properly support C++17 features needed by grpcio and other packages. Installing GCC 14 ensures proper C++17 support.

Rust is required: The agent uses certificate-based authentication which requires cryptography support for security.

Note: On BSD systems, use . ~/.profile instead of source ~/.profile to reload your shell environment.

openSUSE Leap/Tumbleweed

# Update package manager
sudo zypper refresh

# Install Python 3.9+ (usually pre-installed)
sudo zypper install python3 python3-pip python3-devel

# Install build tools and development libraries
sudo zypper install gcc gcc-c++ make cmake pkg-config
sudo zypper install libopenssl-devel libffi-devel sqlite3-devel

# Install Rust (required for cryptography)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env

# Alternative: Install Rust via zypper (openSUSE Tumbleweed)
# sudo zypper install rust cargo

📦 Package Manager Notes

  • openSUSE Leap: Uses stable packages, may need manual Rust installation
  • openSUSE Tumbleweed: Rolling release, Rust available via zypper
  • Python versions: Leap ships with Python 3.9+, Tumbleweed with latest stable

SUSE Linux Enterprise Server (SLES)

# Update package manager
sudo zypper refresh

# Install Python 3.9+ and development tools
sudo zypper install python3 python3-pip python3-devel
sudo zypper install gcc gcc-c++ make cmake pkg-config

# Install development libraries
sudo zypper install libopenssl-devel libffi-devel sqlite3-devel

# Install Rust (required for cryptography)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env

# For SLES 15 SP4+, you may also need:
sudo zypper install glibc-devel kernel-devel

🏢 Enterprise Considerations

  • SLES 12: May require Software Collections (SCL) for newer Python
  • SLES 15: Python 3.6+ included, but 3.9+ recommended
  • Firewall: SuSEfirewall2 or firewalld may block agent ports
  • SELinux: May require policy adjustments if enabled
  • Subscription: Some packages require active SLES subscription

Installation Methods

For Ubuntu users, we also provide official packages through Launchpad PPA with automatic builds for multiple Ubuntu versions:

🔷 Launchpad PPA (Alternative for Ubuntu)

Supported Ubuntu Versions:

  • Ubuntu 22.04 LTS (Jammy Jellyfish)
  • Ubuntu 24.04 LTS (Noble Numbat)
  • Ubuntu 24.10 (Oracular Oriole)
  • Ubuntu 25.04 (Plucky Puffin)
  • Ubuntu 25.10 (Questing Quetzal)

Quick Installation via PPA

# Add the PPA
sudo add-apt-repository ppa:bceverly/sysmanage-agent
sudo apt update

# Install sysmanage-agent
sudo apt install sysmanage-agent

# Configure the agent
sudo nano /etc/sysmanage-agent.yaml

# Restart the service
sudo systemctl restart sysmanage-agent

# Check service status
sudo systemctl status sysmanage-agent

✨ Benefits of Launchpad PPA

  • Official Ubuntu PPA: Native Ubuntu package building and distribution
  • Multi-Version Support: Automatic builds for multiple Ubuntu releases
  • Trusted Source: Packages built and hosted by Canonical's Launchpad

Note: The PPA builds are optimized for each specific Ubuntu release and may have slightly different dependencies than the generic APT repository.

📦 Snap Package - Strict Confinement (Read-Only Monitoring)

Note: Due to Snap Store policies, management snaps (those requiring system modification capabilities) are not approved for classic confinement. The strict confinement version provides read-only monitoring only.

⚠️ Important Limitation

This snap provides read-only monitoring capabilities only. It cannot:

  • Install or update system packages
  • Manage firewall rules
  • Execute administrative scripts
  • Install system certificates

For full system management capabilities, use the APT/DEB or source installation methods above.

Supported Platforms:

  • Ubuntu 22.04+ (core22 base)

Quick Installation

# Install from Snap Store
sudo snap install sysmanage-agent-strict --edge

# Configure the agent
sudo snap set sysmanage-agent-strict server-url="wss://your-server:8443"
sudo snap set sysmanage-agent-strict server-token="YOUR_TOKEN"

# View configuration
sudo snap get sysmanage-agent-strict

# Check service status
sudo snap services sysmanage-agent-strict

# View logs
sudo snap logs sysmanage-agent-strict -f

✨ Benefits of Snap Installation

  • Sandboxed and secure
  • Automatic updates
  • Simple installation
  • Read-only monitoring without system modifications

🗑️ Uninstallation

sudo snap remove sysmanage-agent-strict

Note: Ubuntu 25.04+ requires building Python 3.12 from source first. See the Prerequisites tab for Ubuntu 25.04+, then use manual installation from source below.

Manual Installation from Source

# Clone the repository
git clone https://github.com/bceverly/sysmanage-agent.git
cd sysmanage-agent

# Create virtual environment with Python 3.12
python3.12 -m venv .venv

# Activate virtual environment
source .venv/bin/activate

# Upgrade pip
pip install --upgrade pip

# Install dependencies
pip install -r requirements.txt

# Run the agent
python main.py

For Fedora, RHEL, CentOS, and Amazon Linux users, we provide official packages through Fedora Copr with automatic builds for multiple distributions:

🔷 Fedora Copr (Alternative)

Supported Distributions:

  • Fedora 41 (Python 3.13)
  • Fedora 42 (Python 3.13)
  • Fedora 43 (Python 3.14)
  • EPEL 9 (RHEL 9, Rocky Linux 9, AlmaLinux 9, CentOS Stream 9 - Python 3.9)
  • EPEL 10 (RHEL 10, CentOS Stream 10 - Python 3.12)
  • Amazon Linux 2023 (Python 3.9)

Note: EPEL 8 is not supported as it uses Python 3.6, which is too old for our dependencies.

Quick Installation via Copr

# Enable the Copr repository
sudo dnf copr enable bceverly/sysmanage-agent

# Install sysmanage-agent
sudo dnf install sysmanage-agent

# Configure the agent
sudo nano /etc/sysmanage-agent.yaml

# Enable and start the service
sudo systemctl enable sysmanage-agent
sudo systemctl start sysmanage-agent

# Check service status
sudo systemctl status sysmanage-agent

✨ Benefits of Copr

  • Official Copr Repository: Native Fedora/RHEL package building infrastructure
  • Automatic Builds: Builds triggered automatically from tagged releases
  • Multi-Distribution: Single command works across Fedora, RHEL, CentOS, and Amazon Linux
  • Python Version Support: Optimized wheels for Python 3.9, 3.12, 3.13, and 3.14
  • Offline Installation: All Python dependencies bundled in package
  • Easy Updates: Standard dnf upgrade workflow

📋 Distribution-Specific Instructions

Fedora 41, 42, 43:

sudo dnf copr enable bceverly/sysmanage-agent
sudo dnf install sysmanage-agent

RHEL 9 / Rocky 9 / AlmaLinux 9 / CentOS Stream 9:

# Enable EPEL first
sudo dnf install epel-release

# Enable Copr repository
sudo dnf copr enable bceverly/sysmanage-agent
sudo dnf install sysmanage-agent

RHEL 10 / CentOS Stream 10:

# Enable EPEL first
sudo dnf install epel-release

# Enable Copr repository
sudo dnf copr enable bceverly/sysmanage-agent
sudo dnf install sysmanage-agent

Amazon Linux 2023:

sudo dnf copr enable bceverly/sysmanage-agent
sudo dnf install sysmanage-agent

🗑️ Uninstallation

# Remove package
sudo dnf remove sysmanage-agent

# Disable Copr repository
sudo dnf copr disable bceverly/sysmanage-agent

🔗 View Build Status

You can view the current build status and browse all available versions at:

https://copr.fedorainfracloud.org/coprs/bceverly/sysmanage-agent/

For openSUSE and SLES users, we provide official packages through the openSUSE Build Service (OBS) with automatic builds for multiple distributions:

🔷 openSUSE Build Service (Alternative)

Supported Distributions:

  • openSUSE Tumbleweed (rolling release)
  • openSUSE Leap 15.6
  • openSUSE Leap 15.5
  • SUSE Linux Enterprise 15 SP6
  • SUSE Linux Enterprise 15 SP5

Quick Installation via OBS - openSUSE Tumbleweed

# Add the OBS repository
sudo zypper addrepo https://download.opensuse.org/repositories/home:/bryaneverly/openSUSE_Tumbleweed/ sysmanage-agent-obs
sudo zypper refresh

# Install sysmanage-agent
sudo zypper install sysmanage-agent

# Configure the agent
sudo nano /etc/sysmanage-agent.yaml

# Restart the service
sudo systemctl restart sysmanage-agent

# Check service status
sudo systemctl status sysmanage-agent

Quick Installation via OBS - openSUSE Leap

# Add the OBS repository (replace 15.6 with your Leap version)
sudo zypper addrepo https://download.opensuse.org/repositories/home:/bryaneverly/openSUSE_Leap_15.6/ sysmanage-agent-obs
sudo zypper refresh

# Install sysmanage-agent
sudo zypper install sysmanage-agent

# Configure the agent
sudo nano /etc/sysmanage-agent.yaml

# Restart the service
sudo systemctl restart sysmanage-agent

# Check service status
sudo systemctl status sysmanage-agent

✨ Benefits of OBS

  • Official OBS Repository: Native openSUSE/SLES package building
  • Multi-Distribution Support: Automatic builds for Tumbleweed, Leap, and SLES
  • YaST Integration: Seamlessly integrates with openSUSE tools

Note: OBS builds are optimized for each specific distribution version. Packages are built from source on the openSUSE Build Service infrastructure.

View build status at: https://build.opensuse.org/package/show/home:bryaneverly/sysmanage-agent

For openSUSE and SLES users, we provide official packages through the openSUSE Build Service (OBS) with automatic builds for multiple distributions:

🔷 openSUSE Build Service (Alternative)

Supported Distributions:

  • SUSE Linux Enterprise 15 SP6
  • SUSE Linux Enterprise 15 SP5
  • openSUSE Tumbleweed (rolling release)
  • openSUSE Leap 15.6
  • openSUSE Leap 15.5

Quick Installation via OBS - SLES 15

# Add the OBS repository (for SLES 15 SP6)
sudo zypper addrepo https://download.opensuse.org/repositories/home:/bryaneverly/SLE_15_SP6/ sysmanage-agent-obs
sudo zypper refresh

# Install sysmanage-agent
sudo zypper install sysmanage-agent

# Configure the agent
sudo nano /etc/sysmanage-agent.yaml

# Restart the service
sudo systemctl restart sysmanage-agent

# Check service status
sudo systemctl status sysmanage-agent

✨ Benefits of OBS

  • Official OBS Repository: Native openSUSE/SLES package building
  • Multi-Distribution Support: Automatic builds for Tumbleweed, Leap, and SLES
  • YaST Integration: Seamlessly integrates with openSUSE tools

Note: OBS builds are optimized for each specific distribution version. Packages are built from source on the openSUSE Build Service infrastructure.

View build status at: https://build.opensuse.org/package/show/home:bryaneverly/sysmanage-agent

Installation from Source

For FreeBSD, OpenBSD, NetBSD, and other platforms, install manually from source:

# Clone the repository
git clone https://github.com/bceverly/sysmanage-agent.git
cd sysmanage-agent

# Create virtual environment
python3 -m venv .venv  # Linux/macOS/BSD
# python -m venv .venv   # Windows

# Activate virtual environment
source .venv/bin/activate  # Linux/macOS (On OpenBSD: . .venv/bin/activate)
# OR
.venv\Scripts\activate     # Windows

# Upgrade pip to latest version
pip install --upgrade pip

# Install dependencies
pip install -r requirements.txt

# Run the agent
python main.py

Alternative: Direct Installation

# Install directly from GitHub
pip install git+https://github.com/bceverly/sysmanage-agent.git

OpenBSD-Specific Installation Notes

OpenBSD users require special attention to Rust installation:

# Install all required packages including Rust
doas pkg_add python-3.9 py3-pip rust gcc cmake gmake pkgconf

# Set up Rust environment
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.profile
. ~/.profile

# Install Python dependencies
pip install -r requirements.txt

# Or run the agent using the run script which detects Rust availability
./run.sh

🔐 Security Note

The agent requires cryptography support for secure certificate-based authentication. Rust is mandatory for building these security packages. The run script automatically detects if Rust is available and uses appropriate installation methods.

Configuration

Auto-Discovery (Recommended)

SysManage Agent includes automatic server discovery that eliminates manual configuration:

🔍 How Auto-Discovery Works

  1. No Configuration Required: If no configuration file exists, the agent automatically attempts to discover servers
  2. Network Scanning: Sends UDP broadcast discovery requests and listens for server announcements
  3. Server Evaluation: Uses scoring system (SSL preference, local network preference)
  4. Automatic Configuration: Writes complete configuration file and starts normal operation

🌐 Required Network Ports

Agent Ports (Outbound):

  • UDP 31337 - Send discovery requests to servers
  • UDP 31338 - Listen for server announcements
  • TCP 6443 (or server port) - HTTPS connections to discovered server

Manual Configuration (Alternative)

💡 Configuration Generator Available

Use the interactive Configuration Builder Tool to generate customized agent configuration files for your environment.

Or create configuration file manually at:

  • Linux/macOS/BSD: /etc/sysmanage-agent.yaml
  • Windows: C:\ProgramData\SysManage\sysmanage-agent.yaml
# SysManage Server connection details
server:
  hostname: "sysmanage.example.com"  # SysManage Server hostname
  port: 6443                         # Server WebSocket port
  protocol: "wss"                    # Use "ws" for non-SSL, "wss" for SSL

# Agent identification
agent:
  name: "my-server-01"               # Optional: Custom agent name
  tags:                              # Optional: Custom tags for grouping
    - "production"
    - "web-server"
    - "datacenter-1"

# Security settings
security:
  verify_ssl: true                   # Set to false for self-signed certificates
  api_key: "your-api-key-here"       # Optional: API key for authentication

# Monitoring settings
monitoring:
  heartbeat_interval: 30             # Seconds between heartbeat messages
  metrics_interval: 60               # Seconds between metric collection
  command_timeout: 300               # Maximum command execution time (seconds)

# Logging
logging:
  level: "INFO"                      # DEBUG, INFO, WARNING, ERROR, CRITICAL
  file: "/var/log/sysmanage-agent.log"  # Log file path

# Internationalization
i18n:
  language: "en"                     # Agent language (en, es, fr, de, it, pt, nl, ja, zh_CN, zh_TW, ko, ru, ar, hi)

Required Directories and Permissions

Certificate Storage

Linux/macOS/BSD: /etc/sysmanage-agent/

Windows: C:\ProgramData\SysManage\

# Create with proper permissions (Linux/macOS)
sudo mkdir -p /etc/sysmanage-agent
sudo chown sysmanage-agent:sysmanage-agent /etc/sysmanage-agent
sudo chmod 0700 /etc/sysmanage-agent

Configuration File

# Create configuration file with proper permissions
sudo touch /etc/sysmanage-agent.yaml
sudo chown sysmanage-agent:sysmanage-agent /etc/sysmanage-agent.yaml
sudo chmod 0600 /etc/sysmanage-agent.yaml

Log Directory

# Create log directory
sudo mkdir -p /var/log/sysmanage-agent
sudo chown sysmanage-agent:sysmanage-agent /var/log/sysmanage-agent
sudo chmod 0755 /var/log/sysmanage-agent

Service User Account

# Create dedicated service user (Linux)
sudo useradd -r -s /bin/false -d /opt/sysmanage-agent -c "SysManage Agent" sysmanage-agent

📝 Development Note

During development and testing, the application automatically detects test environments and uses temporary directories to avoid permission issues.

Running the Agent

Development Mode

# Run with debug output
python main.py --debug

# Run with custom config file
python main.py --config /path/to/config.yaml

# Run with specific server
python main.py --server sysmanage.example.com --port 6443

Command Line Options

python main.py [OPTIONS]

Options:
  --config PATH              Configuration file path
  --server TEXT              SysManage server hostname
  --port INTEGER             Server WebSocket port (default: 6443)
  --protocol [ws|wss]        Connection protocol (default: wss)
  --debug                    Enable debug logging
  --no-verify-ssl           Disable SSL certificate verification
  --daemon                   Run as daemon (Unix only)
  --help                     Show help message

Service Installation

Create systemd service file

Create /etc/systemd/system/sysmanage-agent.service:

[Unit]
Description=SysManage Agent
After=network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/opt/sysmanage-agent/.venv/bin/python /opt/sysmanage-agent/main.py
Restart=always
RestartSec=10
User=sysmanage-agent
Group=sysmanage-agent
WorkingDirectory=/opt/sysmanage-agent

# Security hardening
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ReadWritePaths=/var/log
ProtectHome=true

[Install]
WantedBy=multi-user.target

Enable and start service

# Enable and start the service
sudo systemctl enable sysmanage-agent
sudo systemctl start sysmanage-agent

# Check status
sudo systemctl status sysmanage-agent

# View logs
sudo journalctl -u sysmanage-agent -f

openSUSE/SLES systemd service

Create /etc/systemd/system/sysmanage-agent.service:

[Unit]
Description=SysManage Agent
After=network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/opt/sysmanage-agent/.venv/bin/python /opt/sysmanage-agent/main.py
Restart=always
RestartSec=10
User=sysmanage-agent
Group=sysmanage-agent
WorkingDirectory=/opt/sysmanage-agent

# SUSE-specific security hardening
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ReadWritePaths=/var/log
ProtectHome=true
CapabilityBoundingSet=

[Install]
WantedBy=multi-user.target

Service management commands

# Enable and start the service
sudo systemctl enable sysmanage-agent
sudo systemctl start sysmanage-agent

# Check status
sudo systemctl status sysmanage-agent

# View logs
sudo journalctl -u sysmanage-agent -f

# openSUSE/SLES specific commands
sudo zypper install systemd-presets  # If not installed
sudo systemctl daemon-reload         # Reload systemd

🏢 SUSE Enterprise Notes

  • Firewall: Open required ports via YaST or firewall-cmd
  • SELinux: May require setsebool or custom policies
  • AppArmor: SUSE uses AppArmor instead of SELinux by default
  • Logging: Logs available via journalctl or /var/log/messages

Windows Service Installation

# Install as Windows service using NSSM or similar
# Or run as scheduled task at startup

# Example using Task Scheduler:
# 1. Open Task Scheduler
# 2. Create Basic Task
# 3. Set trigger to "At startup"
# 4. Set action to start program: python.exe
# 5. Set arguments: C:\path\to\sysmanage-agent\main.py
# 6. Set working directory to agent directory

Create launchd service

Create /Library/LaunchDaemons/com.sysmanage.agent.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.sysmanage.agent</string>
    <key>ProgramArguments</key>
    <array>
        <string>/opt/sysmanage-agent/.venv/bin/python</string>
        <string>/opt/sysmanage-agent/main.py</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>

Load the service

# Load and start the service
sudo launchctl load /Library/LaunchDaemons/com.sysmanage.agent.plist
sudo launchctl start com.sysmanage.agent

Troubleshooting

Connection Issues

  • Server connectivity: telnet sysmanage.example.com 6443
  • DNS resolution: nslookup sysmanage.example.com
  • SSL certificate: openssl s_client -connect sysmanage.example.com:6443

Permission Issues

  • Check agent user permissions: sudo -u sysmanage-agent python main.py --debug
  • Verify file permissions: ls -la /etc/sysmanage-agent.yaml
  • Check log file access: ls -la /var/log/sysmanage-agent.log

Python Package Issues

  • Cryptography build errors: Ensure Rust is installed and in PATH
  • Missing dependencies: Install build tools and development libraries
  • Python 3.13 compatibility: Use Python 3.11 or 3.12 instead

Auto-Discovery Issues

  • Ensure UDP ports 31337 and 31338 are accessible
  • Check firewall rules on both agent and server
  • Verify server discovery service is enabled