I’m proud to share a major development status update of XPipe, a new connection hub that allows you to access your entire server infrastructure from your local desktop. XPipe 14 is the biggest rework so far and provides an improved user experience, better team features, performance and memory improvements, and fixes to many existing bugs and limitations.

If you haven’t seen it before, XPipe works on top of your installed command-line programs and does not require any setup on your remote systems. It integrates with your tools such as your favourite text/code editors, terminals, shells, command-line tools and more. Here is what it looks like:

Hub

Browser

Reusable identities + Team vaults

You can now create reusable identities for connections instead of having to enter authentication information for each connection separately. This will also make it easier to handle any authentication changes later on, as only one config has to be changed.

Furthermore, there is a new encryption mechanism for git vaults, allowing multiple users to have their own private identities in a shared git vault by encrypting them with the personal key of your user.

Incus support

  • There is now full support for incus
  • The newly added features for incus have also been ported to the LXD integration

Webtop

For users who also want to have access to XPipe when not on their desktop, there exists the XPipe Webtop docker image, which is a web-based desktop environment that can be run in a container and accessed from a browser.

This docker image has seen numerous improvements. It is considered stable now. There is now support for ARM systems to host the container as well. If you use Kasm Workspaces, you can now integrate the webtop into your workspace environment via the XPipe Kasm Registry.

Terminals

  • Launched terminals are now automatically focused after launch
  • Add support for the new Ghostty terminal on Linux
  • There is now support for Wave terminal on all platforms
  • The Windows Terminal integration will now create and use its own profile to prevent certain settings from breaking the terminal integration

Performance updates

  • Many improvements have been made for the RAM usage and memory efficiency, making it much less demanding on available main memory
  • Various performance improvements have also been implemented for local shells, making almost any task in XPipe faster

Services

  • There is now the option to specify a URL path for services that will be appended when opened in the browser
  • You can now specify the service type instead of always having to choose between http and https when opening it
  • There is now a new service type to run commands on a tunneled connection after it is established
  • Services now show better when they are active or inactive

File transfers

  • You can now abort an active file transfer. You can find the button for that on the bottom right of the browser status bar
  • File transfers where the target write fails due to permissions issues or missing disk space are now better cancelled

Miscellaneous

  • There are now translations for Swedish, Polish, Indonesian
  • There is now the option to censor all displayed contents, allowing for a more simple screensharing workflow for XPipe
  • The Yubikey PIV and PKCS#11 SSH auth option have been made more resilient for any PATH issues
  • XPipe will now commit a dummy private key to your git sync repository to make your git provider potentially detect any leaks of your repository contents
  • Fix password manager requests not being cached and requiring an unlock every time
  • Fix Yubikey PIV and other PKCS#11 SSH libraries not asking for pin on macOS
  • Fix some container shells not working do to some issues with /tmp
  • Fix fish shells launching as sh in the file browser terminal
  • Fix zsh terminal not launching in the current working directory in file browser
  • Fix permission denied errors for script files in some containers
  • Fix some file names that required escapes not being displayed in file browser
  • Fix special Windows files like OneDrive links not being shown in file browser

A note on the open-source model

Since it has come up a few times, in addition to the note in the git repository, I would like to clarify that XPipe is not fully FOSS software. The core that you can find on GitHub is Apache 2.0 licensed, but the distribution you download ships with closed-source extensions. There’s also a licensing system in place as I am trying to make a living out of this. I understand that this is a deal-breaker for some, so I wanted to give a heads-up.

Outlook

If this project sounds interesting to you, you can check it out on GitHub or visit the Website for more information.

