Self-hosted service
xpipe-io/xpipe avatar
xpipe-io/xpipe

XPipe: a desktop connection hub for SSH, containers and VMs

Access your entire server infrastructure from your local desktop

14,554 stars566 forksJavaApache-2.0

At a glance

What is it?
XPipe is a JavaFX desktop application that wraps the SSH, Docker, LXD, Kubernetes and hypervisor clients you already have installed. It is Apache-2.0, and the repository was last pushed on 2026-09-20.
Who is it for?
Adopt XPipe if you already run SSH, Docker, LXD or Kubernetes clients locally and want one hub for connections, files and terminals without installing an agent on each host. Skip it if you need a browser-based or Android client, since the README lists neither, or if your policy forbids a desktop app holding credentials.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

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

Editorial analysis

The problem XPipe solves for people with more than one server

Anyone who administers a handful of machines ends up with the same scattered setup: an SSH config file, a Docker context, a KVM or Proxmox console, a Kubernetes context, and a password manager that none of them talk to. The README describes XPipe as a connection hub that "allows you to access your entire server infrastructure from your local desktop". It sits on top of the command-line programs already installed, and the README states it "does not require any setup on your remote systems". That last point is the design constraint that shapes everything else. XPipe is not an agent you deploy; it is a local client that shells out to ssh, docker, virsh, kubectl and similar binaries.

The target user is a developer or sysadmin who works from a desktop machine and wants one place to open a shell, browse a remote filesystem, or start a container. The README also lists Windows Subsystem for Linux, Cygwin and MSYS2 environments, which suggests the author cares about Windows users who keep a Unix-like layer around. If you only ever touch one server through one terminal, the hub adds a layer you do not need.

How the connection hub and file browser actually work

The mechanism visible in the README is delegation. XPipe reads connection information from the tools you already configured, then presents it in a hierarchical category tree. The README says you can "organize all your connections in hierarchical categories to maintain an overview over hundreds of connections", and that it supports "SSH connections, config files, and tunnels". Config files matter here: XPipe is not asking you to re-enter your hosts, it is parsing what ssh already knows.

The file browser is the second half. It lets you "interact with the file system of any remote system" and "utilize your entire arsenal of locally installed programs to open and edit remote files". In practice that means a remote file is fetched and handed to your local editor rather than edited through a terminal editor. The README also notes that sessions can be "dynamically elevate[d] with sudo when required without having to restart the session", and that transfers can run across multiple systems using "built-in tabbed multitasking".

Two architectural choices are worth naming. First, the project is written in Java and uses JavaFX, so the UI is a native desktop application rather than a web app; the repository layout (app/, ext/, dist/, gradle/ with build.gradle and settings.gradle) is a Gradle multi-module build. Second, the README describes a "modular extension system" so that "anyone can add easily support for more tools or to implement custom functionality". That is how the long list of supported backends is meant to grow without the core absorbing every integration.

Installing XPipe and opening your first SSH connection

The repository ships two install scripts, get-xpipe.sh and get-xpipe.ps1, for Unix-like systems and Windows respectively. The README does not spell out the flags for either script, so the safest route is the download page at xpipe.io or the release artifacts under dist/. The script names are given in the repository root, which is what makes them the documented entry point.

On a Unix-like system, the script is fetched and run directly:

bash
./get-xpipe.sh

On Windows, the equivalent entry point is the PowerShell script:

bash
./get-xpipe.ps1

Neither the README nor the repository files document options for these scripts, so treat the invocations above as the pattern rather than a verified command line. After the application starts, the first real use is to let it pick up hosts you already have. Because XPipe supports "SSH connections, config files, and tunnels", it will read your existing ~/.ssh/config entries. You do not add a host by typing an IP; you point XPipe at the config it already exists in, and it appears in the hub tree as a category entry. From there, the README's workflow is: open a terminal session into any directory in your preferred terminal emulator, or open the file browser and edit a remote file with a local program. If your SSH config is empty, add a Host block first, since XPipe has nothing to read otherwise.

Where XPipe is the wrong tool

The clearest limitation is the local-desktop assumption. XPipe is a JavaFX application that runs on your machine and drives local CLI binaries. The README does not describe a server component, a browser client, or an Android app, so anyone who needs to reach infrastructure from a phone or a locked-down browser session is outside the intended use. The related search traffic for "xpipe android" and "XPipe webtop" reflects that gap; the README does not list either as supported.

