Back to Projects
Open Source2024

PXC: Bringing Product Design Thinking to Infrastructure Tooling

A modern CLI for Proxmox VM management that applies web UX principles to terminal interfaces. Built to make complex infrastructure operations safe, fast, and accessible from anywhere—including your phone.

PXC: Bringing Product Design Thinking to Infrastructure Tooling

Client

Open Source

Role

Product Designer, Full-Stack Developer, Open Source Maintainer

Technologies

React, Ink, TypeScript, Proxmox API, Node.js

Key Results

3levels
Safety Layers
Multi-node
Cluster Support
Wizard-based interactions
User Experience
2.1.1
Version

Overview

Role: Creator, Product Designer & Developer Timeline: 2024 - Present Technology: React, Ink, TypeScript, Proxmox API Status: Open Source, Active Development (v2.1.1)

The Challenge: Infrastructure management tools prioritize power over usability, leaving operators struggling with arcane commands and desktop-only interfaces. How do you make complex VM orchestration accessible from anywhere—including a phone at Disneyland?

The Solution: A modern CLI that applies web UX principles to terminal interfaces, making Proxmox infrastructure management fast, safe, and genuinely pleasant to use.

Infrastructure management that's actually readable Infrastructure management that's actually readable


The Problem: When Infrastructure Can't Wait

Picture this: You're at Disneyland with your family. A monitoring VM goes down. You pull out your phone, navigate to the Proxmox web UI, and... spend five minutes fat-fingering your way through a microscopic desktop interface trying to tap the right buttons.

Or you're at dinner. You need to start a test suite, but the VM is stopped. Same frustrating experience—squinting at tiny buttons, accidentally tapping the wrong options, eventually giving up and shoving your phone back in your pocket.

This was my reality. As someone who manages Proxmox infrastructure daily—from production servers to self-hosted services to Minecraft servers for my son—I needed infrastructure management that worked wherever I was, not just when I was at my desk.

Why Existing Solutions Failed

The Proxmox Web UI: Desktop-optimized, unusable on mobile. What should be a 10-second status check becomes a frustrating exercise in precision tapping.

Direct API Calls: Technically possible via terminal (I already had Blink Shell on my phone), but ironically slower than the janky web UI. Too many commands to remember, too much syntax to type correctly on a phone keyboard.

Traditional CLI Tools (qm, pct, pvesh): Powerful but arcane. Every operation requires memorizing flags, parameters, and command structure. Perfect for scripting, terrible for quick operational tasks.

The mobile experience problem: desktop UI vs. terminal clarity The mobile experience problem: desktop UI vs. terminal clarity

The Core Insight

The problem wasn't access to functionality—the Proxmox API exposed everything needed. The problem was interface design. What was needed wasn't just a CLI, but a thoughtfully designed experience that made common operations fast and intuitive from a terminal.


Design Philosophy: Cognitive Load Over Keystroke Count

Inspiration: The Vercel Model

Vercel's CLI doesn't make you remember arcane flags. It guides you through decisions conversationally. It's fast, clear, and feels natural even when you're typing on a phone screen.

That's the experience I wanted for infrastructure management.

Core Principles

1. Don't Make Me Think Users shouldn't need to memorize flags or syntax. While power users can use flags if memorized, the default path is a guided wizard that asks clear questions and shows only relevant options.

2. Progressive Disclosure Keep the screen clean. Show only what's needed at each step. Complex infrastructure operations become a series of simple decisions rather than overwhelming configuration dumps.

3. Safety by Default Destructive operations should require conscious thought, not just correct syntax. Accidents happen when people are tired—design should protect against fatigue-induced mistakes.

4. Power Through Comprehensiveness For advanced users, power comes from scope not complexity. Support clusters, comprehensive resource management, and sophisticated operations while maintaining the simple interface.

Guided wizards replace memorized flags Guided wizards replace memorized flags


Key Design Decisions

