Open-source project
deskflow/deskflow avatar
deskflow/deskflow

Deskflow: a software KVM for sharing one keyboard and mouse across computers

Share a single keyboard and mouse between multiple computers.

31,026 stars5,124 forksC++GPL-2.0

At a glance

What is it?
Deskflow is a GPL-2.0 keyboard and mouse sharing app written in C++. It targets Windows, macOS, Linux and BSD, encrypts traffic with TLS by default, and ships a continuous build alongside tagged releases.
Who is it for?
Deskflow fits engineers running two or three machines side by side who want one keyboard and mouse without a hardware KVM, and who can live with per-OS permission setup. It is the wrong pick if you need video switching, if your Linux host predates libei 1.3 and libportal 0.8 and you cannot use the flatpak, or if you need a signed, notarized macOS build from the release page.
Can I use it commercially?
Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • deskflow/deskflow31,026 ★ · +1,782
Star history
Repository2026-09-282026-11-13
deskflow/deskflow29.2k31k

1,782 Stars in the last 46 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

The problem Deskflow solves, and who actually needs it

Two laptops, a desktop, and one desk. You either buy a hardware KVM, keep two keyboards on the desk, or run software that forwards input over the network. Deskflow is the third option. The README describes it as "a free and open source keyboard and mouse sharing app" and compares it to a software KVM "but without the video." That parenthetical is the whole scope: the monitor signal stays where it is, only the input events travel.

The audience is narrow. Deskflow assumes all machines are on the same local network and that you are willing to grant input-capture permissions on each one. It is for people who already have monitors and keyboards attached to each machine and want to stop reaching for the second keyboard. It is not a remote desktop tool: there is no video stream, so a machine without its own display is not useful to you here.

How input flows between the server and the client

Deskflow uses a server/client model. One machine runs the server, captures local keyboard and mouse events, and decides which screen the pointer is on. When the pointer crosses the configured edge of the server's screen, the server forwards the input events over the network to the client, which replays them locally.

The README states that TLS encryption is enabled by default, so the event stream is not sent in the clear. Clipboard sharing is listed as supported, which means clipboard contents also cross that connection. The repository layout points to a C++ codebase built with CMake: CMakeLists.txt at the top level, sources under src/, translations/ for localisation, and a LICENSES/ directory plus REUSE.toml for licence metadata.

Installing Deskflow on Windows, macOS and Linux

The README gives three routes: download a package from the releases page, install deskflow from your package repository, or build from source using the Building wiki page. On Flathub the app is published as org.deskflow.deskflow.

On Windows, the README states that you need the Microsoft Visual C++ Redistributable installed first. The download links it gives are vc_redist.x64.exe and vc_redist.arm64.exe. Windows 10 v1809 or higher is required.

On macOS, the README recommends Homebrew through the project's homebrew-tap. It also warns that macOS reports unsigned apps as damaged because the project does not use an Apple certificate for notarization, and gives the fix:

bash
xattr -c /Applications/Deskflow.app

After that, accessibility access must be granted to both the Deskflow app and the deskflow process under Privacy & Security. On Sequoia you may also need to allow Deskflow under Local Network settings. If you are upgrading and the old entries are still on the allowed list, the README says you must remove them manually before the new version can be granted access. That is a real upgrade tax, not a one-time setup step.

On Linux, the README states that libei 1.3+ and libportal 0.8+ are required for the server/client, and Qt 6.7+ is required for the GUI. Systems that do not meet those versions should use flatpak instead of a native package.

bash
# Linux: install the flatpak when native requirements are not met
flatpak install flathub org.deskflow.deskflow

Where Deskflow stops being the right tool

The most obvious limitation is the one the README states outright: there is no video. If the second machine has no monitor, Deskflow gives you nothing.

The second is platform requirements. Linux is the sharp edge. libei 1.3+, libportal 0.8+ and Qt 6.7+ are not present on older distributions, and the fallback the README names is flatpak. If your environment forbids flatpak, you are on the Building wiki page and a toolchain you have to maintain yourself.

