WabiLink

Your files, terminals and desktop — over one fast, encrypted link.

WabiLink connects you to your own server: move files at full speed, open a terminal, reach services behind its firewall, and use its desktop with sound — from Windows, macOS or Linux.

Version 1.1.6, released 6 October 2026Windows, macOS and Linuxx86_64 and ARM, Raspberry Pi includedNothing else to install

One connection, everything on your server

The client logs in once; files, terminals, tunnels and the desktop all travel over that session, encrypted end to end. Only one port needs to be open.

Fast transfers

Files go over several connections at once and are put back together, so a long or lossy link is used to the full. Transfers resume where they stopped.

Shares and live folders

Browse the server's shares like a local disk. Folders update as they change, and a file opened from the server is saved back to it.

Terminals

A shell on the server, or a login over SSH, in a tab of the client — with no SSH port reachable from outside.

Tunnels

Reach a database, a web interface or any TCP service near the server through a local port — the administrator decides who may use which.

Remote desktop, at 60–120 fps

The server's own desktop, built in: coded on its graphics card where it has one, sharp when still, every monitor, sound in step with the picture, and a clipboard that carries text, images and files.

Yours, and secure

Your server, your accounts: per-user rights, the server's identity checked by fingerprint, and every byte encrypted. An admin tool manages it all from your desk.

Get WabiLink

Three quick choices, and you get the download and the instructions for exactly your machine. Version 1.1.6 released 6 October 2026.

1Which system is it for?

WabiLink for Windows

Version 1.1.6

The app you connect with. It comes with everything it needs: no installer, nothing else to set up.

  1. Download it

    Most PCs are x64; take ARM64 for a Snapdragon laptop or a Surface Pro X.

  2. Unpack it

    Right-click the downloaded .zip → Extract All…, and choose where it should live, for example C:\Users\you\Apps. Then open the wabilink-client folder and run WabiLink.exe.

    Right-click WabiLink.exe → Pin to Start to find it again.

    Windows protected your PC? WabiLink is not yet known to SmartScreen. Click More info → Run anyway. It asks only the first time.
  3. Connect

    Click New profile and fill in the server's address (port 8009), your account and password. The first time, WabiLink shows the server's fingerprint: compare it with what the server's administrator got from wabilink-server identity, and accept it.

  4. Video for the remote desktop optional

    The server's desktop is decoded on your graphics card with Windows' own decoders. For HEVC install Microsoft's HEVC Video Extensions, and on Windows 10 the free AV1 Video Extension, from the Microsoft Store. Without them, WabiLink picks a codec you do have.

Updating

Close WabiLink, unpack the new .zip over the old folder, and start it again. Your profiles are kept.

Removing

Delete the folder. Profiles and settings are in %LOCALAPPDATA%\WabiLink.

WabiLink Admin for Windows

Version 1.1.6

Manages a WabiLink server from your desk: users and their rights, shares, the remote desktop, and the server's settings.

  1. Download it

    Most PCs are x64; take ARM64 for an ARM laptop.

  2. Unpack it and start it

    Right-click the .zip → Extract All…, open the wabilink-admin folder and run WabiLink Admin.exe. If SmartScreen warns: More info → Run anyway.

  3. Log in to a server

    Use the server's address and its admin port, 8010, with an administrator account — one created with user add NAME --admin on the server.

    The admin port should be open only to where you administer from. If you cannot reach it, check the server's firewall for TCP 8010.

WabiLink Server for Windows

Version 1.1.6