1. VM Deletion: A Case Study in Safety-First Design

"We've all accidentally deleted the wrong VM at 4am"

The Personal Catalyst: I once accidentally deleted the wrong VM. It ran dozens of Docker services—Plex, Jellyfin, Uptime Kuma, n8n, Postgres, Redis, multiple WordPress test installs. Spending hours reinstalling everything was awful. This experience informed a deliberate, multi-layered safety approach.

Three layers of safety protect against 4am mistakes Three layers of safety protect against 4am mistakes

Three Lines of Defense:

Layer 1: Visual Confirmation Display complete VM details before any action. Force the user to see what they're about to delete—name, ID, resources, current state.

Layer 2: Cognitive Engagement Require typing both the VMID and the word "delete". This forces conscious reading and acknowledgment—you can't autopilot through deletion. The typing requirement ensures you're reading what you're confirming.

Layer 3: Temporal Buffer A 10-second countdown as a final safeguard. This protects the 4am operator making tired decisions. Long enough to catch immediate regret, short enough not to become annoying (tested at 15 seconds—too long).

Design Intentionality: All three layers were designed upfront, not added iteratively. Each addresses a different failure mode:

  • Visual: "Am I looking at the right VM?"
  • Typing: "Am I consciously choosing this action?"
  • Countdown: "Do I have immediate regret?"

Acknowledging Trade-offs: For bulk operations (cleaning up test environments), this safety becomes friction. This is recognized and planned for future releases, balancing safety-by-default with power-user efficiency.


2. Cluster Support: Scaling Information Architecture

From Personal Need: My infrastructure runs on a 3-node Proxmox cluster (kholinar, azimir, herdaz). The initial single-node view was immediately limiting—I needed visibility across all nodes, not just one.

The UX Challenge: How do you show resources across multiple nodes without overwhelming the user? The information hierarchy needed to communicate:

  • Overall cluster health at a glance
  • Which nodes are online/offline
  • Where each VM/container lives
  • Resource status and state

Status-First Information Hierarchy:

Cluster: 3/3 nodes online • kholinar(●) • azimir(●) • herdaz(●)

Status is always first. Filled circles (●) indicate online nodes, hollow circles (○) show offline. At a glance, you know cluster health before seeing any resources.

At-a-glance cluster health before diving into resources At-a-glance cluster health before diving into resources

Resources are then grouped by node, making it immediately clear where each VM/container lives. The mental model matches the infrastructure: nodes contain resources.

Smart Defaults: The system auto-detects cluster vs single-node configurations, adapting the display without user configuration. This maintains simplicity—the tool just works regardless of infrastructure scale.

Acceptable Trade-offs: Querying multiple nodes introduced some latency, but comprehensive visibility was more valuable than marginal speed gains. The experience remains snappy enough for real-world use.


3. Wizard-Based Interaction Model

The Problem with Flags: Traditional CLIs require memorizing syntax:

qm create 100 --memory 2048 --cores 2 --net0 virtio,bridge=vmbr0 --ide2 local:iso/debian.iso

This is powerful for scripting but terrible for human interaction, especially on mobile.

The Wizard Approach: PXC guides you through decisions step-by-step:

  • What's the VM ID?
  • How much memory?
  • How many cores?
  • Which network bridge?
  • Which ISO?

Each question appears when relevant, with sensible defaults. The cognitive load is distributed across simple choices rather than concentrated in remembering complex syntax.

Progressive Enhancement: Power users who know what they want can still use flags. But the default path optimizes for clarity over brevity.


Technical Execution

Technology Choices

React + Ink: As a React developer, leveraging existing expertise enabled rapid development. Ink brings React's component model to terminal interfaces, enabling compositional UI patterns that work well for complex interactions.

TypeScript with Strict Mode: Comprehensive typing catches errors early and makes the codebase maintainable. For a CLI tool where errors could lead to infrastructure problems, type safety isn't optional.

