Show HN: Browse HN Together in Three.js (threejs-example.hyperbeam.com)
We’re Philip, Amby, and Declan, and we made “multiplayer virtual computers” that you can embed anywhere, including 3D spaces. We decided to build this because we noticed that embedding third-party apps and websites can be a nightmare due to incompatible platforms, security issues, and poor UX. Adding multiplayer functionality to these embeds makes this problem exponentially more difficult.
On the backend, we’re spinning up a VM and running a resource-optimized fork of Chromium which we then stream to participants via WebRTC. Since we’re hosting the servers running the applications, multiple users can connect and control the virtual computer seamlessly, and their client just needs to handle a video stream.
If you want to add multiplayer virtual computers to your own app, you can sign up on https://hyperbeam.com/?ch=hn&cm=hn1, grab a free API key, and throw the provided embed URL in an iframe in your app.
You can also play around more with the Three.js demo in our interactive sandbox: https://app.sideguide.dev/hyperbeam/threejs/
If you have any questions or feedback, feel free to comment or shoot me an email at declan@hyperbeam.com.
Thanks!
Docs: https://docs.hyperbeam.com Discord: https://discord.gg/D78RsGfQjq
138 comments
[ 3.1 ms ] story [ 183 ms ] threadIt's almost like it's so far ahead, I worry that people won't know what to do with it. It's like the "what would you do with infinite bandwidth" problem... even smart people tap out creatively depressingly quickly.
Our landing page (https://hyperbeam.com) showcases some of our happy customers.
Is there any use-case you have in mind? We're struggling to find people that want android emulators.
The folks at SideGuide made the interactive demo for us — we love it too.
Impressed by Hyperbeam tech behind. Bookmarked for later.
The watch party website is still up here: https://watch.hyperbeam.com
Is there a way to get this to work on mobile? Tried on safari and chrome
When using the API you can set a specific height and width to resize the virtual computer. Additionally, we track touch events and you can drag-and-drop on devices like iPads.
Happy to chat more about it if you'd like! Feel free to join our Discord: https://discord.gg/D78RsGfQjq
If I wanted to run code that would say scroll through a site for everyone to watch, what is the best way to do it? From your docs looks like I should make a chrome extension and then have it install that?
I was also disappointed it didn't work.
See the "webgl" parameter here: https://docs.hyperbeam.com/start-chromium-session#parameters
A little easter egg for the devs that try our API :)
Launch HN: Hyperbeam API (YC W22) – Multiplayer embeds of any website - https://news.ycombinator.com/item?id=30433104 - Feb 2022 (63 comments)
You can't even take a screenshot of YouTube TV if you don't run it in a VM. Goes to the clipboard as all black.
How does HyperBeam not get abused (and consequentially shut down) for people wanting to share a stream of a pay-per-view / YouTube TV style subscription with their friends?
All viewers in the same room see and hear the same video stream, and can control the same browser instance.
It sounds like you're saying, "Yes. Our technology enables someone to listen to YouTube without forcing them to continually view the video."
If so, I would like to caution you to tread lightly in this area. I'd built a 300K MAU YouTube-streaming Chrome extension which was ultimately terminated due to advertisers complaining to YouTube that viewers might consume content without visually seeing an advertisement. I went through a year of attempting to mitigate their concerns, but, ultimately, their expectation was that all a/v content become paused the moment video is not visible.
The only exception to this rule, that I am aware of, is Twitch.TV streamers listening to YouTube while streaming and viewers of the stream consuming that YouTube content without seeing the visuals. This is a backroom agreement between Amazon and the RIAA and is not an agreement I would encourage others to hope to achieve.
Obviously, you're not bound by YouTube's TOS, but run afoul and you'll find hyperbeam added to the big 4's url blacklist. This will prevent all YouTube content from playing through your domain.
If you employ technical mitigations, such as issuing requests from a server and misleading with the referer, YouTube will reach out with a C&D. If you don't honor it, then prepare to defend your usage in court similar to ytdl. They will make the case that 1984 Sony Corp. of America v. Universal City Studios, Inc. doesn't apply to here as there's clear commercial intent supporting the desire to re-stream media content
> Obviously, you're not bound by YouTube's TOS, but run afoul and you'll find hyperbeam added to the big 4's url blacklist. This will prevent all YouTube content from playing through your domain.
This seems like a non-issue since by the very nature of the service no referer is sent. The browser is spun up in a VM and streamed to the client through WebRTC.
So in order to technically block this they would need to know all the possible IPs of the servers.
When I commented on the technical viability of enforcement, they simply had a lawyer tell me to stop instead. If I had had enough spare resources to challenge it, then maybe things would've ended differently.
Just wanting to make sure we don't get caught up on focusing on what is technically possible. That's not how the world works. Laws, and interpretations of those laws, define what is allowed to be done with code.
I shared my link with my wife but she saw something entirely different... wasn't she supposed to be the same thing as me with the same "room" link?
Also, this is a bit of a tangent but my first name has one "L". My mother named me after the Philippines and I'm of Scottish descent on my father's side.
I can't type/paste anything into the API key "Bearer" box above "Send Request" either.
The "Body" tab seems clickable but also doesn't work.
Here's a snippet you can start with:
curl -X POST -H 'Authorization: Bearer <your-api-key>' https://engine.hyperbeam.com/v0/vm
https://docs.hyperbeam.com/start-chromium-session
First thing that comes to my mind is... this is kind of like Puppeteer. Even if that is what they are using in the background... would they ever expose it so existing Puppeteer apps could plug and play (like https://www.browserless.io/)?
Would appreciate your thoughts.
1: https://www.w3.org/TR/webdriver2/
Would love to learn more about the mobile test automation space, I'll send off an email.
[1]: https://construct.tapster.io/t3plus
Amazing job OP :)
Bask in your glory, truly amazing job :)
founders@hyperbeam.com
philip@hyperbeam.com (CEO) - Philip#9001
amby@hyperbeam.com (CTO) - Ambyjkl#4365
declan@hyperbeam.com (CPO) - Dek#7777
Suggestion: A hotkey (in or out of the virtual computer) that allows you to reset to the default orientation without having to reload the page. On a laptop with only a touchpad, I'm fighting with the controls a bit.
It's crazy to think this is built off forked chromium yet there is no really good self-hosted cross-platform Remote Desktop app.
Keep up the good work!
Hyperbeam started out as anime watch party website for our engineering capstone project in 2019, so the commit history is a bit comical. https://uwaterloo.ca/news/engineering-students/taking-innova...
First of all some spyware stuff from cloudflare gets blocked by the ad-blocker.
But this is not the root of the problem as it doesn't work either without the ad-blocker active.
Minified JS Script dies with some cryptic backtrace.
I've tried on the hyperbeam.com website and it does not work either.
It lies straight in my face about a missing H.264 codec. (Which works fine according to https://test-videos.co.uk/bigbuckbunny/mp4-h264).
It seems you never tested your stuff. The console is full of errors:
The "cannot consume1" is the error that shows also on the three.js demo.Seems like in Firefox, H.264 in WebRTC is supported in an entirely different fashion than other kinds of H.264, like in an MP4 file.
Should be available everywhere.
Enabling anything with "Cisco" in its name is out of scope for many (and anyway not available on Google's mobile OS).
___
¹ All implementations have severe quirks and some (like Safari) outright showstopper bugs. BTDT
My personal experience with WebRTC was: "One can be glad if one gets anything working at all across different environments". 0 stars, would not touch again (or only with a very very long pole; everybody has his price… ;-)).
The other thing that came to my mind is: Why do all that on the server? Seems costly.
One could build a "browser in browser", and share that (partly) P2P through the WebRTC screen-sharing feature. The "browser in browser" would be needed to be able to make that thing interactive as the screen-sharing feature transmits only a video. You would need to capture mouse and keyboard on the webpage within the "virtual browser" (and transmit it though an additional WebRTC stream). Capturing the inputs outside of the browser is not possible afik with WebRTC.
We’re building a “privacy mode” feature to address this exact problem that allows the host to black out the screen when entering sensitive information like credentials.
As for Hyperbeam getting access to credentials—we don’t store any input from users in the virtual computer. The only things we track are the time a particular IP is connected to the VM and the domains that are visited (this is anonymized).
Remote tutoring: https://www.teachwithkoala.com
VR offices & conferences: https://framevr.io
Watch parties: https://kosmi.io
Online coding lessons: https://www.strivemath.com
VS Code embeds: https://github.com/mintlify/connector