Runs as a Windows service: it starts with Windows, restarts if it stops, and shows this PC's own desktop to the people you allow.

  1. Download it

  2. Unpack it where it will stay

    The service runs from this folder, so put it somewhere permanent. Open PowerShell as administrator (Win+X → Terminal (Admin)) and run:

    Get-Item $HOME\Downloads\wabilink-server-*-windows-*.zip | Unblock-File
    Expand-Archive -Path $HOME\Downloads\wabilink-server-*-windows-*.zip -DestinationPath "C:\Program Files\WabiLink"
    cd "C:\Program Files\WabiLink\wabilink-server"
  3. Install and start the service

    .\wabilink-service install --start

    It runs as LocalSystem; its data and logs are in C:\ProgramData\WabiLink\Server. .\wabilink-service status says whether it is running.

  4. Add yourself and a share

    .\wabilink-service user add $env:USERNAME --admin          # asks for a password, twice
    .\wabilink-service share add $env:USERNAME Files C:\Users\Public
    .\wabilink-service identity                       # the fingerprint clients will be shown

    Your WabiLink account is named as your Windows account, with a password of its own; Files is the PC's Public folder. Write down the fingerprint: you will compare it the first time you connect.

  5. Open the firewall

    Clients connect on 8009; the admin tool on 8010, which this opens to your local network only:

    New-NetFirewallRule -DisplayName "WabiLink" -Direction Inbound -Protocol TCP -LocalPort 8009 -Action Allow
    New-NetFirewallRule -DisplayName "WabiLink Admin" -Direction Inbound -Protocol TCP -LocalPort 8010 -RemoteAddress LocalSubnet -Action Allow
  6. This PC's desktop optional

    Let users see and use this PC's screen from WabiLink, in their session:

    .\wabilink-service config set desktop-enabled yes
    .\wabilink-service user desktop $env:USERNAME yes

    That is all on Windows: with nobody logged in, the viewer shows the login screen. With a graphics card, the screen is coded on it.

Updating

.\wabilink-service stop
Expand-Archive -Path $HOME\Downloads\wabilink-server-*-windows-*.zip -DestinationPath "C:\Program Files\WabiLink" -Force
.\wabilink-service start

Removing

.\wabilink-service uninstall

The data in C:\ProgramData\WabiLink\Server is kept; delete it too to remove everything.

WabiLink for macOS

Version 1.1.6

The app you connect with. One command downloads the right version for your Mac and puts it in Applications.

You need: macOS 13 (Ventura) or later, and an administrator account on the Mac (the one you set it up with usually is).
  1. Open Terminal

    Press ⌘+Space, type Terminal and press Return.

  2. Copy this, paste it into Terminal, and press Return

    curl -fsSL https://alexander-miglis.github.io/wabilink-packages/install-macos.sh | bash -s client

    It finds out whether your Mac has Apple silicon or Intel, downloads the newest WabiLink for it, checks it, and puts WabiLink in Applications. It says when it is done.

  3. Open WabiLink

    Open Applications in Finder (or Launchpad) and double-click WabiLink.

  4. Connect

    Click New profile: the server's address (port 8009), your account and password. The first time, WabiLink shows the server's fingerprint: compare it with what the server's administrator got from wabilink-server identity, and accept it.

  5. AV1 video optional

    H.264 and HEVC are decoded by macOS itself. For AV1, the best codec for a slow link, install dav1d with Homebrew:

    brew install dav1d
Or download it yourself

Apple silicon (M1 and later) or Intel: Apple menu → About This Mac.

Open the .zip (Safari may already have) and drag WabiLink into Applications. The first time, Control-click it → Open → Open; on macOS 15 and later, open it, then System Settings → Privacy & Security → Open Anyway.

Updating

Quit WabiLink and paste the same command again. Your profiles are kept.

curl -fsSL https://alexander-miglis.github.io/wabilink-packages/install-macos.sh | bash -s client

Removing

Drag WabiLink from Applications to the Bin. Settings are in ~/Library/Application Support/WabiLink.

WabiLink Admin for macOS

Version 1.1.6

Manages a WabiLink server's users, shares and settings.

You need: macOS 13 (Ventura) or later, and an administrator account on the Mac.
  1. Open Terminal

    Press ⌘+Space, type Terminal and press Return.

  2. Copy this, paste it into Terminal, and press Return

    curl -fsSL https://alexander-miglis.github.io/wabilink-packages/install-macos.sh | bash -s admin

    WabiLink Admin is then in Applications.

  3. Log in to a server

    The server's address and admin port, 8010, with an administrator account (user add NAME --admin on the server).

Or download it yourself

Drag WabiLink Admin into Applications. The first time, Control-click it → Open → Open (on macOS 15: Privacy & Security → Open Anyway).

WabiLink Server for macOS

Version 1.1.6

Runs as a service: it starts when the Mac starts, before anyone logs in, and restarts if it stops. Copy each box into Terminal as it is - nothing in them needs changing.

