← Back to all posts

pCenter: A vCenter Alternative for Proxmox Clusters

The Problem

Proxmox is great, but managing multiple nodes means logging into each web UI separately. No unified view, no historical metrics, no single pane of glass. I wanted vCenter functionality for Proxmox.

Built in 5 Days

January 12-16, 2026: 27 commits, 27,726 lines added. All commits co-authored with Claude Opus 4.5.

Day 1: Foundation (31,109 lines)

  • Multi-cluster support with auto node discovery via Proxmox API
  • DRS (Distributed Resource Scheduler) – manual and automatic modes
  • Live migration (vMotion) with progress tracking
  • WebSocket real-time updates for instant UI sync
  • noVNC console integration for in-browser VM/CT access

Day 2: Agent Architecture + Folders

pve-agent – standalone Go agent deployed on each Proxmox node:

  • WebSocket connection to central backend (outbound-only, no firewall changes)
  • Command execution: VM/CT start/stop/shutdown/reboot/migrate
  • Ceph CLI commands: status, pg_repair, osd_tree
  • Automatic reconnection with exponential backoff

vCenter-style folder hierarchy:

  • SQLite persistence with WAL mode
  • Nested folder support with drag-and-drop
  • Context menus with Move to submenu

Day 3: Metrics + Ceph Health

Comprehensive metrics collection:

Resolution Retention Use Case
Raw (30s) 24 hours Recent debugging
Hourly 7 days Daily patterns
Daily 30 days Weekly trends
Weekly 1 year Capacity planning

Ceph health monitoring:

  • Health panel with status indicators
  • Automated fix suggestions for common issues
  • OSD tree visualization

Day 4: Activity Log + Network Topology + Console

Activity logging:

  • SQLite-backed audit trail
  • Migration progress parsing (15% -> 33% -> 66% -> 100%)
  • Error extraction from Proxmox task logs

vCenter-style network topology:

  • Visual diagrams showing bridges as virtual switches
  • VM-to-bridge mapping extracted from VM configs
  • Interface grouping by type (Bridges, Bonds, VLANs, Physical)

Console tab:

  • Inline VNC via noVNC library
  • Auto-scaling with ResizeObserver
  • Pop-out button for separate window

Day 5: Create VM/CT + Auth

Create VM and Container dialogs:

  • Auto-select best node based on available memory
  • Storage filtering by content type and active status
  • Delete VM/container support

Storage content browser:

  • Browse volumes with sortable columns
  • Upload ISO/template with progress dialog

Authentication system (4,781 lines):

  • bcrypt password hashing
  • Session cookies with CSRF protection
  • TOTP 2FA with QR code enrollment and recovery codes
  • Account lockout and rate limiting
  • Trusted IP feature: skip 2FA for 24 hours from known IPs

Architecture

+---------------------------------------------+
|                  Frontend                    |
|     React + TypeScript + TailwindCSS        |
+-----------------+---------------------------+
                  | WebSocket + REST
+-----------------v---------------------------+
|                  Backend                     |
|           Go (Chi router)                    |
|  +---------+  +---------+  +-------------+ |
|  | Poller  |  |  State  |  |   SQLite    | |
|  |         |  |  Cache  |  |   Metrics   | |
|  +----+----+  +---------+  +-------------+ |
+-------+-------------------------------------+
        | Proxmox API
+-------v-------------------------------------+
|     Proxmox Nodes (pve04, pve05)            |
+-----------------+---------------------------+
                  |
+-----------------v---------------------------+
|              pve-agent                       |
|    (WebSocket client on each node)          |
+---------------------------------------------+

Key Features

Feature Description
Multi-cluster Unified view across multiple Proxmox clusters
DRS Automatic workload balancing across nodes
Live Migration vMotion-style with progress tracking
Metrics Historical charts with rollups and retention
Ceph Health Monitoring with fix suggestions
Network Topology Visual vSwitch diagrams
Folders vCenter-style organization
Activity Log Audit trail with migration tracking
Console Inline noVNC access
Auth 2FA with TOTP and trusted IPs

V2: Agent-Based Architecture

V2 flips from polling to push. Lightweight agents on each node push data to pCenter:

  • Instant updates – Agent sees VM start, pCenter knows immediately
  • Simpler firewall rules – Agents connect outbound
  • Local access – Agents can read /proc directly
  • Better scaling – Distributed collection

The agent is ~500 lines of Go.

Development Stats

This represents a rapid prototyping effort that produced a functional vCenter alternative in under a week, demonstrating the power of AI-assisted development for complex infrastructure tooling.