Readit News logoReadit News
Posted by u/crschnick 9 months ago
Show HN: XPipe, a shell connection hub for SSH, Docker, K8s, VMs, and morexpipe.io/...
Hey HN, I built XPipe as I always wanted to have an easy file system and terminal access to all of my remote systems, including containers, virtual machines, clusters, and more that you normally can't connect to with existing solutions out of the box.

XPipe is a new type of connection hub that allows you to access your entire server infrastructure from your local desktop. It can make your life easier when working with any kind of servers by eliminating all the commonly tedious tasks that come up when interacting with remote systems, either from the terminal or from a graphical interface. XPipe comes with integrations for SSH, docker and other containers, various hypervisors like Proxmox, Kubernetes clusters, tools like Teleport and Tailscale, and more without requiring any setup on your remote systems. You can link your favourite text/code editors, terminals, password managers, shells, command-line tools, and more with it, allowing you to keep using your own favourite tools when working with XPipe.

The entire implementation of how it communicates with remote systems is completely different from most other solutions out there. What happens in the background can essentially be explained this way: It launches a local shell process like cmd or bash and executes a command that opens a remote shell connection such as ssh user@host in that shell process. All communication is then done through the stdin/stdout/stderr of that shell process. From there, it detects what kind of server and environment, such as shell type, os, user, etc. you have logged into and adjusts how it talks to the remote system. By then using, for example, file system related commands such as ls, rm, touch, etc. and its equivalents, it can realize a functional file manager that can connect to essentially every system.

It is essentially the same idea as emacs TRAMP mode if you have ever used that. With the difference being that it works on all kinds of systems and is also not constrained to a certain editor/tool environment. VSCode also uses a similar approach for some of the remote development tools with SSH, but that one is more limited in scope and is a little bit sluggish to use. And it's also bound to the VSCode platform. The goal of XPipe's implementation is to not be limited by a certain environment or specific set of tools.

The development took a while as this new approach requires a completely new implementation in many areas, but I am confident that it's ready now. I appreciate any kind of feedback from you to guide me in the right development direction from here.

Enjoy!

hobofan · 9 months ago
Tried it out and it's amazing!

I'm a freelancer working with different clients with a mix of the technologies you listed (Docker/Kubernetes) and I'm using Tailscale for mostly personal use-cases, so this hits all the right spots.

Up until now I proxied most of my stuff on a macOS client via "SSH Tunnel Manager", which has quite a clunky UI, and whenever I have to reconfigure something there the current feedback of the current connection state isn't always right. I just moved all those settings to XPipe, and it works like a charm.

Previously I also used the same solution for accessing some internal websites via a combination of the SSH tunnels + /etc/hosts entries + header rewrites, which depending on the complexity of the websites sometimes works great and sometimes doesn't at all. With XPipe I was easily able to set up a SOCKS proxy, which I previously gave up on trying to figure out. Paired that with FoxyProxy on Firefox and now all the websites work like a charm!

crschnick · 9 months ago
Great that it works for you. I also struggled a lot with setting up various different types of tunnels initially, especially more complex ones. That was one of the motivations why I started developing it.
rubin55 · 9 months ago
Hey, I just wanted to congratulate you with a very impressive release, the software looks amazing, and I think I will give it a try pretty soon. A question: I see only subscription pricing; is a lifetime licence possible, or a licence like the way jetbrains does it (you pay for version, and maintain the right to keep using the version that was available when the license/subscrition expires, you can re-activate any time).