You need:
  • macOS 13 (Ventura) or later, Apple silicon or Intel;
  • an administrator account on the Mac: sudo asks for its password. Nothing shows as you type it - type it and press Return;
  • for others to reach it, the Mac on and awake: System Settings → Energy (or Battery → Options) → Prevent automatic sleeping when the display is off.
  1. Open Terminal

    Press ⌘+Space, type Terminal and press Return.

  2. Install the server

    curl -fsSL https://alexander-miglis.github.io/wabilink-packages/install-macos.sh | sudo bash

    It downloads the newest server for your Mac, checks it, installs it in /usr/local/wabilink-server, and starts it as a service. It ends with "… is installed, running, and starts at every boot."

  3. Make yourself an account

    Your WabiLink account, named as your Mac account, and an administrator. It asks for a password for it, twice - one for WabiLink, which may be different from the Mac's:

    sudo wabilink-server user add "$USER" --admin
  4. Share a folder

    The Mac's shared folder, as Files:

    sudo wabilink-server share add "$USER" Files /Users/Shared
    Sharing your Documents, Desktop or Downloads instead

    macOS protects those folders: the server may read them only once allowed. System Settings → Privacy & Security → Full Disk Access → +, press ⌘+Shift+G, paste /usr/local/wabilink-server/wabilink-server, and turn it on. Then, for example:

    sudo wabilink-server share add "$USER" Documents "$HOME/Documents"
  5. Note the server's fingerprint

    sudo wabilink-server identity

    The app shows it the first time it connects: it should be the same.

  6. Let other computers in

    Only if the Mac's firewall is on (System Settings → Network → Firewall): Options… → +, ⌘+Shift+G, paste /usr/local/wabilink-server/wabilink-server, and set it to Allow incoming connections.

    Other computers connect to this Mac's address, which this shows:

    ipconfig getifaddr en0 || ipconfig getifaddr en1
  7. This Mac's desktop optional

    sudo wabilink-server config set desktop-enabled yes
    sudo wabilink-server user desktop "$USER" yes

    Then allow it twice, once, in System Settings → Privacy & Security - in each, +, ⌘+Shift+G, paste /usr/local/wabilink-server/wabilink-server, and turn it on:

    • Screen & System Audio Recording — to show the screen;
    • Accessibility — for the keyboard and the pointer.

    macOS may ask by itself the first time someone connects. After an update it may need turning on again.

Updating

The same command again: the newest version, the accounts and shares kept.

curl -fsSL https://alexander-miglis.github.io/wabilink-packages/install-macos.sh | sudo bash

Is it running?

sudo launchctl print system/com.wabilink.server | grep state
tail -n 20 /Library/Logs/WabiLink/server.log

Removing

sudo wabilink-server uninstall-launchd
sudo rm -rf /usr/local/wabilink-server /usr/local/bin/wabilink-server

The accounts and settings stay in /Library/Application Support/WabiLink; delete that too to remove everything.

WabiLink for Linux

Version 1.1.6

