Hacker News new | past | comments | ask | show | jobs | submit login
HyperShell: Spawn shells anywhere. Fully peer-to-peer (github.com/holepunchto)
123 points by goodburb on April 15, 2023 | hide | past | favorite | 38 comments



It took me a minute to realize this, but HyperShell seems to be (or can be thought of as) a demo app for the (previously unknown to me) "hyper ecosystem"---Hyperswarm, Hypercore, Hyperdrive, etc: https://docs.holepunch.to/ . Perhaps an even tighter example than HyperShell is hyperbeam [1]: look at the usage section and API, and then note that it's all implemented in like 200 lines of code.

I'm no expert in this field, but this stuff looks like legos for cutting-edge P2P solutions. I think this is the coolest thing I've seen since Tailscale.

[1]: https://github.com/mafintosh/hyperbeam


The main app they seem to have built with it (so far) is a p2p chat app: https://keet.io/

I’m curious to see what else they’ll build!



You forgot HyperTerminal (which is still available as a commercial product, by the way!) https://www.hilgraeve.com/hyperterminal/


Wow. Expected a site from 90s, got a magazine from 90s. Nice.


Oh yeah! How could I forget! Added.


I wonder what thought process causes authors to go for name collision instead of something like p2pshell which is more descriptive and has zero google results... Neat tool, however.


Well for this project, it uses technology from the hypercore protocol (formerly known as DAT).

https://github.com/hypercore-protocol


I guess the lesson here is you don't have to use any of the technologies in the project as part of the project name if you don't want to. Especially if the namespace is already somewhat saturated. For my next project, TCPHTTPHTMLCSSJSLinuxAlpineContainerGCPGKEBlog...


But the company who made this is also making the technologies in the project...

Holepunchto is the company behind hyperprotocol, hypershell, hyperdrive, etc.

So what's the lesson now?


That maybe they should find a new intern to do naming before they go and make the fourth HyperApp out there? One who could at least google first...


Read the rest of the thread.

Maybe HyperApp should trademark hyper, oh wait they weren't before hypertext/protocol and HN doesn't like copyright :)

I guess we would look at who was "first", but do you know who was?

Or is it a weight of first and most popular? How is "popular" determined?

Oh dang, this is getting tricky isn't it?


Reread the thread starter. All those preexisting hyper things have nothing to do with this company, that's not the point.

And of course they're free to name their stuff after anything else they like, it's not a tricky question, it's just... weird? stupid? seo-manipulative? I don't know honestly, all I know is they had a more descriptive name at their disposal that had zero hits and they they passed on it.


What is your point?

How many uses of a prefix can the industry have before it meets your requirement of having to move on?

1, 2, 3, 5?

IMO people can name things whatever they want and can legally and people will remember whatever they need to.


> what's your point

I already said, they had a perfectly descriptive name but they chose the one easily confusable with 5 other things, I am curious to know their thought process. And what's yours?


Hyper is their protocol and I assumed they derived it from HTTP.

> Hypercore also includes a new URL scheme, hyper://, for referencing any Hypercore-based data structure. As Hypercores declare their data structure, this URL scheme can be used for a wide variety of use-cases. This URL scheme can improve interoperability among applications by providing flexible and modular access to hypercore directly.

All of their technology is based off of their hyper protocol.

But my point is that I don't really see the need to nazi people's nomenclature.

You could just, ya'know, discuss the tech itself...


> All of their technology is based off of their hyper protocol.

And that for some reason determines naming every product that uses that protocol.

> nazi

There's no need to be a nazi, but it should be an acceptable thing to ask, when identifier namespace is global, about why someone would choose to occupy an overlapping identifier even if a better more descriptive identifier is available, shouldn't it?


wouldn't choosing the name with zero other hits be the seo-manipulative option?


If you take a preexisting name you get some search traffic for free, though I doubt that's what's happening here.


You mean TCPHTTPHTMLCSSJSGNU/LinuxAlpineContainerGCPGKEBlog, right?


You forgot to put Hyper in there.


there was a hypercloud.network at some point too.


It's kinda hard to tell what this actually does and why you'd want to use it. Is it an SSH alternative that punches through NAT?


Also having a hard time groking it, but from the README looks like maybe the equivalent to setting up a TOR node to front an ssh daemon and routing a shell through the onion network to get to a host behind a NAT.

Edit:

Ah yes, that appears to be exactly what they're doing. Looks like they're using a DHT for peer discovery and using nodes in the network as rendezvous points to get through NAT: https://github.com/holepunchto/hypershell/blob/main/lib/clie...

The code is incredibly straightforward for what it is doing. Expected the ./lib folder to be a lot more intimidating.


It seems interesting, but I’m having a hard time imagining what an appealing use case would be.


I'm thinking the same thing. Is there some kind of circumstance where I'd want to use this instead of SSH? I'm hardly inclined to fix what isn't broken at the best of times, but the p2p element just seems weirdly superfluous.


It would seem useful to control a large botnet of compromised hosts.


Opening shells on cellular devices perhaps, almost always they'll be on NAT, on an unfixed IP, which you can't port forward through.


Accessing a “home computer” behind a NAT you don’t control or has a dynamic IP, eg. computers/devices that only have mobile connection and many (most?) broadband home connections.


I sometimes need to connect to a CI runner to debug some CI build script. I made a (quick hack of a) tool [0] for doing that by creating an Onion service on the runner listening to SSHD, and printing a one-liner I can paste on my dev machine to connect to it via Tor. This sounds like basically the same idea, but using a DHT and hole punching instead of onion routing.

[0] https://github.com/milesrichardson/shonion


Nodes that are behind unconfigurable CGNATs usually have IPv6. So DDNS + listening on v6 + PMP could achieve same.


*and if you don’t want to sign up for DDNS :)


Seems so: I like the idea. Would be, however, to integrate with mosh [1] and feel much better if there was a well audited SSH implementation beneath the hole punching and rendezvous layer.

[1] https://github.com/mobile-shell/mosh


Looks interesting, but always a hard pass for me when I see CLI tools written in interpreted languages.


How do you work in terminal having that hard pass feeling? There are numerous CLI utils written in scripting (usually interpreted) languages. They do their job so well that some of them are here for decades already. Actually quite a lot of people don't even realize that many of CLI things they use are shell, or Perl scripts.


I suppose it depends on what work someone is doing. I'm an SRE and haven't had too many issues keeping my CLI dependencies to a minimum. It could just be my minimalist nature creeping in, though.


Just curious, but why?


Looks like it's intended to replace SSH but no reason why is given. Is there more to read?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: