SysManage Server

A modern, cross-platform system monitoring and management platform with real-time WebSocket communication, built with FastAPI and React.
๐ Documentation
Complete documentation is available at sysmanage.org
Quick Links
Overview
SysManage is a comprehensive system management solution that allows you to monitor and manage remote servers across multiple operating systems (Linux, Windows, macOS, FreeBSD, and OpenBSD). The system consists of:
- Backend API: FastAPI-based REST API with WebSocket support
- Frontend Web UI: Modern React application built with Vite
- Database: PostgreSQL with Alembic migrations and UUID-based primary keys for enhanced security
- Real-time Communication: WebSocket-based agent communication
Key Features
- ๐ Real-time agent status monitoring via WebSockets
- ๐ System metrics and health monitoring
- ๐ Comprehensive Reporting System with PDF Generation
- ๐ JWT-based authentication with mTLS security
- ๐ฅ Multi-user management system with RBAC
- ๐ข Fleet-based host organization
- ๐ฅ๏ธ Cross-platform agent support with auto-discovery
- ๐ฑ Responsive web interface
- ๐ Multi-language support (14 languages including RTL support)
- ๐ก๏ธ Enterprise-grade security scanning and monitoring
- โก Ubuntu Pro Master Key management for bulk enrollment
- ๐ฐ๏ธ Air-gapped (offline) operation: key/device management, optical/USB media transfer, offline CVE & repository sync
- ๐ Multi-site federation: coordinator/site Server Roles with rollup reporting and command dispatch
Prerequisites
- Python: 3.10โ3.14 (tested across the full range in CI)
- Node.js: 20.x or higher (22.13+ recommended for Artillery performance testing)
- PostgreSQL: 14 or higher
- OS: Linux, macOS, Windows, FreeBSD, or OpenBSD
> ๐ Security Note: After installation, you MUST run the scripts/sysmanage_secure_installation script to create the initial admin user and configure unique security tokens for your installation.
๐ For detailed platform-specific installation instructions, visit sysmanage.org/docs/server/installation.html
Quick Start
# 1. Clone and setup
git clone https://github.com/bceverly/sysmanage.git
cd sysmanage
# 2. Create virtual environment
python3.12 -m venv .venv # any of Python 3.10โ3.14
source .venv/bin/activate
# Note: On BSD systems (FreeBSD, OpenBSD, NetBSD), use: . .venv/bin/activate
# 3. Setup database (see documentation for detailed instructions)
# Install PostgreSQL and SQLite3 (required before installing Python dependencies)
# FreeBSD users also need: sudo pkg install py311-sqlite3
# Create PostgreSQL database and user
# Configure /etc/sysmanage.yaml
# 4. Install dependencies
# Note: Rust is required for some Python dependencies
# Install Rust: https://rustup.rs/ or use your package manager
# FreeBSD users also need: sudo pkg install jpeg-turbo tiff freetype2 png webp lcms2
pip install --upgrade pip
pip install -r requirements.txt
# 5. Run migrations
alembic upgrade head
# 6. Install frontend dependencies
cd frontend && npm install && cd ..
# 7. Run secure installation script (REQUIRED for new installations)
scripts/sysmanage_secure_installation
# This script creates the initial admin user and sets unique security tokens
# 8. Start the application
make start
Development
Running Tests
# Run all tests
make test
# Backend tests only
python -m pytest tests/ -v
# Frontend tests only
cd frontend && npm test
# End-to-End tests (optional - requires Playwright)
# Note: Playwright may not be available on all platforms (e.g., OpenBSD)
npm run test:e2e
# Linting
make lint
Code Quality Standards
- Backend: Perfect 10.00/10 PyLint score, Black formatting, Bandit security scanning
- Frontend: 0 ESLint warnings, TypeScript strict mode
- Security: Comprehensive automated security scanning (Bandit, Semgrep, Safety, Snyk, TruffleHog)
- Testing: Comprehensive pytest backend suite, Vitest frontend tests, and optional Playwright E2E. Coverage is enforced by a CI ratchet that only moves up โ backend holds a โฅ70% floor; the frontends climb toward backend parity per the ROADMAP coverage ladder
Project Structure
sysmanage/
โโโ backend/ # FastAPI backend
โ โโโ api/ # REST API endpoints
โ โโโ auth/ # JWT authentication
โ โโโ persistence/ # Database models and ORM
โ โโโ websocket/ # WebSocket communication
โโโ frontend/ # React frontend (Vite-based)
โ โโโ src/Components/ # React components
โ โโโ src/Pages/ # Page components
โโโ tests/ # Backend Python tests
โโโ alembic/ # Database migrations
โโโ requirements.txt # Python dependencies
API Documentation
When running the backend server, interactive API documentation is available at:
Internationalization
SysManage supports 14 languages with full localization:
| 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 (RTL) |
| Hindi | hi | โ
Complete |
Security
SysManage implements enterprise-grade security features:
๐ Secure Installation
- Secure Installation Script:
scripts/sysmanage_secure_installation must be run on new installations
- Unique Security Tokens: Generates unique JWT secrets and salt values for each installation
- Initial Admin User: Creates the first administrative user with secure credentials
- Configuration Hardening: Applies security best practices to configuration files
๐ก๏ธ Database Security
- UUID-Based Primary Keys: All database tables use UUIDs instead of sequential integers
- Prevents Information Leakage: UUIDs eliminate predictable ID enumeration attacks
- Replay Attack Protection: Non-sequential identifiers prevent replay attacks
- Enhanced Privacy: Resource URLs cannot be easily guessed or scraped
- GDPR Compliance: Supports data anonymization through non-correlatable identifiers
๐ Core Security Features
- Authentication: JWT-based with token rotation and refresh
- Authorization: Role-based access control (RBAC)
- Communication: Mutual TLS (mTLS) for agent connections
- Encryption: End-to-end encrypted communication
- Scanning: Automated security vulnerability scanning
- Policies: Configurable password policies and account security
๐ For complete security documentation, visit sysmanage.org/docs/security/
Deployment
Development
# Backend
uvicorn backend.main:app --reload --host 0.0.0.0 --port 6443
# Frontend
cd frontend && npm run dev
Production
# Backend
uvicorn backend.main:app --host 0.0.0.0 --port 6443 --workers 4
# Frontend
cd frontend && npm run build
# Serve built files from frontend/dist/
๐ For detailed deployment instructions, visit sysmanage.org/docs/server/deployment.html
๐งช Testing
This project uses a dual conftest architecture for optimal test performance and database isolation:
/tests/conftest.py: Integration tests with full schema (Alembic migrations)
/tests/api/conftest.py: Fast API tests with minimal dependencies (manual models)
Running Tests
# Run all tests (backend + frontend + UI + performance)
make test
# Run specific test suites
make test-python # Backend tests only
make test-typescript # Frontend tests only
make test-playwright # UI tests only
make test-performance # Performance tests (Artillery + Playwright + regression analysis)
# Individual test files
python -m pytest tests/api/test_packages.py -v
python -m pytest tests/api/ -q --tb=no
๐ Performance Testing
SysManage includes comprehensive performance testing with multi-OS support:
- Artillery Load Testing - API response times, throughput, error rates
- Playwright Performance - UI metrics, Core Web Vitals, cross-browser testing
- Regression Detection - Statistical analysis with tolerance bands (ยฑ15%)
- Multi-Platform - Linux, macOS, Windows (FreeBSD supported, OpenBSD partial)
# Run performance tests locally
make test-performance
# Performance requirements
npm install -g artillery@latest # For load testing
playwright install # For browser automation
๐ For detailed performance testing documentation, see PERFORMANCE_TESTING.md
โ ๏ธ Adding New Database Models
CRITICAL: When adding new models, update BOTH conftest files:
- Main conftest (automatic):
alembic revision --autogenerate -m "Add NewModel"
- API conftest (manual): Add SQLite-compatible model definition if API tests need it
SQLite Compatibility Rules:
- โ
Use
Integer primary keys (not BigInteger) for auto-increment
- โ
Use
String instead of Text for better performance
- โ
Omit timezone info in
DateTime columns
See TESTING.md for detailed guidelines.
Contributing
- Fork the repository
- Create a feature branch
- Make changes with tests
- Ensure all tests pass and linting is clean (
make test lint)
- 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