WickaSoft PMClient

A native console for Proxmox VE.

The cluster tree, real VNC consoles for virtual machines, text consoles for containers and node shells, and the Proxmox web interface itself — in one app, with the guest's clipboard wired to your own. Windows, macOS and Linux; x86_64 and ARM64. It follows your system theme out of the box — or pin it light or dark — and consoles stay dark regardless, as they should.

Version 1.2.2 · clean-room protocol engine · 781 automated tests

WickaSoft PMClient with the cluster tree on the left and a live VNC console on the right
The cluster tree beside a live VNC console. (Illustration — replaced automatically by assets/screenshots/console.jpg when present.)
Why it exists

Copy and paste shouldn't be the hard part.

Proxmox's built-in noVNC console is fine — until you need to move text in or out of a guest. The browser sandbox means no seamless clipboard, so you end up retyping passwords and shuttling text through side channels.

The usual answer, SPICE, is effectively unmaintained on the desktop: the reference Windows client hasn't had a release since 2021, is x86_64-only, and upstream platforms have been dropping the protocol altogether.

PMClient takes the direct route. It speaks VNC straight to the cluster through its own clean-room RFB 3.8 engine and implements the RFB Extended Clipboard extension, bound to your real system clipboard. Turn on clipboard=vnc for the VM — PVE 8.1+, one click from inside PMClient — and Ctrl+C / Ctrl+V just works, in both directions.

And yes: the guest-side helper is still called the SPICE agent. That's a name, not a dependency — QEMU reuses that small in-guest channel for clipboard=vnc, and no SPICE connection is ever involved. The agent comes with the standard guest tooling: on Windows, Red Hat's virtio-win installer delivers it alongside the QEMU guest agent; on Linux it's the spice-vdagent package, a small companion to the usual qemu-guest-agent. What's abandoned is the desktop SPICE client stack — exactly the part PMClient replaces.

And when paste is dead, PMClient tells you why. It checks whether the guest's agent is actually running and reports what it found, instead of leaving you guessing at a silent clipboard.
Features

Everything between you and the guest, done properly.

Clipboard that just works

The RFB Extended Clipboard, both directions, wired to your OS clipboard — with one-click enablement on the VM and real detection of a dead guest agent instead of silent failure.

A clean-room VNC engine

RFB 3.8 written from the specification: ZRLE, Tight, Hextile and Raw decoders, resize and cursor handling, QEMU extended key events. ZRLE by default; switch to Tight for slow links.

The whole cluster, one window

Server, Folder and Pool views of the resource tree, a native datacenter summary, storage contents at a glance — and the Proxmox web UI itself, already signed in: embedded in the pane on Windows and macOS, in its own isolated window on Linux.

Real terminals

Text consoles for containers, node shells and serial VMs, backed by a genuine VT engine — vim, htop and other full-screen programs behave the way they should.

Sign in your way

Passwords, TOTP and WebAuthn second factors, API tokens — or browser sign-in through any OpenID Connect realm the cluster trusts: Entra, Okta, Keycloak, Authentik. PMClient fronts PVE's own OpenID flow, using the redirect your web UI already has.

Security without escape hatches

SHA-256 certificate pinning: confirm on first contact, loud refusal on mismatch — and deliberately no "ignore" button. Secrets live in DPAPI, Keychain or Secret Service, never in a file.

Migration without guesswork

Right-click a guest: every target shows its route and cost up front — replicated, shared storage, or how much local disk gets copied. Nodes that can't take the guest stay listed, disabled, with the reason — the mid-upgrade traps PVE's own target list doesn't catch.

Blockers, named up front

If a guest can't move at all — a linked clone, a device pinned to its node — the menu says Blocked and why before anything starts, not minutes into a transfer. And unknowns fail open: a fact PMClient can't check never hides a choice you're entitled to.

Watch it move

Before committing you're told what to expect: a running VM pauses briefly, a container restarts. Then a live chip on the VM's row names the phase that dominates — migrating · disk 85%, migrating · RAM 42% — parsed from the cluster's own task log.

Consoles that follow the guest

A live migration kills the old node's console proxy. PMClient notices, waits until the guest is actually running, re-resolves its new node and reconnects with a fresh ticket — bounded backoff instead of a hung window.

Resolutions, without the console fight

Pick a resolution from the console bar and a Linux guest follows it — up to 4K, nothing to install. Windows guests get a one-click switch to a virtio-gpu display that unlocks the full resolution list inside the guest — and the console tracks whatever the guest picks.

Keep nodes current

Right-click a node to refresh its package index or run the full upgrade — in a real console you watch, not a spinner. A status line names what's pending by origin (17 Debian, 4 Proxmox), and when a newer kernel is installed than the one running, PMClient says a reboot is due.

Fluent in PVE permissions

PMClient reads your account's effective privileges — pool inheritance, privilege-separated API tokens and all — and shapes itself to match: power and migration actions you lack simply don't appear. Anything the cluster still refuses is explained in plain language that names the privilege to ask for — not a raw API error.

Batteries included, everywhere

Windows, macOS and Linux — x86_64 and ARM64 natively on each, from Snapdragon X laptops to Apple silicon. Every build carries its runtime inside: no .NET to set up, no dependency chasing.

Download

Version 1.2.2

Pick the build that matches your OS and CPU. Every build carries its own runtime — there is nothing to set up first. Public downloads are being staged — the links below lead to a holding page until they open.

OS / CPUFileNotes
Windows · x86_64 WickaSoft-PMClient-1.2.2-win-x64.exe The normal choice on desktops and most laptops.
Windows · ARM64 WickaSoft-PMClient-1.2.2-win-arm64.exe Snapdragon X, Surface Pro X/11. The x86_64 build runs under emulation, but native is much faster.
Linux · x86_64 wickasoft-pmclient_1.2.2_amd64.deb Debian / Ubuntu package: sudo apt install ./wickasoft-pmclient_1.2.2_amd64.deb
Linux · ARM64 wickasoft-pmclient_1.2.2_arm64.deb As above.
Linux · other distros …-linux-x64.tar.gz · …-linux-arm64.tar.gz Untar and run — the tarball preserves the executable bit.
macOS · Apple silicon WickaSoft-PMClient-1.2.2-osx-arm64.zip A regular .app bundle — unzip and drag to Applications.
macOS · Intel WickaSoft-PMClient-1.2.2-osx-x64.zip As above.

Not sure which CPU you have? Windows: Settings → System → About → System type. Linux and macOS: uname -m.
Setup steps, shortcuts, permissions and troubleshooting live in the documentation.

What you need on the cluster: Proxmox VE 8.x (7.x tolerated), API on the default port 8006. Seamless clipboard needs PVE 8.1+ with clipboard=vnc on the VM's display — PMClient can flip that for you — plus the SPICE agent in the guest: part of the virtio-win guest tools on Windows, the spice-vdagent package alongside the usual qemu-guest-agent on Linux.
OpenID sign-in (Entra, Okta, Keycloak, …) opens the provider's page in an embedded browser on Windows (WebView2, preinstalled on Windows 11) and macOS (WKWebView, nothing to install); on Linux it appears in its own window, via a bundled WebKitGTK helper. Password, TFA and API-token sign-ins need none of this.