π Octofleet
Open-source endpoint management platform
Monitor your fleet, deploy software, track vulnerabilities, manage patches, and control devices from a single dashboard.
Quick Start β’ Features β’ Documentation β’ Contributing β’ Roadmap
π― Why Octofleet?
- π 5-Minute Setup β Docker Compose up and you're running
- π― 100% Self-Hosted β Your data stays on your infrastructure
- π Fully Open Source β No license fees, no vendor lock-in
- πͺΆ Lightweight Agents β < 20MB footprint, minimal resource usage
- π API-First β 509 endpoints accessible via REST API
- π Cross-Platform β Windows and Linux support
- π Dark Mode β Full dark mode across all pages
β¨ Features
π Inventory & Monitoring
|
π Deployment & Jobs
|
π Security & Compliance
|
π©Ή Patch & Update Management
|
π Configuration Baselines β NEW in v0.6.0!
|
π¦ Content Lifecycle β NEW in v0.6.0!
|
π Real-time Query Engine β NEW in v0.6.0!
|
π Software Metering & Licenses β NEW in v0.6.0!
|
π₯οΈ Remote Access & UX
|
π Zero-Touch Provisioning
|
ποΈ SQL Server Management
|
π Self-Updating Agents
|
π Reports & Exports
|
ποΈ Hardware Fleet Dashboard
|
π Quick Start
Option 1: Docker (Recommended)
git clone https://github.com/BenediktSchackenberg/octofleet.git
cd octofleet
docker compose up -d
Open http://localhost:3000 β Login: admin / admin
Option 2: Install Agent
Windows (PowerShell as Admin β one-liner):
irm https://github.com/BenediktSchackenberg/octofleet/releases/latest/download/Install-OctofleetAgent.ps1 | iex
Then configure C:\ProgramData\Octofleet\service-config.json:
{
"InventoryApiUrl": "http://your-server:8080",
"InventoryApiKey": "your-api-key",
"GatewayUrl": "http://your-server:18789",
"GatewayToken": "your-gateway-token",
"DisplayName": "MY-SERVER",
"AutoPushInventory": true,
"ScheduledPushEnabled": true,
"ScheduledPushIntervalMinutes": 30
}
| Field | Description | Required |
|---|---|---|
InventoryApiUrl |
Backend API URL (port 8080) | Yes |
InventoryApiKey |
API key for authentication | Yes |
GatewayUrl |
Gateway URL for remote access (port 18789) | No |
GatewayToken |
Gateway auth token | No |
DisplayName |
Node display name in UI | No (defaults to hostname) |
Restart the service after config changes:
Restart-Service OctofleetNodeAgent
Linux:
API_URL="http://your-server:8080" API_KEY="your-api-key" \
curl -sSL https://raw.githubusercontent.com/BenediktSchackenberg/octofleet/main/linux-agent/install.sh | sudo -E bash
Then configure /opt/octofleet-agent/config.env:
API_URL="http://your-server:8080"
API_KEY="your-api-key"
π Full Agent Setup Guide β Β· Installation Wiki β
ποΈ Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Frontend β
β (Next.js + React) β
β localhost:3000 β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββ
β REST API
βββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββ
β Backend β
β (FastAPI + Python 3.12 β 22 Routers) β
β 509 endpoints Β· localhost:8080 β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββ
β SQL
βββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββ
β Database β
β (PostgreSQL 16 + TimescaleDB) β
β localhost:5432 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββ ββββββββββββ ββββββββββββ
β Windows β β Windows β β Linux β
β Agent β β Agent β β Agent β
β (.NET 8) β β (.NET 8) β β (Bash) β
ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ
β β β
βββββββββββββββ΄ββββββββββββββ
HTTPS to Backend
π Documentation
| Topic | Link |
|---|---|
| Quick Start | docs/GETTING-STARTED.md |
| Architecture | docs/ARCHITECTURE.md |
| Configuration | docs/CONFIGURATION.md |
| API Reference | docs/API-REFERENCE.md β’ Swagger UI |
| Security Center | docs/SECURITY-CENTER.md |
| Patch Management | docs/PATCH-MANAGEMENT.md |
| Content Lifecycle | docs/CONTENT-LIFECYCLE.md |
| Query Engine | docs/QUERY-ENGINE.md |
| Software Metering | docs/SOFTWARE-METERING.md |
| Agent Setup | docs/AGENT-SETUP.md |
| Roadmap | docs/ROADMAP-ENTERPRISE.md |
π API Endpoints (~450 total)
The backend exposes a full REST API with automatic OpenAPI documentation:
# Interactive API docs (Swagger UI)
open http://localhost:8080/docs
# Alternative: ReDoc
open http://localhost:8080/redoc
# OpenAPI JSON spec
curl http://localhost:8080/openapi.json
Key Endpoint Groups:
| Category | Endpoints | Description |
|----------|-----------|-------------|
| /api/v1/nodes | 15 | Node inventory, search, tree view |
| /api/v1/inventory/* | 17 | Hardware, software, hotfixes, security |
| /api/v1/jobs | 10 | Job creation, scheduling, results |
| /api/v1/packages | 12 | Package management, winget/choco |
| /api/v1/vulnerabilities | 6 | CVE tracking, suppression |
| /api/v1/remediation | 23 | Auto-remediation, health checks |
| /api/v1/services | 10 | Service orchestration |
| /api/v1/deployments | 8 | Software deployment |
| /api/v1/patches | 20 | Patch catalog, rings, deployments, compliance |
| /api/v1/patches/explorer | 10 | Patch Explorer tree, deploy, SSE stream, verify, history |
| /api/v1/baselines | ~25 | Config baselines, rules, evaluations, drift, templates, remediation |
| /api/v1/content | 22 | Content repos, items, snapshots, environments, promotion |
| /api/v1/query | 4 | Query engine (execute, schema, templates, live) |
| /api/v1/metering | ~20 | Software catalog, licenses, compliance, reclamation |
| /api/v1/hardware | 2 | Hardware fleet aggregation & export |
| /api/v1/security/* | 34 | Security monitoring, events, findings, evidence, audit |
π οΈ Development
# Backend (FastAPI)
cd backend && python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --reload --port 8080
# Frontend (Next.js)
cd frontend && npm install && npm run dev
# Windows Agent (.NET 8)
cd src/OctofleetAgent.Service && dotnet run
# Run Tests
cd tests/api && pytest
cd tests/e2e && npx playwright test
βοΈ Configuration
Environment Variables
| Variable | Default | Description |
|---|---|---|
API_KEY |
octofleet-inventory-dev-key |
API key for agent authentication |
DATABASE_URL |
postgresql://octofleet:[email protected]:5432/inventory |
PostgreSQL connection string |
JWT_SECRET |
Auto-generated | Secret for JWT tokens (persistent) |
NVD_API_KEY |
None | NVD API key for vulnerability scanning |
OCTOFLEET_GATEWAY_URL |
http://192.168.0.5:18789 |
Octofleet gateway URL |
OCTOFLEET_GATEWAY_TOKEN |
Empty | Token for gateway authentication |
βΉοΈ The backend reads
API_KEYfrom the environment (with fallback toINVENTORY_API_KEYfor backward compatibility). UseAPI_KEYfor new deployments.
π Full Configuration Reference β
π€ Contributing
We love contributions! Octofleet is built by the community, for the community.
π First time? Check out issues labeled good first issue
π Read the Contributing Guide for setup instructions and guidelines.
Ways to Contribute
- π Report bugs and request features
- π Improve documentation
- π» Submit pull requests
- π Translate to other languages
- β Star the repo to show support!
πΊοΈ Roadmap
See the Enterprise Roadmap and public roadmap for planned features.
β Completed in v0.6.0
- E30 Patch & Update Orchestration
- E31 Configuration Baselines & Drift Management
- E33 Content Repository & Lifecycle Management
- E34 Real-time Query Engine
- E38 Software Metering & License Tracking
- E42 Patch Explorer β Tree-based fleet update management with live progress & verification
π Upcoming
- macOS Agent
- LDAP/Active Directory & SSO/OIDC integration
- Ansible/DSC integration
- Cloud provider integration (Azure, AWS, Proxmox)
- Multi-tenancy
- High Availability
π License
MIT License β see LICENSE for details.
π Acknowledgments
Built with FastAPI, Next.js, .NET 8, TimescaleDB
Vulnerability data from NVD β’ Icons by Lucide
π Reach every endpoint in your fleet
β Star us on GitHub Β·
π Report Bug Β·
π‘ Request Feature