Unified Vendor-Neutral Node Lifecycle Platform
PureBoot is a self-hosted, vendor-neutral provisioning and orchestration system designed to automate the entire lifecycle of diverse hardware platforms. It provides a unified control plane for bare-metal servers, enterprise laptops, virtual machines, Raspberry Pi nodes, and edge devices.
- Unified Provisioning - Single platform for x86 BIOS/UEFI, ARM (Raspberry Pi), VMs, and enterprise laptops
- Enterprise Virtualization - Full integration with oVirt/RHV, Proxmox, VMware, Hyper-V, and KVM
- Lightweight & Portable - Runs on NAS devices, Raspberry Pi, or small VMs
- Vendor Neutral - No lock-in to specific hardware or cloud providers
- State Machine Driven - Strict lifecycle management from discovery to retirement
- Advanced Security - Four-Eye Principle, RBAC, and comprehensive audit trails
- Template-Based Deployment - Rapid provisioning in under 5 minutes
| Platform | Boot Method | OS Support |
|---|---|---|
| Bare-Metal Servers | BIOS/UEFI PXE | Ubuntu, Debian, Fedora, Rocky, Windows |
| Enterprise Laptops | BIOS/UEFI PXE | Windows (AD join), Linux |
| Hyper-V / VMware / Proxmox | PXE boot | Windows, Linux |
| oVirt/RHV VMs | API-driven | Linux, Windows |
| Raspberry Pi | Network boot | Raspberry Pi OS, Ubuntu ARM |
| Edge/IoT Devices | Network boot | Custom Linux |
discovered → pending → installing → installed → active → retired
↓
reprovision
# Clone repository
git clone https://github.com/mrveiss/pureboot.git
cd pureboot
# Run installer (as root)
sudo ./scripts/setup.shThe installer will:
- Install system dependencies (Python 3.11+, Node.js)
- Create
purebootservice user - Install to
/opt/pureboot - Build frontend
- Configure systemd service
After installation, start the service and access the web UI:
# Start the service
sudo service pureboot start
# Access Web UI
http://<server-ip>:8080Default Settings:
- Web UI Port: 8080
- Authentication: None (open access - secure with firewall)
- TFTP Port: 69 (requires root/capabilities)
- Proxy DHCP Port: 4011 (disabled by default)
service pureboot start # Start PureBoot
service pureboot stop # Stop PureBoot
service pureboot restart # Restart PureBoot
service pureboot status # Check status
journalctl -u pureboot -f # View logscd pureboot
sudo ./scripts/setup.sh updateUpdates will pull latest code, install new dependencies, rebuild frontend, and restart the service. Your data (database, TFTP files, configuration) is preserved.
Edit /opt/pureboot/.env to override default settings:
PUREBOOT_HOST=0.0.0.0
PUREBOOT_PORT=8080
PUREBOOT_DEBUG=false
PUREBOOT_TFTP__ENABLED=true
PUREBOOT_TFTP__PORT=69
PUREBOOT_DHCP_PROXY__ENABLED=falseFor local development (not production):
# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Run development server
python -m src.mainAll documentation is located in the docs/ directory:
| Directory | Description |
|---|---|
| docs/ | Documentation index |
| docs/PureBoot_Product_Requirements_Document.md | Complete PRD v2.0 |
| docs/architecture/ | System design and state machine |
| docs/api/ | REST API documentation |
| docs/guides/ | User and developer guides |
| docs/workflows/ | Provisioning workflow documentation |
| docs/integrations/ | Hypervisor and third-party integrations |
| docs/reference/ | Technical reference materials |
┌───────────────────────────────────────────────────────────────┐
│ PureBoot Platform │
├─────────────────┬─────────────────┬─────────────────┬──────────┤
│ PXE/iPXE/UEFI │ Controller API │ Web UI │ Storage │
│ Infrastructure │ (Workflows, │ (Management, │ Backend │
│ │ Templates) │ Monitoring) │ │
└─────────────────┴─────────────────┴─────────────────┴──────────┘
- Backend: Python / FastAPI
- Database: PostgreSQL (production) / SQLite (development)
- Frontend: React / Tailwind CSS
- Infrastructure: Docker / Kubernetes
GET /api/v1/nodes # List all nodes
POST /api/v1/nodes # Register new node
PATCH /api/v1/nodes/{id}/state # Transition state
GET /api/v1/next?mac={mac} # Get boot instructions
POST /api/v1/report # Node status reporting
See API Documentation for complete reference.
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/your-feature) - Commit your changes (
git commit -m 'feat: add your feature') - Push to the branch (
git push origin feature/your-feature) - Open a Pull Request
This project is dual-licensed:
- Free Tier (MIT) - Personal, homelab, and educational use
- Commercial License - Business and enterprise use
See LICENSE for details.
- GitHub Issues - Bug reports and feature requests
- Documentation - docs/
- Core PXE infrastructure
- Controller API with node management
- Web UI for monitoring
- Linux provisioning (Ubuntu/Debian)
- Windows provisioning with AD join
- Raspberry Pi network boot
- oVirt/RHV integration
- Advanced RBAC and audit logging
Author: Martins Veiss (mrveiss)
Status: Design/Planning Phase - Documentation Complete, Implementation Pending