Enjoy!

  • just_another_person@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    20 hours ago

    A stock SSH session on any modern Linux distro is: agent, config, keyring, and config.

    All of these combine to make it as simple as ‘ssh user@hostname’ with no other typing necessary, depending. Further customizations are all done on ssh session configs, which is what you’ve done here, but put it on a GUI. I just don’t see the benefit except to people brand new to it is all. It’s a shortcut of shortcuts, but hey, if people use it, more power to em.

    • crschnick@sh.itjust.worksOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      18 hours ago

      For normal SSH this is all accurate, maybe I should have focused on wider topics.

      Staying in the realm of SSH, where the integrations of XPipe produce added value is for example when it comes to virtual machines. If you quickly spin up a VM in a hypervisor such as Proxmox or KVM, it’s not that straightforward anymore. If you want to reach a VM running on a remote hypervisor host, you probably have to first use the hypervisor host as a jump server to be able to access the VM and the first place. You have to determine the external IP of the VM (which might be frequently changing), check if any kind of guest agents are available, check whether an SSH server is running (and start it in the VM shell if not). And only then you can type ssh user@host to that VM. XPipe will do that all automatically. So from your perspective, you only click on it and it will perform all these tedious tasks in the background and boot you into a terminal session.

      • just_another_person@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        18 hours ago

        Hey, man. I’m not dogging your project whatsoever here, me,myself, am just trying to understand the use-case, and you’ve explained in great detail. Much appreciated 👍

        • crschnick@sh.itjust.worksOP
          link
          fedilink
          English
          arrow-up
          1
          ·
          17 hours ago

          Yeah I am still trying to figure out how to explain it the best way to convince people to give it a try

          • just_another_person@lemmy.world
            link
            fedilink
            English
            arrow-up
            1
            ·
            16 hours ago

            Hey, I totally get it. You built something you like, and you want people to give it a try. Let me give you some hopefully helpful but absolutely unsolicited advice, and feel free to ignore me.

            The first thing you need in a project is a target audience: “I am building this to make X thing better.”

            Then you need a target audience: “Why would people prefer to use this over other existing solutions?”

            THEN you need a hook: “This thing is better because X feature.”

            Now please take this next bit as only constructive criticism, because I’m just trying to help what seems to be burgeoning developer out who has a passion for their product…BUT, I think the confusion you’re seeing in this thread is because you’re building a thing that doesn’t answer any of the above questions for a lot of people. So just digest that, and I’m sorry if it sucks, but the next part is more helpful…

            I looked through the code a bit, and just from the exception handling alone, it seems it will break if every little thing about the underlying environment isn’t exactly just-so. A version of something gets upgraded, and this might break, for example. Have you considered maybe doing a rewrite to natively load libraries instead of shelling out all the commands? I think it would greatly help the resilience of the app itself from breaking due to environmental changes, AND an added bonus benefit…maybe eventually be able to allow contributions from followers to help adjust code or write plugins.

            The reason why most FOSS projects do this is simple: they want it to run in a multitude of places and environments, and the noise generated from everything not being exact about and environment is huge. So instead of relying on shell commands and output, just look up an open library that already does SSH, and write for that. Your code is organized pretty well, so it shouldn’t be a huge undertaking, just some learning and doc hounding.

            • crschnick@sh.itjust.worksOP
              link
              fedilink
              English
              arrow-up
              1
              ·
              16 hours ago

              Thanks for taking your time to write this.

              I think the main point I’m trying to figure out here is whether this is a communications issue, i.e. how I describe it is not optimal or whether this is a fundamental project issue. Because I think I have a clear vision and target audience, I am part of that audience myself. The thing is, there isn’t one standout feature. The value comes from the combination and integrations of multiple features that work together and allow for a smooth use experience. I can say it has support for SSH, docker, kubernetes, hypervisors, and more but all of that on an individual layer isn’t that unique, it’s the combination that you can use all of them together. But this is difficult to put into words, trying it out for yourself for a few minute usually yields better results.

              About the shell commands, that is one of the standout features about it, so it’s on purpose. I know this approach is more difficult and error prone than doing some kind of native library stuff, but it also allows me to run the same commands in remote shells on remote systems.

              • just_another_person@lemmy.world
                link
                fedilink
                English
                arrow-up
                1
                ·
                16 hours ago

                Well, I can say for myself-and others who may see this project who are adept with these types of connections-the question still comes down to “Why would I use this over already existing tooling?”

                For me, this is just SSH (which I use daily non-stop) with extra steps. For something like containers…ehhhhh it’s a bit of stretch. I’m so used to just running the commands to see what I need, plus I make sure everything has a named DNS, and I can’t think of a simpler way to make it easier than what I already do. I feel like remote desktop clients all have this solved in their GUI, so I’ll ignore that. Even hitting a button to tell it what I want to connect to is more work than just doing it, honestly, so a GUI does not make sense for me, so I know I’m not a target audience for sure.

                The point is that if me can’t find a good use for it, and you want me to try it out, what is the feature that would sell me on it. I think the answer to that unlocks a lot of other things you can attack from there.

                • crschnick@sh.itjust.worksOP
                  link
                  fedilink
                  English
                  arrow-up
                  1
                  ·
                  15 hours ago

                  Alright, I see your points.

                  Now that you have spent a lot of time discussing it, even looking at the code, one thing that would be valuable for me would be how accurate your expectations are based on what you read here compared to the actual app. If it is pretty much as expected, then I guess at least my summaries are accurate. If it’s not, then I can still do a better job at that part. Fundamentally changing the project itself is a little bit too late, but at least the communication can be changed on why people could use it. And I’m not trying to gain a new user here as it’s probably not for you, but still would be interesting to me. You can give it five minutes and use the .tar.gz or the .appimage if you don’t want to install anything.

                  • just_another_person@lemmy.world
                    link
                    fedilink
                    English
                    arrow-up
                    1
                    ·
                    14 hours ago

                    I think you might be underselling yourself a bit here. You don’t need to rewrite the entire app at all, just a piece at time because of how you it organized. Like this:

                    Release 2.0: moved SSH to X lib Release 2.1: RPC moved to X lib

                    And so on.

                    If you don’t wish to do that, then I would work on messaging. From the code and how you’re expecting responses, it just won’t work for very long with Linux distros, though I appreciate that you made a many portable formats. Instead, have you tried looking at building a library that does discovery of connectable nodes on the local network? That would hit big with the Windows crowd, and possibly some other OS users if suddenly this does “automatic discovery” instead of having to manually create connections.