For Proxmox VE // native on your Mac

One keyboard. The whole herd.

All your Proxmox VE consoles in one native Mac window. Type into all of them at once, or into just one.

Made for the part before SSH works: OS installers, first logins, network setup, boot menus and recovery shells. On twelve machines at a time, without twelve browser tabs.

  • Apple silicon + Intel
  • written in Rust
  • no account
  • no analytics

Before SSH works

  • OS installers
  • first logins
  • network setup
  • boot menus
  • recovery shells

01 Many at once

Every console, live, in one grid.

Pick VMs and containers from your cluster and watch all of their consoles side by side. No browser tabs, no noVNC windows to juggle.

  • Every tile shows VMID, name and a status lamp above its live console, plus node and uptime when there is room.
  • Consoles connect by themselves while a VM runs, so you see it boot, and reconnect after a drop.
  • Tiles appear in the order you pick them. Automatic layout or 1 to 8 columns, remembered per cluster.
  • Consoles open in shared mode: a Proxmox web console that is already open stays connected.
VMherd showing twelve VM consoles in a four by three grid; each tile has a VMID, a name, a green status lamp and a live console, one VM is powered off.
Grid. Twelve consoles, one window.

02 Control all at once

Type once. Every synced console follows.

Click the broadcast bar, or press Enter, and it goes ON AIR: every keystroke goes to all synced consoles at the same time, as real key presses.

Think csshX or tmux synchronize-panes, but on the VM console itself, so it works before there is a network, an SSH daemon or even an installed OS.

  • A red sync toggle on every tile decides which consoles follow along. Sync all or none in one click.
  • ⌘ V types the clipboard into the consoles, and asks first when it holds several lines.
  • Keys follow the guest's own keyboard layout, like a real keyboard. Held keys are released when the window loses focus, so no modifier stays stuck.
  • Hold Esc for one second to stop. A short Esc still goes to the consoles.
  • ↵
  • Tab
  • Esc
  • ↑
  • ↓
  • ^C
  • ^D
  • ^Z
  • ^L
Broadcast mode: the bottom bar is red and reads ON AIR, and the same apt command appears in eleven consoles; one tile with its sync toggle off did not receive it.
ON AIR. Eleven consoles type along; the one with sync off does not.

03 Per-VM values

One line, a different value on every machine.

Type text sends a command or a script to every synced console, and fills in placeholders for each VM on the way.

Type text
hostnamectl set-hostname {{name}}
echo "{{vmid}} on {{node}}: {{ipv4}} {{ipv6}}"
What each console receives
VMtyped
101echo "101 on node1: 192.0.2.11 2001:db8::11"
104echo "104 on node2: 198.51.100.21 2001:db8::21"
107echo "107 on node3: 203.0.113.41 2001:db8::41"
  • {{ipv4}} and {{ipv6}} come from the QEMU guest agent or the container's interfaces. A VM without an address gets nothing typed.
  • Adjustable per-character delay (20 ms by default) for reliable input; optionally press ↵ after.
Nine consoles after one Type text command with placeholders: each console printed its own VMID, name, node and IPv4 address.
Type text. {{name}} becomes web-01, web-02, db-01 …

04 Or just one

Drive a single machine, right from your desktop.

No Proxmox web interface, no browser tab, no hunting through the tree. The console you need is one click away, and so are its power buttons.

Solo mode: one console in the grid has an amber outline and a SOLO label; only that VM receives keyboard and mouse input.

Solo

Click a console and it turns amber: keys and mouse go to that VM only. Hold Esc to let go.

Power controls on a tile: the shutdown button is highlighted and asks for a second click; a powered-off VM next to it shows a start button.

Power

Start, shut down (ACPI) or hard stop a VM from its tile. Shutdown and stop ask for a second click.

One console maximized to fill the whole VMherd window, showing a text-mode OS installer asking for a hostname.

Maximize

Blow any console up to the full window for an installer or a boot menu. Esc restores the grid.

05 Filter and list

Find the right twelve out of hundreds.

The VM list filters on name, VMID, node, status and tags as you type. Two operators, zero learning curve.

web prod
space means AND: both must match
web, db
comma means OR: either one
web prod, db prod
combine them: web in prod, or db in prod
101 102 117
paste a column of VMIDs to select exactly those
  • Running only, sortable columns (VMID, name, node, status, tags, uptime) and natural order: web-2 comes before web-10.
  • Click to add or remove, shift-click for a range, or + All shown.
  • Keyboard-first: / opens the list, Tab and arrows move, Space picks, Esc closes.