A second constraint is that XPipe inherits the failure modes of the tools underneath it. If ssh cannot reach a host, XPipe cannot either; it is not a tunnel or a relay of its own. The README mentions Tailscale, Netbird and Teleport as connection types, which implies those clients must be present and configured locally for those paths to work. Similarly, the Kubernetes support covers "clusters, pods, and containers", which is a narrower surface than a full kubectl replacement.

A third point is credential handling. XPipe integrates with password managers, but the README does not document where secrets are stored or how they are protected on disk. If your security model requires an audited secret store with a documented threat model, that documentation is not in the README, and you should read SECURITY.md in the repository before trusting it with production credentials.

XPipe compared with plain SSH config and terminal multiplexers

The obvious alternative is doing nothing: keep ~/.ssh/config, use tmux or your terminal's tabs, and run docker or kubectl directly. That approach has no install step, no GUI process, and no additional software holding your connection metadata. The difference in approach is that plain SSH config is a file format, not an interface. It gives you host aliases and jump hosts, but it does not give you a file browser, a container view, or a unified list of VMs and Kubernetes pods.

XPipe's bet is that the interface is worth the extra process. It reads the same config file, so the two are not mutually exclusive; you can keep using ssh on the command line and open XPipe when you want the tree view or the file browser. Where XPipe clearly does more is the cross-domain view: the README lists Docker, Podman, LXD, incus, Proxmox, Hyper-V, KVM, VMware, AWS, Hetzner, RDP, VNC and Kubernetes in one place. A terminal multiplexer will never show you a Proxmox VM and a Kubernetes pod side by side.

The cost is that XPipe is a Java application with a Gradle build and an extension system, which is a larger dependency than a config file. If your team standardizes on the terminal and nothing else, XPipe's value proposition does not apply.

Maintenance, releases and the Apache-2.0 licence

The repository is not archived and the last push was on 2026-09-20. Recent releases are 24.4 on 2026-09-18, 24.3 on 2026-09-14, and 24.2.1 on 2026-09-12, which indicates a steady release cadence over that window. The versioning scheme is calendar-like: the major number tracks the year, so 24.4 is a 2024-series release. The repository root contains a version file alongside build.gradle, and the presence of gradlew and gradlew.bat means you can build from source without installing Gradle globally.

Upgrade cost depends on how you installed it. If you used the install script, upgrades follow whatever that script does; the README does not document a rollback path. If you build from source, you are tracking master and carrying the Gradle toolchain. Either way, the application is a desktop client, so upgrades are per-user rather than per-server, which keeps the blast radius small but also means every user upgrades on their own schedule.

The licence is Apache-2.0, as stated in the repository metadata and LICENSE.md. That is a permissive licence, which generally means you can use, modify and redistribute the code, including in commercial settings, provided you keep the licence and attribution notices. The README does not discuss trademark or branding terms, and this is not legal advice; if you plan to redistribute a modified build, read LICENSE.md and SECURITY.md yourself.

Editorial conclusion

Adopt XPipe if you already run SSH, Docker, LXD or Kubernetes clients locally and want one hub for connections, files and terminals without installing an agent on each host. Skip it if you need a browser-based or Android client, since the README lists neither, or if your policy forbids a desktop app holding credentials. Before rolling it out, verify how your password manager integrates and check whether the extension API covers the tools you use.

Frequently asked questions

What is XPipe software?

XPipe is a connection hub that lets you access server infrastructure from your local desktop, working on top of installed command-line programs like SSH and docker. It is written in Java, uses JavaFX, and is licensed under Apache-2.0.

Is XPipe safe?

The README does not document where credentials are stored or how they are protected, so that question cannot be answered from the project description alone. The repository includes a SECURITY.md file, which is the place to look before trusting it with production access.

How does XPipe work?

It reads connection information from tools you already configured, such as SSH config files, and presents it in a hierarchical hub. From there it can open terminals, browse remote files with local editors, and manage containers and virtual machines through the underlying CLI programs.

Official sources

  1. License: Apache-2.0
  2. Project website
  3. README
  4. Releases
  5. xpipe-io/xpipe on GitHub
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/xpipe-io-xpipe.svg)](https://hysenlabs.com/projects/xpipe-io-xpipe)