I'm particularly interested in this "field". I've build something similar many moons ago [1], in the same spirit, but much more primitive. I later started a company around an evolved idea, where the structure you sort of see in your screenshots is effectively a DAG with arbitrary depth (we didn't manage to release it unfortunately, complexity overtook us).

In any case, much congratulations + good luck with the launch!

[1]: https://github.com/raaftech/session

crschnick · 9 months ago
Thanks! Yes, you can find lifetime licenses on the pricing page further down. A perpetual fallback license model like jetbrains has does not exist yet. But I could look into this in the future.

It's cool to see that there are also other people in that space. And about the complexity, I definitely know what you mean. It took a long while before this approach even worked and also took a while until it was actually stable. One of the main points of consideration whenever I think of adding something is the added complexity, because it's very important for me to keep that as low as possible. Otherwise I will end up with an unmaintainable workload. There were definitely a few interesting features I discarded to keep the application as lean as possible.

sepositus · 9 months ago
Question for the developer: for the Kubernetes integration, I use aws-vault to generate short-lived credentials to authenticate with my clusters (meaning, by default, kubectl doesn't work outside of this context).

Would it be possible to get XPipe to work with this constraint? Couldn't find much in the docs.

crschnick · 9 months ago
Now I don't fully know the details of your setup, but in general XPipe just works on top of your kubectl installation. So it will only work if you could manually connect to your clusters via kubectl in a terminal. But you can always just try it out and see what happens the community version because I can't say that for sure.
sepositus · 9 months ago
Yeah, I'm assuming you're just calling kubectl directly underneath the hood. The way that aws-vault works is that you do something like: `aws-vault exec kubectl ...` or you can just do `aws-vault exec` and drop into a subshell. In both cases, a set of short-lived AWS credentials are exposed via the AWS-defined environment variables to the process (or shell context). The kubeconfig is then configured to handle authentication via AWS (rather than the default certificate method).

So, if you just straight-up call `kubectl` within XPipe without having AWS credentials already available, then it would fail. So, I'm guessing this wouldn't work.

gbraad · 9 months ago
> connections to those systems are only possible starting from the professional plan: Red Hat Enterprise Linux systems, etc

/me blinks. An OS is an OS... so, access to developer licenses for these are Professional use too?

> connections to those systems are only possible starting from the homelab plan: Oracle Linux systems

/me blinks even more ...

crschnick · 9 months ago
That is implemented under the assumption that these distros are most of the time used in enterprise contexts. I know that this is not always the case, there is the option to upgrade to a license at no cost to the next tier if you’re only using it for personal use. Just send me an email I can upgrade it for you.
fru654 · 9 months ago
> That is implemented under the assumption that these distros are most of the time used in enterprise contexts.

I've been using OEL since before Rocky was a thing. It was and still is a free alternative to RHEL.

Apart from that, all my planned use of XPipe fits entirely in the Community feature set (maybe apart from Yubikey/GPG agent).

But now I'd need to pay $5 a month just to open a shell? No thanks.

Also, a slight tangent, but charging homelab folks $5/mo is weird. The only profit I'm making with my homelab is negative. And I, as a developer, would much more likely to ask my employer to buy an enterprise license if I actually liked using it at home. Like Tailscale, JetBrains, etc.

rdslw · 9 months ago
Can you expand with more technical explanation how are those two points implemented:

- You can bring your shell environments / init scripts / aliases with you in a noninvasive way. I.e. you don't have to modify the remote system dotfiles, when you connect through xpipe it will set up any scripts you want to have available automatically

- You can link up your password manager with your SSH client and other connection methods that require passwords

Feel free to write here or refer to any url you recommend.

Thank you, and good luck with your product!

crschnick · 9 months ago
- When XPipe will open a terminal connection and you have specified custom shell environments / init scripts for a certain system, it will first automatically create a temporary init script on the target system in the background, which will be run as the login script only for that terminal launch from XPipe. That way it's noninvasive and doesn't change any existing configuration on the system

- XPipe acts as an askpass program for SSH, meaning that it can listen to any password requests made from the ssh client, forward that your password manager, and reply with the password that the password manager returned. If you password manager supports the SSH-agent, XPipe can also use it to supply keys for ssh as well.

InMice · 9 months ago
Where can I find what the "advanced ssh features" are for homelab version? Can't seem to find such details on the website right now..

Thank you for this, it looks amazing. With so many client machines, servers, raspberry pis, tunneling to home, RDP sessions etc etc these days it gets out of hand managing connections. I can't wait to try this. Thank you

crschnick · 9 months ago
On the pricing page, you can find a feature matrix. The advanced SSH features are basically things like smartcard support, custom Pkcs#11 libraries, etc.
wkat4242 · 9 months ago
Hmm looks interesting but all my servers require openpgp (yubikey with gpg agent support) so I'd have to use the homelab tier. And I'm very adverse to subscriptions.

And I don't think it's available for my os, otherwise I'd try it. But it's ok, I have my own setups for this stuff.

crschnick · 9 months ago
What os are you using?

And about adversity to subscriptions, note that you can also obtain lifetime licenses further down the pricing page.

wkat4242 · 9 months ago
I use BSD. But it's ok, I'm kinda happy with the setup I have. Obviously I'm not really an "out of the box" and "use it like it's meant to be used" kind of person, otherwise I definitely wouldn't have used BSD :)

And the marketshare on desktop is so tiny that there is really no value in supporting it, I understand that.

m0d0nne11 · 9 months ago
FYI: y'all are talking about an "aversion" and not an adversity.