Skip to content
Back to Projects
Personal project2025

PXC: A safer Proxmox CLI for a phone-sized terminal

A personal Proxmox CLI that combines a guided terminal flow, configuration reuse, and deliberate safeguards for destructive infrastructure work.

PXC: A safer Proxmox CLI for a phone-sized terminal

Client

Personal project

Role

Product Designer, UX Engineer, Developer

Technologies

TypeScript, React Ink, Proxmox API, Node.js

Key Results

3checks
Safety layers
Guided terminal flow
Default interaction
Personal homelab
Use case

The problem

A homelab task should not require remembering a command from scratch.

PXC began as a scratch-your-own-itch tool for managing my Proxmox homelab. The Proxmox web UI can take me a few minutes to work through when I need to create a VM. From a phone shell emulator, that kind of panel-based workflow is even less practical.

The alternative, a flags-only CLI, is powerful but puts the burden on memory. I can forget a flag or miss a required step, especially when I am using a phone keyboard. I wanted a terminal interface that preserved the speed of commands without making recall the primary interface.

The interaction model

Guidance by default, flags when I already know the path.

The default flow is deliberately inspired by the sequential simplicity of create-next-app: one question at a time, only the decision currently needed, then the next. It is designed for a regular terminal but is especially useful from a shell emulator on a phone.

PXC still supports flags for a faster, command-driven path. The two modes serve different needs:

  • The guided flow helps me complete configuration without missing a step or recalling every option.
  • Flags remain available when I already know exactly what I want to create.
PXC guided terminal flow for Proxmox management Hand-drawn PXC VM-creation flow showing configuration reuse, explicit target selection, guided VM settings, review, and deliberate confirmation

Working sketch of the interaction model. It records the decisions behind the guided flow rather than representing a literal terminal screen.

Make the available choices visible.

Instead of requiring me to type infrastructure identifiers from memory, the guided flow auto-discovers available storage pools, network bridges, and ISOs. It also remembers the prior VM configuration and can offer to reuse its CPU, RAM, and network settings for the next VM.

That combination reduces repeated setup work without hiding the underlying decisions. I can accept a known-good starting point, then change the values that need to differ.

Safety model

Destructive actions deserve more than one chance to reconsider.

PXC’s destructive-action flow comes from the risk of making an irreversible infrastructure mistake, not from a particular incident. I am careful with deployments, but careful people still benefit from interfaces that make the target and consequence explicit.

Every destructive operation uses three safeguards:

  1. A visible confirmation of the target.
  2. A type-to-confirm check using the VM ID.
  3. A visible countdown that can be cancelled.

The goal is not to make a valid action difficult. It is to create deliberate pause points before an action that could affect the wrong server. The same safety pattern is applied consistently rather than relying on attention alone.

PXC destructive-action safety model showing target verification, type-to-confirm, and a cancellable countdown

Interaction-model reconstruction based on the shipped safeguards.

PXC confirmation flow before deleting an ISO

Engineering

A terminal UI built around the environment it manages.

PXC is implemented in TypeScript with React Ink and installed on the Proxmox node. It uses both the Proxmox API and local Proxmox commands, allowing the interface to combine guided interaction with the information and operations available on that node.

React Ink made it possible to bring familiar interface patterns into a terminal renderer: composed UI, stateful steps, and input handling. The implementation matters here because the product decision is inseparable from the medium. The terminal is not treated as a degraded web form; it is the interface I need when I am away from a desktop.

Working PXC architecture sketch tracing the guided React Ink terminal interface to the Proxmox node, which manages VMs, containers, storage, and networking

My working architecture sketch. It shows the guided React Ink interface offering questions, saved configuration, and CLI flags on the node, able to use the Proxmox API and node-local commands against the VMs, containers, storage, and networking that node manages. It is a personal sketch, not production documentation, and does not show any specific cluster topology or host details.

Outcome and reflection

A tool I use for my own infrastructure.

PXC is a personal-use project, not an externally benchmarked product. For my own workflow, it replaces a few minutes of web-UI navigation with a guided terminal sequence I can use from a phone shell emulator.

Its most useful lesson is modest: infrastructure tools can make safer behavior easier without removing expert control. Guidance, discovery, remembered configuration, and an escape hatch to flags are all parts of the same design. The right interface depends on whether I need help remembering the path or simply need to move quickly through one I already know.

GitHub → · npm →

Project Gallery

PXC: A safer Proxmox CLI for a phone-sized terminal screenshot
PXC: A safer Proxmox CLI for a phone-sized terminal screenshot