The VM list over the grid: the filter reads web prod, db prod with Running only checked, and a sortable table lists matching VMs with VMID, name, node, status, tags and uptime.
VM list. Filter, sort, pick. Press / from anywhere.

>_ Keyboard

Your hands never leave the keys.

Enter
Type into all synced consoles (when nothing else has the keyboard)
Click a console
Type into that console only: SOLO
Hold Esc 1 s
Stop typing into consoles; a short Esc goes to the consoles
/
Show or hide the VM list
Tab ↑ ↓ Space
In the VM list: move, add or remove a VM; Esc closes it
⌘ V
Type the clipboard into the consoles
⌘ ↵
In the Type text box: type it into all synced consoles
Esc
Restore a maximized console to the grid

06 Under the hood

Boring where it counts.

Least privilege, secrets in the Keychain, pinned certificates. VMherd talks to your Proxmox servers and nothing else.

API tokens, least privilege

Log in with a Proxmox API token (user@realm!name), never a password. You decide what it may do: VM.Audit and VM.Console, plus VM.PowerMgmt for the power buttons.

Secrets in your Keychain

Token secrets are stored in your macOS Keychain, never in a settings file. Bookmarks and layout stay in the app's own sandbox container.

TLS pinned on first use

HTTPS only for remote servers. Self-signed Proxmox certificates are pinned by SHA-256 fingerprint, like SSH host keys. A changed certificate is refused until you trust it again.

No account, no analytics

No sign-up, no telemetry, no update pings. VMherd connects only to the servers you add. Keys go only to the consoles you selected, while the VMherd window is focused.

Multiple clusters

Bookmark any number of Proxmox VE clusters or single nodes and switch between them from the top bar. The grid is remembered per cluster.

Native, in Rust

Its own VNC client, written in Rust, no browser engine, no plugins. A universal app that runs natively on Apple silicon and Intel Macs.

07 What you need

Three things.

  1. A Mac with Apple silicon or an Intel processor.
  2. Proxmox VE, a cluster or a single node, reachable from your Mac over HTTPS (usually port 8006).
  3. An API token with VM.Audit and VM.Console, plus VM.PowerMgmt for the power buttons.
On a Proxmox node: a user, role and token for VMherd
# a role with just what VMherd needs
pveum role add VMherd --privs "VM.Audit VM.Console VM.PowerMgmt"
pveum user add vmherd@pve
pveum acl modify /vms --users vmherd@pve --roles VMherd
# the token inherits the user's permissions
pveum user token add vmherd@pve grid --privsep 0


Leave out VM.PowerMgmt for a look-and-type-only token. Narrow /vms to a pool to limit which VMs VMherd can see.

?? FAQ

Questions, answered.

Does it work with a single node?

Yes. Bookmark a standalone Proxmox VE node exactly like a cluster: its API URL, a token ID and the token secret.

Which permissions does the token need?

VM.Audit to list VMs and VM.Console to open their consoles. Add VM.PowerMgmt if you want the start, shutdown and stop buttons. Grant them on /vms, or on a pool.

Does it send keys to other apps?

No. Keys only go to the consoles you selected (synced, or the one in solo) while the VMherd window is focused and the bar shows ON AIR or SOLO. VMherd needs no Accessibility or Input Monitoring permission, and releases all keys when the window loses focus.

Is there a demo?

Yes. Click Try the demo on the cluster screen to open a built-in demo cluster with simulated VMs: live consoles, power buttons and typing, all local. No Proxmox server needed.

VMs and containers?

Both: QEMU/KVM virtual machines and LXC containers show up in the VM list and open as tiles.

What about keyboard layouts?

Broadcast and solo keystrokes are sent as physical keys, so the guest's own layout applies, like a real keyboard. Type text sends US key codes, so for that the guest needs a US layout.

Will it kick out my open Proxmox web console?

No. VMherd opens consoles in shared mode, so a noVNC console in the Proxmox web interface stays connected.

Is the source code available? What is the license?

Yes. The source is on GitHub, source-available under the PolyForm Noncommercial License 1.0.0; it also builds for Linux and Windows.

The Mac App Store version is licensed under Apple's standard license agreement, and covers use at home and at work. See License.

Round up your herd.

All your Proxmox VE consoles in one native Mac window. €19.99, one-time purchase.