The third is macOS code signing. The README says the project does not use an Apple certificate for notarization. That means macOS users who download directly from releases may need to clear the quarantine attribute, and on upgrade you may need to manually remove the old accessibility entries before granting access. In a managed fleet, that is a deployment problem, not a preference.

Fourth, the release model is split. There is a tagged release line (v1.27.0, v1.26.0) and a separate continuous channel (currently Continuous v1.27.0.21), and the most recent entry in the release list is the continuous build. Anyone who needs to pin a version should use a tagged release rather than the continuous build.

Deskflow against Barrier and hardware KVMs

Barrier is the closest comparison, and the difference is lineage rather than features. Deskflow and Barrier both descend from the same Synergy-era codebase; Deskflow's last push was on 2026-11-01, and the README advertises Wayland support and TLS by default. The README also says Deskflow has network compatibility with Barrier and Input Leap, and describes Input Leap as an inactive Barrier derivative.

A hardware KVM is the other alternative, and it is a different trade. It switches the actual video signal along with the input, so it works with machines that have no network path between them and no OS-level permissions to grant. It also costs money, adds cabling, and usually degrades the display signal. Deskflow needs the machines to be reachable from each other and needs software on each one. If your requirement is "switch the monitor too," Deskflow is not in that category at all.

Maintenance, releases and the GPL-2.0 licence

The repository is not archived, and the last push was on 2026-11-01. The release list shows v1.27.0 from 2026-10-01 and v1.26.0 from 2026-02-16, with a continuous build (Continuous v1.27.0.21) dated 2026-10-27.

Deskflow is licensed GPL-2.0, with a LICENSES/ directory and REUSE.toml in the repository. For anyone embedding the code in another product, GPL-2.0 is a copyleft licence and that has distribution consequences, but this is a description of the licence identifier, not legal advice. If you are shipping Deskflow inside something, talk to someone qualified. For ordinary desktop use, the licence is not a practical constraint.

Editorial conclusion

Deskflow fits engineers running two or three machines side by side who want one keyboard and mouse without a hardware KVM, and who can live with per-OS permission setup. It is the wrong pick if you need video switching, if your Linux host predates libei 1.3 and libportal 0.8 and you cannot use the flatpak, or if you need a signed, notarized macOS build from the release page. Before adopting it, check the release channel you intend to track, confirm the macOS accessibility entries for both Deskflow and deskflow, and read the Building wiki page if you plan to compile from source.

Frequently asked questions

What is Deskflow and how does it work?

Deskflow is a free and open source keyboard and mouse sharing app. One machine runs as the server, captures input, and forwards events over the network to client machines, which replay them locally. The README describes it as a software KVM without the video.

Is Deskflow free to use?

Yes. The README calls it a free and open source app, and the repository is licensed GPL-2.0.

Is Deskflow safe to use?

The README states that TLS encryption is enabled by default, so input events are not sent in the clear.

How do I install Deskflow on Windows?

Download a package from the releases page, install deskflow from your package repository, or build from source using the Building wiki page. The README states that you must install the Microsoft Visual C++ Redistributable first, and that Windows 10 v1809 or higher is required.

How do I install Deskflow on macOS?

The README recommends Homebrew with the project's homebrew-tap. Because the project does not use an Apple certificate for notarization, macOS reports the app as damaged and you may need to run xattr -c /Applications/Deskflow.app. Accessibility access must then be granted to both the Deskflow app and the deskflow process.

What are the Linux requirements for Deskflow?

The README states that libei 1.3+ and libportal 0.8+ are required for the server/client, and Qt 6.7+ is required for the GUI. Systems that do not meet those versions should use flatpak instead of a native package, and the Flathub app id is org.deskflow.deskflow.

Official sources

  1. deskflow/deskflow on GitHub
  2. License: GPL-2.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/deskflow-deskflow.svg)](https://hysenlabs.com/projects/deskflow-deskflow)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/deskflow-deskflow.svg)](https://hysenlabs.com/projects/deskflow-deskflow)

Was this useful?