One platform. Every vendor.
FreeSDN is an open-source, vendor-agnostic network management platform that unifies switches, cameras, VoIP phones, firewalls, and access control under a single dashboard.
Stop juggling vendor portals. One API, one dashboard, one source of truth for your infrastructure. Docker-native. Security-first. OpenAPI-documented.
Total Devices
247
Online
231
Alerts
3
Sites
12
Network Traffic
Recent Activity
Switch-01 port 24 up
2m ago
AI: Alert triage complete
5m ago
Plugin installed
12m ago
AP-Lobby offline
18m ago
10
Modules
Network, Cameras, VoIP, Firewall (incl. orchestration), Access Control, Backup, Observability, Hypervisor, Storage, AI
API
OpenAPI Contract
Comprehensive REST API with generated OpenAPI docs and typed response envelopes
Self-hosted
Deployment
Docker-native stack with your credentials and data kept on your infrastructure
No fees
Per-device Pricing
AGPL-3.0 licensed platform with no per-device fees and no phone-home telemetry
RBAC
Access Control
Strict-lower role assignment, per-user site grants, and fail-closed tenant checks
SDK
Plugin System
Typed SDK, Pydantic manifest, permission-declared, namespaced plugins, and trusted-author loading
Works with the gear you already own
12 vendor adapters across networking, firewall, cameras, VoIP, compute, and storage, plus a typed plugin SDK to add your own.
A unified control plane for your infrastructure
FreeSDN is a self-hosted infrastructure controller for evaluation, testing, and homelab use while it moves toward production readiness. It uses a Pydantic-v2 contract layer throughout and is AGPL-3.0 licensed, with no per-device fees, no cloud lock-in, and no phone-home telemetry.
Unified Dashboard
One interface for switches, cameras, phones, firewalls, access control, and backups. Cross-module device correlation shows which switch port a camera connects to and which VLAN a phone uses.
Modular Architecture
10 loaded modules: Network Management, Video Surveillance, VoIP & Telephony, Firewall, Access Control (beta), Configuration Backup, Observability, Compute/Hypervisor, Storage, and AI Assistant (beta). Each has its own models, services, and adapters. Enable only what you need per organization.
Supported Apps & Hardware
Omada, OPNsense, pfSense, MikroTik, Proxmox, Hikvision, FreePBX, Grandstream, UniFi, OpenWrt, TrueNAS, and ONVIF-compatible cameras are labeled by maturity. The UI exposes the capabilities the selected adapter supports.
Layered Security
Argon2id password hashing, TOTP MFA, OIDC + LDAP SSO, strict-lower role assignment, per-user site grants, JWT + CSRF + jti revocation, Fernet credential encryption, central secret redaction on every adapter read, DNS-rebind / SSRF-safe HTTP, and an immutable audit log. Multi-tenancy is enforced at the application layer: organization scoping applied throughout the service layer (fail-closed), with per-user site grants enforced across the reviewed site-scoped modules.
Typed API Contract
A comprehensive REST API covers every managed device type, with OpenAPI generated from Pydantic v2 schemas. Consistent response envelope, cursor pagination, field filtering, sorting, and interactive Swagger UI are available on a running instance.
Multi-Tenant / MSP Ready
Organization-scoped isolation, per-tenant module enablement, per-user site grants, and fail-closed RBAC. Application-layer org-scoped queries run throughout the service layer for managed service providers handling client infrastructure.
Docker-Native Deployment
Core always-on stack: PostgreSQL, TimescaleDB, Valkey, FastAPI, Celery worker, Celery Beat scheduler, pg-backup, and Caddy edge with automatic HTTPS. Optional profiles cover IO workers, monitoring, camera restreaming, connection pooling, off-site DR, metrics, and edge proxying. Non-root execution, resource limits, and named volumes are built in.
Real-Time Events & Alerts
WebSocket push for device status changes, discovery events, and alerts. Celery Beat scheduled polling. Multi-provider notification system. Incident management. SLA-style availability tracking (early access: on-demand reports; FreeSDN itself offers no SLA). Alert rules engine.
Automation & Task Engine
Celery distributed task queue for device polling, discovery scans, configuration sync, firmware updates, scheduled backups, and metrics collection. Auto-retry with exponential backoff. Flower monitoring UI.
Plugin System & SDK
Extend FreeSDN with Python plugins using a typed SDK (DeviceSDK, AlertSDK, EventSDK, SSRF-locked HTTP client). Manifest-driven packaging, Ed25519-signed marketplace, and per-org enablement. Important: the plugin loader is load-time import hygiene: a cooperative trusted-author model, not a security sandbox. ZIP-slip/bomb guards, hash-pinned deps, and per-action permission caps apply.
AI / LLM Integration (Beta)
Multi-provider LLM support for OpenAI, Anthropic, and Ollama via direct httpx. Governance flows from the global kill-switch to per-org policy to PII redaction before any cloud call. Network-aware diagnostics, natural language queries, and full audit trails.
Webhook & Integration Layer
Outbound webhooks with templates, retry policies, and encrypted credentials. Integration adapters for Slack, Teams, PagerDuty, and custom HTTP endpoints. Event-driven delivery with tracking and failure alerts.
Where FreeSDN fits
Single-vendor controllers are excellent within their own ecosystems. FreeSDN's distinct angle is open, vendor-neutral unification: managing many brands across many domains from one pane.
| Feature | FreeSDN | Traditional NMS | UniFi | Omada | Meraki |
|---|---|---|---|---|---|
| Multi-vendor control | |||||
| Bidirectional API | |||||
| Modular architecture | |||||
| Open source | |||||
| Self-hosted | |||||
| Multi-tenant / MSP | |||||
| Cameras & NVR | |||||
| VoIP & PBX | |||||
| Access control | |||||
| Firewall management | |||||
| No per-device fees | |||||
| Plugin ecosystem | |||||
| AI / LLM integration | |||||
| Webhook integrations |
A fair note: UniFi, Omada, and Meraki are mature, polished, vendor-supported platforms that go deep within their own ecosystems, and FreeSDN can manage their gear. This isn't a claim that an open, pre-production project is "better," only a map of where open, cross-vendor unification fits.
10 self-contained infrastructure modules
Each module is a fully independent domain with its own SQLAlchemy models, Pydantic v2 schemas, service layer, background tasks, and vendor adapters. Modules register at startup and can be enabled or disabled per organization. Click any module for the full breakdown.
Network Management
Manage switches, access points, VLANs, WiFi networks, PoE, and topology across vendor adapters. Interactive port-VLAN matrix, LAG, port mirroring, rogue-AP detection, firmware lifecycle, and config history.
Video Surveillance
Camera and NVR management via Hikvision ISAPI and ONVIF adapters. Live stream (RTSP/HLS/MJPEG/fMP4), recording playback, snapshots, PTZ, LPR, and forensic export with legal hold (SHA-256 archive).
VoIP & Telephony
Unified phone fleet and PBX management. Phone provisioning, onboarding, SIP push, and factory reset via the Grandstream adapter. FreePBX management (AMI + ARI + REST): extensions, trunks, ring groups, queues, IVR, voicemail, DIDs, active calls, and CDR.
Firewall
Firewall management (OPNsense production-grade, pfSense, MikroTik, OpenWrt) plus absorbed gateway orchestration: canonical VLANs, drift detection, and multi-controller distribution. Rule CRUD and reorder, NAT, VPN (IPsec/OpenVPN/WireGuard) with stats, and IDS/IPS.
Compute & Hypervisor
Proxmox VE management via the Proxmox adapter. Cluster overview, node stats, VM and LXC lifecycle, snapshots, backups, storage-pool inventory, SDN zones, and cluster state.
Observability
Passive asyncio UDP listeners for SNMP traps, Syslog, and NetFlow. All ingested events land in a PostgreSQL store (the collector schema), indexed for dashboards, search, top-talker and protocol breakdowns. Zero-polling: devices push data to FreeSDN.
Storage
Fabric participant for TrueNAS SCALE and CORE. Modern SCALE (25.04+) connects over a WebSocket JSON-RPC transport with TLS; older SCALE and CORE use the REST API, and the adapter auto-selects on connect. Provides ZFS pool health, disk temperatures, redundancy status, active alerts, and scrub progress as a unified rollup, and handles staged blob writes from other modules through the Fabric layer.
AI Assistant
Multi-provider LLM assistant for OpenAI, Anthropic, and Ollama over direct httpx. It runs an agentic loop over a permission-gated tool registry, with governance from a global kill-switch through per-org policy to PII redaction before any cloud call, and an audit trail on every invocation.
Access Control
Beta, off by default. The data model for doors, credentials, cardholders, and schedules is in place. Door lock and unlock endpoints currently return 501 and no door adapter ships yet; the module is included for early adopters and integration planning.
Configuration Backup
Portable configuration snapshots (.fsdn archive) covering sites, controllers, devices, users, and automation rules. Scheduled and on-demand, with restore, retention policies, cross-version diff, and AES-encrypted storage (Fernet). This is a config snapshot, not a full-system disaster-recovery image.
Plugin System & SDK
Extend FreeSDN with two-tier extensibility: native first-party modules (full trust) and
SDK plugins (permission-declared, SDK-bounded, super_admin install only). The Plugin SDK
gives developers typed interfaces, testing utilities, and CLI tools.
Install from PyPI with pip install freesdn-sdk.
Trusted-Author Model
The plugin loader applies load-time import hygiene and permission checks. It is not a security sandbox in the OS/container sense. Plugins are cooperative: they are expected to be authored by trusted parties (super_admin installs only). SDK interfaces, SSRF-locked HTTP, and permission gates provide the safety guardrails.
Full SDK Interfaces
Typed interfaces for devices, alerts, events, settings, and HTTP. Your plugin gets a PluginContext with DeviceSDK, AlertSDK, EventSDK, PluginSettingsSDK, and an SSRF-protected HTTP client (blocks internal IPs, private ranges, cloud metadata endpoints).
Manifest Validation
Every plugin declares a plugin.yaml manifest with ID, version, permissions, dependencies, event subscriptions, and settings schema. Validated at install time and at development time via the SDK CLI.
Event-Driven Architecture
Subscribe to any event pattern (device.status.changed, alert.created, etc.) with priority routing. Plugins can emit their own events. Full correlation and causation ID tracing across the event chain.
Ed25519-Signed Marketplace
Package plugins as versioned ZIPs. Marketplace catalog entries are Ed25519-signed by the publisher; unsigned packages are refused by default. SHA-256 verified at install. Per-organization plugin enablement. Super_admin install only.
Developer CLI
freesdn-sdk init, validate, package, and check commands. Scaffold a plugin in seconds, validate your manifest, build a distributable ZIP, and check for import hygiene issues before deploying.
Write a plugin in minutes
Subclass FreeSDNPlugin, implement lifecycle hooks, and use the typed SDK context to interact with devices, alerts, events, and settings. Permissions you declare in the manifest are the ceiling for what the platform will allow.
DeviceSDK Query and manage devices across all adapters
list, get, get_ports, update
AlertSDK Create alerts, resolve incidents, manage severity
list, create, resolve, update
EventSDK Publish and subscribe to domain events
emit, subscribe
PluginSettingsSDK Per-plugin configuration and encrypted secrets
get, set, get_secret, set_secret
PluginHTTPClient SSRF-protected HTTP client with timeout limits
get, post, put, delete, patch
Runtime Limits
Hard limits enforced by the FreeSDN runtime to prevent resource abuse.
50
Triggers per plugin
50
Actions per plugin
20
AI tools per plugin
50
Python dependencies
50 MB
Max ZIP size
60s
HTTP timeout
Fabric: universal app-interconnect
The Fabric layer (GET /api/v1/fabric/catalog) publishes a single
tier-tagged catalog of operations, events, and AI-tool projections from both native
modules and SDK plugins. Operators author Connections (event → step chain)
that wire any app to any other without custom code. Three built-in sinks (notify / log /
webhook), inbound org-key ingestion, outbound webhook, and a community n8n node
(n8n-nodes-freesdn). Writes always ride the staged dual-gate.
LLM Integration & Governance BETA
Bring AI into your network operations with built-in governance. Three cloud and self-hosted providers, 11 platform tools, an agentic loop, and a 3-layer governance model that keeps credentials and PII from reaching the cloud. AI is off by default and must be explicitly enabled.
Supported Providers
| Provider | Models | Status |
|---|---|---|
| OpenAI | GPT-4o, GPT-4o-mini, and others | Ready |
| Anthropic | Claude Sonnet, Haiku, and others | Ready |
| Ollama | Llama 3, Mistral, Qwen (self-hosted) | Ready |
Global Kill-Switch (default OFF)
AI is disabled by default at the platform level. Administrators must explicitly enable it. No AI calls leave the platform until a super_admin opts in, preventing accidental cloud exposure.
Per-Org Policy
Each organization has its own AI policy: DISABLED, LOCAL_ONLY (Ollama only, no cloud), or CLOUD_APPROVED. Orgs cannot exceed the platform-level policy ceiling.
PII Redaction Before Cloud
Sensitive values are stripped from context before any prompt reaches a cloud provider. Device credentials, secrets, and personal data are redacted so they never leave your environment in plain text.
11 Built-in Tools & Agentic Loop
The assistant ships 11 platform tools (device queries, alert management, config review, diagnostics, and more). An agentic loop (up to 5 iterations) lets the model chain tool calls to complete multi-step tasks. Plugins can register up to 20 additional AI tools each.
Built-in Use Cases
Network Diagnostics
Ask AI to analyze device health, explain port errors, and suggest fixes based on real-time telemetry data.
Alert Triage
AI summarizes alert clusters, identifies root causes, and recommends remediation steps across device types.
Configuration Review
Submit config changes for AI review before deployment. Catch VLAN mismatches, routing loops, and security gaps.
Natural Language Queries
Ask questions in plain English: 'Which switches have high CPU?' or 'Show me all offline cameras at Site 3'.
Multi-tier platform design
FreeSDN follows a clean layered architecture: Client to API Gateway to Core + Modules to Adapter Registry to Physical Devices. Each request flows through JWT validation, tenant context injection, rate limiting, and permission checking before reaching business logic.
Architecture Layers
Client Layer
React 19 + TypeScript + Vite 8React 19.2 SPA, Node 24, TypeScript 6. shadcn/ui components, TanStack Query, Zustand stores
API Gateway
FastAPI + Middleware StackJWT + CSRF validation, tenant context, rate limiting, CORS, structured logging
Core Platform
Auth · Devices · Discovery · Events · AuditAlways loaded. Pydantic v2 schema layer, event bus, Celery task queue
Module Layer
10 Domain ModulesHot-pluggable, isolated, per-org enablement, own DB migrations
Plugin Layer
SDK + Marketplace + GovernanceTrusted-author Python plugins (cooperative model, not a security sandbox), typed SDK interfaces, manifest validation, SSRF protection
AI / LLM Layer
Multi-Provider + Token BudgetsOpenAI, Anthropic, Ollama. Tool calling, prompt governance, 3-layer policy, audit trails
Adapter Registry
Adapter SDK · maturity trackedBaseAdapter ABC, capability mixins, connection pooling, retry logic
Infrastructure
PostgreSQL · Valkey · Celery · TimescaleDBCelery worker + worker-io split, TimescaleDB time-series
Technology Stack
Python 3.14.5
Backend
FastAPI
API Framework
SQLAlchemy 2.0
ORM
Pydantic v2
Validation
PostgreSQL 18.4
Database
TimescaleDB
Metrics / Events
Valkey 8.1
Cache / Broker
Celery 5.6
Task Queue
React 19.2
Frontend
TypeScript 6
Type Safety
Tailwind CSS v4
Styling
shadcn/ui
Components
Vite 8
Build Tool
Node 24.16
JS Runtime
TanStack Query
Data Fetching
Caddy
Edge / Auto-HTTPS
Supported apps & hardware
FreeSDN labels each integration by maturity so you can decide what to test, pilot, or rely on. Vendors that are not built are intentionally omitted.
| Vendor / app | Category | Protocol | Maturity | Notes |
|---|---|---|---|---|
| TP-Link Omada | Network (switch/AP/gateway) | httpx + OAuth2 | Fully supported | Reference adapter; deepest coverage. |
| OPNsense | Firewall / gateway / VPN | httpx + API Key | Fully supported | Feature domains use stage + apply. |
| pfSense | Firewall / gateway | httpx + API Key | Fully supported | Shares OPNsense plumbing; API-key auth. |
| MikroTik RouterOS | Router / switch / wireless | httpx + REST API | Fully supported | Full backend; UI covers a subset of domains. |
| Proxmox VE | Compute / hypervisor | httpx + API Token | Fully supported | VMs, CTs, snapshots, backups, HA, SDN, Ceph. |
| Hikvision | Cameras / NVR | httpx + Digest (ISAPI) | Fully supported | ISAPI streaming, PTZ, playback, NVR import. |
| FreePBX / Asterisk | VoIP / PBX | AMI / ARI / REST | Beta | Extensions, trunks, queues, IVR, CDR; limited field testing. |
| Grandstream | VoIP / SIP phones | aiohttp CGI | Beta | Provisioning, status, and fleet operations. |
| Ubiquiti UniFi | Network (switch/AP/gateway) | httpx + UniFi API | Beta | Validated by automated tests; not yet field-tested on physical hardware. REST only. |
| OpenWrt | Router / AP | httpx + ubus / rpcd | Preview | Speaks ubus/UCI; not yet audited. Developer preview. |
| TrueNAS | Storage | WS JSON-RPC (TLS) | Preview | Read-only health, pool, and disk monitoring. |
| ONVIF-compatible cameras | Cameras | SOAP over httpx | Preview / generic | Generic fallback shim for Dahua, Axis, Reolink, Amcrest, and similar cameras. |
Adapter SDK: add a vendor in one file
Subclass BaseAdapter, implement the typed interface, register in the adapter registry. The platform handles connection pooling, retry logic, caching, and capability detection automatically.
6-layer security model
Security is built into every layer - from application-layer tenant isolation and staged write gates to signed supply chains and HTTP hardening. FreeSDN uses a defense-in-depth approach for environments that handle network credentials.
This release includes automated tests and internal review, but no third-party security audit, live-exploit penetration test, or compliance certification is claimed.
Authentication
JWT access tokens (15 min) + refresh tokens (7 days), jti revocation blacklist and token_version invalidation. MFA via TOTP (RFC 6238) with backup codes. SSO via OIDC (working) and LDAP (working) - SAML gated pending XSW-safe verifier. Account lockout after 5 failures with exponential backoff.
Authorization
Role-based access control with strict-lower-than assignment that blocks privilege escalation at the API layer. Five assignable roles (super_admin → org_admin → site_admin → operator → viewer); the permission hierarchy adds two internal-only levels (admin, guest) used for comparison logic but not user-assignable. Scoped API keys act as a hard permission ceiling, even for super_admin.
Multi-Tenancy
Application-layer org-scoped queries throughout the service layer, combined with per-user site grants enforced across the site-scoped modules. Fail-closed by default - no resource is returned unless the caller's organization is verified.
Credential & Data Safety
Fernet AES-128-CBC + HMAC-SHA256 encryption for all stored device credentials and secrets. Central redact_secrets (~120 sensitive keys, camelCase-aware) scrubs adapter reads before any response leaves the API. SSRF-safe HTTP via resolve-once + IP-pin (no redirects, metadata/CGNAT blocked).
Write Safety & Audit
Staged dual-gate for every adapter write: ADAPTER_READ_ONLY=false AND force=true must both be set; UI-authored writes are staged to the DB and never touch live devices until an explicit operator apply. Every privileged action is logged with user, org, IP, user-agent, resource, and before/after diff.
Transport & Supply Chain
TLS 1.3 everywhere via Caddy automatic HTTPS. CORS explicit allowlist. Rate limiting per endpoint (429 + Retry-After). CSRF tokens on state-changing requests. Marketplace catalog is Ed25519-signed (unsigned refused by default); agent auto-updates are ECDSA-P256 signed, fail-closed.
Role Hierarchy (5 assignable)
| Role | Score | Scope | Access Level |
|---|---|---|---|
super_admin | 100 | Global | Full platform access, all organizations |
admin | 80 | Internal | Internal hierarchy level — not user-assignable |
org_admin | 60 | Organization | Full access within their organization |
site_admin | 40 | Site | Manage assigned sites and devices |
operator | 20 | Site | Day-to-day operations, limited config changes |
viewer | 10 | Site | Read-only access to dashboards and logs |
guest | 0 | Internal | Internal zero-privilege level — not user-assignable |
Strict-lower-than role assignment enforced at the API layer - no user can grant a role equal to or higher than their own.
Pre-production / testing release
FreeSDN is under active development and is currently intended for evaluation, testing, and homelab use. It is not yet recommended for production or business-critical deployments. Features, APIs, and data schemas may change between releases. Please validate thoroughly in a non-production environment. Production readiness will be announced in a future release.
Running in 3 steps
FreeSDN ships as a Docker Compose stack. Clone, configure, and launch - the core platform is up in minutes. Pick a scale tier (Lite / Pro / Max) or use the one-command installer.
Clone & configure
Edit the env file to set POSTGRES_PASSWORD, SECRET_KEY, ENCRYPTION_SALT, LOGDB_URL, and REDIS_PASSWORD. The app refuses to boot in production if any of these are missing or set to insecure defaults.
Launch the stack
Core always-on services: postgres, logdb (TimescaleDB), redis (Valkey), api, worker, scheduler, pg-backup, Caddy. Add profiles (monitoring, cameras, pooling, dr, metrics) as needed.
Open the dashboard
First-run web wizard creates your admin account - no hardcoded default password.
Requirements
Container Stack
Free as in freedom
FreeSDN is fully open-source under the AGPLv3 (AGPL-3.0-only) license. No artificial limitations, no "community edition" crippling, no surprise licensing changes.
AGPL-3.0 Licensed
No vendor lock-in, no per-device fees, no phone-home telemetry. Fork it, extend it, build services on top of it. The source is yours.
No Per-Device Fees
Monitor a small lab or a large fleet. FreeSDN charges nothing per device. Compare that to commercial per-device licensing.
Self-Hosted
By default, your credentials and data stay on your own infrastructure. No cloud dependency, no SaaS outage risk, fully air-gappable.
Community-Driven
Built by network engineers for network engineers. Feature requests, bug reports, and pull requests are all welcome.
Ready to take control of your network?
Join the community managing their multi-vendor infrastructure with a single, open-source platform.