HostsDeck
Stream Deck plugin · macOS

Your computers and servers, one key away.

Save a host once. Then drop a key for VNC, SSH, its web interface, any custom URI, Wake-on-LAN or a live online indicator, and every key follows that host.

Requires the Stream Deck app 7.1 or newer. Connections open in the apps your Mac already uses: Screen Sharing, Windows App, Terminal and your browser. HostsDeck also installs on Windows 10 and 11, where it is provided as is and without support; see Windows.

How it works

Configure a host once, reuse it everywhere

HostsDeck is built around the host, not the button. A host is a name, an address and a few optional service details. Every key only remembers which host it points at, so renaming or re-addressing a machine updates all of its keys at once.

  1. Install

    Add HostsDeck from the Elgato Marketplace. It runs inside the Stream Deck app, no helper app or Terminal scripts.

  2. Add a host

    Drag any HostsDeck action to a key and enter a name and an IP address or hostname, such as mac-studio.local.

  3. Add keys

    Every other HostsDeck key can pick the same host from a list. Edit the host from any of them.

  4. Press

    Your computer opens the right app. Authentication stays where it belongs: in Screen Sharing, Terminal or your browser. HostsDeck never asks for a password.

Actions

Six keys, one host record

Connect VNC

Opens vnc://host[:port] in Screen Sharing or your VNC app. Optional custom port.

Connect RDP

Opens a Remote Desktop session in Windows App on macOS or Remote Desktop Connection on Windows. Optional user (also DOMAIN\user) and port; the client asks for the password.

Connect SSH

Opens ssh://[user@]host[:port] in Terminal or your ssh:// handler. Optional user and port.

Open Web UI

Opens the host's saved URL, or http://host/ when none is set, in your default browser. Ideal for NAS, router and hypervisor consoles.

Open Custom URI

A per-key template such as rdp://{address} or smb://{address}/share, filled from the host. Placeholders: {address}, {vncPort}, {sshPort}, {sshUser}.

Wake on LAN

Sends magic packets to the host's MAC address. Optional broadcast address and port for other subnets. A green check confirms the packets left.

Host Status

Shows ● ONLINE with response time or ○ OFFLINE, refreshed every 15 seconds to 5 minutes and on every press. Uses a TCP handshake, so it needs no special permissions.

Every key can show the host name, your own text plus the host name, your own text plus the address, or your own text only.

Editions

Two editions, one difference

Both editions share every action, every option and the same interface. The only difference is how many hosts they keep.

Each edition keeps its own settings. If you move from Lite to HostsDeck, enter your host again; it is one record.

Setup & help

Getting connected

On the remote Mac

Open System Settings → General → Sharing. Turn on Screen Sharing for VNC and Remote Login for SSH. For Wake-on-LAN, turn on Wake for network access under Energy and keep the Mac on Ethernet.

On the remote Windows PC

Open Settings → System → Remote Desktop and turn it on. On macOS, install Windows App (formerly Microsoft Remote Desktop) from the App Store so rdp:// links and .rdp files have a handler. Windows uses its built-in Remote Desktop Connection.

On Windows, where Stream Deck runs (as is, no support)

HostsDeck is built and supported for macOS. It also installs on Windows 10 and 11, but Windows is not a supported platform: the Windows launcher has been exercised in a virtual machine only, and problems that occur only on Windows are not covered by support. Use it there at your own risk. Connect RDP, Open Web UI, Wake on LAN and Host Status work out of the box. Windows opens ssh:// and vnc:// links only through an app registered for them, and neither PuTTY nor the built-in OpenSSH client registers one. Without a handler Windows shows “Get an app to open this ‘ssh’ link” with a Microsoft Store button; the key shows no warning because Windows reports that dialog as a successful launch. Check a scheme with start ssh://example.com in a Command Prompt.

To use PuTTY for SSH keys, run this once in PowerShell (adjust the path). It registers a handler for the current user only, no administrator rights needed, and passes the user and port from the link to PuTTY:

$putty = 'C:\Program Files\PuTTY\putty.exe'
$open = 'powershell.exe -NoProfile -WindowStyle Hidden -Command "$u=[uri]''%1''; $a=@(''-ssh''); if($u.UserInfo){$a+=''-l'',$u.UserInfo}; if($u.Port -gt 0){$a+=''-P'',$u.Port}; $a+=$u.DnsSafeHost; Start-Process ''' + $putty + ''' -ArgumentList $a"'
New-Item -Path 'HKCU:\Software\Classes\ssh\shell\open\command' -Force | Out-Null
Set-ItemProperty -Path 'HKCU:\Software\Classes\ssh' -Name '(default)' -Value 'URL:SSH Protocol'
Set-ItemProperty -Path 'HKCU:\Software\Classes\ssh' -Name 'URL Protocol' -Value ''
Set-ItemProperty -Path 'HKCU:\Software\Classes\ssh\shell\open\command' -Name '(default)' -Value $open

For VNC, RealVNC Viewer's regular installer registers a URI handler (the standalone download does not). For TightVNC, UltraVNC or another viewer, register it the same way with the viewer's path and the host and port syntax it expects, for example host::port for TightVNC:

$viewer = 'C:\Program Files\TightVNC\tvnviewer.exe'
$open = 'powershell.exe -NoProfile -WindowStyle Hidden -Command "$u=[uri]''%1''; $p=if($u.Port -gt 0){$u.Port}else{5900}; Start-Process ''' + $viewer + ''' -ArgumentList (''{0}::{1}'' -f $u.DnsSafeHost,$p)"'
New-Item -Path 'HKCU:\Software\Classes\vnc\shell\open\command' -Force | Out-Null
Set-ItemProperty -Path 'HKCU:\Software\Classes\vnc' -Name '(default)' -Value 'URL:VNC Protocol'
Set-ItemProperty -Path 'HKCU:\Software\Classes\vnc' -Name 'URL Protocol' -Value ''
Set-ItemProperty -Path 'HKCU:\Software\Classes\vnc\shell\open\command' -Name '(default)' -Value $open

Remove a handler with Remove-Item -Path 'HKCU:\Software\Classes\ssh' -Recurse (or vnc).

In the host editor

FieldWhat to enterDefault when blank
AddressIPv4, IPv6 without brackets or zone, or an ASCII hostname. No protocol, user, port or path.required
VNC port1–655355900
RDP user / portname, DOMAIN\name or name@domain; 1–65535. Import .rdp file… fills these and the address from an exported Remote Desktop file.asked on connect / 3389
SSH user / portA login name; 1–65535current user / 22
Web URLFull http:// or https:// URL without credentialshttp://address/
MACAA:BB:CC:DD:EE:FF, dashes, dots or no separatorsWake on LAN unavailable
WoL broadcast / portIPv4 broadcast; 1–65535255.255.255.255 / 9
Status portOne TCP port to probeVNC, SSH, RDP and web ports

Troubleshooting

The key flashes a yellow warning

The host is missing, invalid or could not be launched. Open the key's settings: the message at the bottom says what went wrong. Logs are in the plugin's logs folder under the Stream Deck plugins directory.

Screen Sharing opens but does not connect

HostsDeck only asks macOS to open the address. Connection and login errors come from Screen Sharing itself: check the address, that Screen Sharing is on, and that you are on the same network or VPN.

Where do I find the address of a connection I already have in Windows App?

Export the connection from Windows App (or copy the .rdp file you use with Remote Desktop Connection) and click Import .rdp file… in the RDP section of the host editor. HostsDeck reads the full address, username and port lines and fills the fields; you review them and save. Or open the file in a text editor and look for those lines yourself.

Connect RDP does nothing or shows a warning on macOS

macOS needs an app that handles rdp:// links and .rdp files; install Windows App from the App Store. With an RDP user set, HostsDeck writes a two-line .rdp file (address and user, never a password) in the temporary folder and opens it so the account is prefilled.

Windows shows “Get an app to open this ‘ssh’ link”

No app is registered for ssh:// (or vnc://) links; the same applies to Connect VNC and custom URIs with an unhandled scheme. Register PuTTY or your VNC viewer as shown under Setup, then press the key again. Connect RDP and Open Web UI need nothing extra.

SSH opens a different app than Terminal

macOS opens ssh:// links with whichever app claimed the scheme. Change it in that app's settings, or set the default handler with a tool such as SwiftDefaultApps.

Wake on LAN shows a green check but the machine stays asleep

The check means the packets left this Mac. The target must have Wake-on-LAN enabled in its firmware or OS, be on Ethernet, and be on the same subnet, or you must set the subnet's broadcast address and a router that forwards it.

Host Status says OFFLINE for a machine that is on

Status probes TCP ports. If none of VNC, SSH or the web port is open, set a Status port that the machine does answer on, for example 445 for a Windows PC or 8006 for Proxmox. A refused connection counts as online; only silence counts as offline.

The Stream Deck title field does nothing

HostsDeck draws its own key labels. Use the Label option in the key's settings instead of the native title.

Privacy

Nothing leaves your computer

HostsDeck stores host names, addresses and optional ports, user names, URLs and MAC addresses in the Stream Deck app's own settings on your computer. It never stores passwords, never sends data to ikolek.pl or any other server, and contains no analytics or crash reporting.

Network traffic is limited to what you trigger: opening a connection through macOS or Windows, sending Wake-on-LAN packets to the address you configured, and, for Host Status keys, short TCP connection attempts to your host at the interval you chose. The plugin's log records error codes only, never addresses or credentials.

Support

Questions and bug reports

Email
support@ikolek.pl
Include
Your macOS and Stream Deck app versions, the edition, what you pressed, and the message shown in the key's settings. Support covers macOS; Windows reports are welcome but handled as time allows.
Publisher
Bartosz Kolek · ikolek.pl