The app you connect with. It brings its own runtime; the system provides fonts, the display and, optionally, video decoders and sound.

  1. Install what it uses from the system

    sudo dnf install fontconfig libICE libSM libdav1d libavcodec-free pulseaudio-utils

    The video decoders come from EPEL:

    sudo dnf install epel-release
    sudo dnf install fontconfig libICE libSM libdav1d pulseaudio-utils
    sudo apt update
    sudo apt install libfontconfig1 libice6 libsm6 pulseaudio-utils libavcodec-extra
    sudo apt install libdav1d7 || sudo apt install libdav1d6
    sudo pacman -S --needed fontconfig libice libsm dav1d ffmpeg libpulse
    sudo zypper install fontconfig libICE6 libSM6 libdav1d7 pulseaudio-utils

    Fontconfig, libICE and libSM (any desktop has them), and for the remote desktop's video dav1d (libdav1d.so.7) and FFmpeg's libavcodec; for its sound pacat or aplay.

    dav1d and libavcodec decode the remote desktop's video; without them it is sent as lossless tiles, which needs a faster link.

  2. Download it

    For a Raspberry Pi 3, 4 or 5 with the 64-bit Raspberry Pi OS take ARM64; the 32-bit system has no WabiLink app.

    Most PCs are x86_64; ARM boards and laptops take ARM64. uname -m says which.

  3. Install it for yourself, with a menu entry

    mkdir -p ~/.local/opt ~/.local/bin ~/.local/share/applications
    tar -xzf ~/Downloads/wabilink-client-*-linux-*.tar.gz -C ~/.local/opt
    ln -sf ~/.local/opt/wabilink-client/wabilink-client ~/.local/bin/wabilink-client
    cat > ~/.local/share/applications/wabilink.desktop <<EOF
    [Desktop Entry]
    Type=Application
    Name=WabiLink
    Comment=Files, terminals, tunnels and desktop of your server
    Exec=$HOME/.local/opt/wabilink-client/wabilink-client
    Terminal=false
    Categories=Network;FileTransfer;RemoteAccess;
    EOF

    WabiLink is now in your applications menu, and wabilink-client starts it from a terminal.

  4. Connect

    Click New profile: the server's address (port 8009), your account and password. Compare the fingerprint shown the first time with the server's wabilink-server identity.

Updating

Close WabiLink and unpack the new version over the old one:

tar -xzf ~/Downloads/wabilink-client-*-linux-*.tar.gz -C ~/.local/opt

Removing

rm -rf ~/.local/opt/wabilink-client ~/.local/bin/wabilink-client ~/.local/share/applications/wabilink.desktop

WabiLink Admin for Linux

Version 1.1.6

Manages a WabiLink server's users, shares and settings.

  1. Install what it uses from the system

    sudo dnf install fontconfig libICE libSM
    sudo apt install libfontconfig1 libice6 libsm6
    sudo pacman -S --needed fontconfig libice libsm
    sudo zypper install fontconfig libICE6 libSM6

    Fontconfig, libICE and libSM: any desktop has them.

  2. Download it

    Take ARM64, for the 64-bit Raspberry Pi OS.

  3. Install it for yourself, with a menu entry

    mkdir -p ~/.local/opt ~/.local/bin ~/.local/share/applications
    tar -xzf ~/Downloads/wabilink-admin-*-linux-*.tar.gz -C ~/.local/opt
    ln -sf ~/.local/opt/wabilink-admin/wabilink-admin ~/.local/bin/wabilink-admin
    cat > ~/.local/share/applications/wabilink-admin.desktop <<EOF
    [Desktop Entry]
    Type=Application
    Name=WabiLink Admin
    Exec=$HOME/.local/opt/wabilink-admin/wabilink-admin
    Terminal=false
    Categories=Network;System;
    EOF
  4. Log in to a server

    The server's address and admin port, 8010, with an administrator account (user add NAME --admin on the server).

WabiLink Server for Linux

Version 1.1.6

Installed from WabiLink's signed package repository, so it updates with the rest of the system. It runs as a systemd service under its own wabilink account.