Proxmox API Integration: Direct API integration provides access to all Proxmox functionality while maintaining clean abstraction layers between API calls and UI components.

Architecture Principles

Component-Based UI: Terminal interfaces are built from reusable React components—confirmation dialogs, status displays, resource lists. This maintains consistency across features and accelerates development of new capabilities.

Mock Mode for Testing: A comprehensive mock mode enables development and testing without requiring live Proxmox infrastructure. This accelerated iteration cycles and made the tool accessible for contributors without existing setups.

Graceful Error Handling: API failures, network issues, and edge cases are handled with clear, actionable error messages. Users shouldn't see stack traces—they should know what went wrong and how to fix it.


Feature Evolution

Phase 1: Core Operations

  • VM status checking
  • Cluster node health monitoring
  • Basic start/stop operations

Phase 2: VM Lifecycle Management

  • Full VM creation wizard
  • Comprehensive deletion with safety measures
  • Resource modification (memory, CPU, disk)

Phase 3: Cluster & Advanced Operations

  • Multi-node resource visibility
  • ISO management
  • Container support alongside VMs
  • Configuration management

Current State (v2.1.1)

A comprehensive infrastructure management tool supporting:

  • Complete VM/container lifecycle operations
  • Cluster and single-node deployments
  • ISO image management
  • Resource monitoring and status checks
  • Safe destructive operations with multi-layer confirmations

Impact & Reflection

UX is Universal

"Understanding people matters more than understanding platforms"

This was my first CLI tool, but it reinforced something fundamental: UX isn't just about web interfaces. It's about how people use things in the world—whether that's CLI tools, credit card terminals (why is the accept button never in the same spot?), or car infotainment systems.

My skills in product design, web strategy, and conversion optimization aren't domain-specific—they extend to anything that serves users. The same principles that make a web form intuitive apply to CLI wizards. The same safety considerations for destructive actions apply whether it's deleting a database record or a VM.

From Personal Tool to Open Source Product

PXC started as scratching my own itch—managing VMs from my phone at Disneyland. But building it required thinking beyond personal convenience:

  • Safety measures that protect tired operators at 4am
  • Information architecture that scales from one node to large clusters
  • Interaction patterns that balance speed with clarity
  • Documentation and error handling that makes the tool accessible to others

This is product thinking: solving your own problem in a way that solves it for everyone facing similar challenges.

What's Next

Planned Features (v2.2+):

  • Batch operations for power users
  • Enhanced filtering and search
  • Resource templates for common VM configurations
  • Improved performance monitoring

Exploring New Approaches: The CLI landscape is evolving. Tools like OpenTUI represent newer approaches that may offer advantages. Staying aware of these developments while focusing on delivering value now reflects a balanced approach to technical decision-making.


Key Takeaways

1. Good UX transcends medium. The principles of user-centered design apply equally to web apps, mobile interfaces, and terminal tools. Understanding user context and cognitive load matters more than understanding specific technologies.

2. Safety requires intentional design. Protecting users from mistakes—especially when tired or distracted—requires multi-layered approaches and conscious consideration of failure modes.

3. Personal pain points make the best products. Building tools you use daily ensures you understand the problem deeply and can iterate based on real usage, not assumptions.

4. Simplicity and power aren't opposites. Comprehensive functionality delivered through clear, guided interactions serves both novices and experts better than arcane commands that require memorization.

5. Product thinking elevates technical execution. Anyone can call an API. Thoughtful product design considers context, safety, mental models, and long-term maintainability—transforming functional code into genuinely useful tools.


Links & Resources


Want to discuss product design for developer tools? Let's connect

Project Gallery

PXC: Bringing Product Design Thinking to Infrastructure Tooling screenshot
PXC: Bringing Product Design Thinking to Infrastructure Tooling screenshot
PXC: Bringing Product Design Thinking to Infrastructure Tooling screenshot
PXC: Bringing Product Design Thinking to Infrastructure Tooling screenshot