There are no packages for this distribution yet: the server comes as a self-contained archive, installed as a systemd service under its own wabilink account.

  1. Install it

    curl -fsSL https://alexander-miglis.github.io/wabilink-packages/install.sh | sudo sh

    This adds the repository and its signing key, then installs wabilink-server with what its optional parts use: ssh for login terminals, the libraries of the remote desktop, and SVT-AV1 for AV1 video where the system has it. It does not start the server yet.

    It picks the 64-bit or 32-bit package by itself (Raspberry Pi 2 and later).

    Or add the repository by hand
    sudo curl -fsSLo /etc/yum.repos.d/wabilink.repo https://alexander-miglis.github.io/wabilink-packages/wabilink.repo
    sudo dnf install wabilink-server
    sudo install -d -m 0755 /etc/apt/keyrings
    sudo curl -fsSLo /etc/apt/keyrings/wabilink.asc https://alexander-miglis.github.io/wabilink-packages/wabilink.asc
    echo "deb [signed-by=/etc/apt/keyrings/wabilink.asc] https://alexander-miglis.github.io/wabilink-packages/deb stable main" | sudo tee /etc/apt/sources.list.d/wabilink.list
    sudo apt update && sudo apt install wabilink-server
  2. Download it

    uname -m says which: x86_64, aarch64 (ARM64) or armv7l (32-bit ARM).

    It needs glibc, OpenSSL 3 and systemd from the system: sudo pacman -S --needed openssl: sudo zypper install libopenssl3.

  3. Install it as a service

    sudo mkdir -p /opt/wabilink
    sudo tar -xzf ~/Downloads/wabilink-server-*-linux-*.tar.gz -C /opt/wabilink --strip-components=1
    sudo /opt/wabilink/wabilink-server install-systemd
    sudo ln -sf /opt/wabilink/wabilink-server /usr/local/bin/wabilink-server

    This creates the wabilink account and /var/lib/wabilink, and starts the service now and at every boot.

  4. Add yourself and a share

    sudo wabilink-server user add "$USER" --admin        # asks for a password, twice
    sudo mkdir -p /srv/files && sudo chown wabilink: /srv/files
    sudo wabilink-server share add "$USER" Files /srv/files
    sudo wabilink-server identity                     # the fingerprint clients will be shown

    The service runs as wabilink: it needs to read each share's folder, and write where people upload. For a folder of your own, sudo setfacl -R -m u:wabilink:rwX,d:u:wabilink:rwX /path gives it access.

  5. Start it

    sudo systemctl enable --now wabilink

    systemctl status wabilink shows it running; journalctl -u wabilink -f follows its log.

  6. Open the firewall

    Clients connect on 8009. The admin tool uses 8010: open that only to where you administer from.

    sudo firewall-cmd --permanent --add-port=8009/tcp
    sudo firewall-cmd --reload

    If ufw is on (sudo ufw status):

    sudo ufw allow 8009/tcp

    There is no firewall on by default. If you set one up with nftables or iptables, allow TCP 8009.

    If a firewall is on (firewalld, ufw, nftables), allow TCP 8009.

  7. This machine's desktop optional

    sudo wabilink-server config set desktop-enabled yes
    sudo wabilink-server user desktop "$USER" yes

    Viewers see the session of whoever is logged in at the machine - locked or not, as on its monitor; unlock it from the viewer.

    Lock, don't log out. GNOME doesn't share its login screen, so once you log out there is nothing to show until someone logs in at the machine. Lock instead (Super+L): the viewer shows the lock screen, and you unlock it from there.
    • Works with GNOME on Wayland and any X11 session.
    • Always on, with no monitor: sudo wabilink-server desktop-setup "$USER" starts a locked headless GNOME session for you at every boot.
    • Always on: turn on GDM's automatic login for the account (Settings → Users → Automatic Login), and set sudo wabilink-server config set desktop-user "$USER".
    • Raspberry Pi OS's own desktop (labwc) is not supported yet: switch it to X11 with sudo raspi-config → Advanced Options → Wayland → X11. The screen is sent as lossless tiles.
    • With a graphics card (NVIDIA, AMD, Intel) the screen is coded on it, through FFmpeg.

Updating

With the system's updates:

sudo dnf upgrade --refresh

A running server restarts by itself.

Updating

With the system's updates:

sudo apt update && sudo apt upgrade

A running server restarts by itself.

Updating

sudo tar -xzf ~/Downloads/wabilink-server-*-linux-*.tar.gz -C /opt/wabilink --strip-components=1
sudo systemctl restart wabilink

Removing

sudo dnf remove wabilink-server

The data in /var/lib/wabilink is kept.

Removing

sudo apt remove wabilink-server

The data in /var/lib/wabilink is kept.

Removing

sudo wabilink-server uninstall-systemd
sudo rm -rf /opt/wabilink /usr/local/bin/wabilink-server

The data in /var/lib/wabilink is kept.

Checksums and signatures

Every download is listed with its SHA-256 in SHA256SUMS. The Linux packages and repositories are signed with wabilink.asc.

To check a download, in the folder it is in:

curl -fsSLO https://alexander-miglis.github.io/wabilink-packages/files/SHA256SUMS
sha256sum --ignore-missing -c SHA256SUMS          # macOS: shasum -a 256 --ignore-missing -c SHA256SUMS

The signing key's fingerprint: 2C9F6909A29FC1FE2F957F7FACBA86055D3EBAD2