We are very excited to release the first public version of Rainway!

Rainway is a platform for building real-time, interactive web apps with embedded native applications. Our zero trust app streaming technology makes it possible for even the heaviest native apps, or an entire operating system (OS), to run on any platform regardless of system requirements.

Rainway is designed for developers. It integrates seamlessly into existing frontend frameworks such as React, and can be deployed on your preferred public cloud infrastructure. Our goal is to provide a smooth transition to this new standard of hybrid applications without having to learn any major new concepts so that you can get creating.

Here’s an example of what Rainway looks like:

const App = (props: { rainway: RainwayRuntime, peerId: bigint }) => {
    const [currentStream, setStream] = useState<RainwayStream | undefined>();


    // Connect and start a stream as soon as this component mounts.
    useEffect(() => {
        let stream: RainwayStream;
        async function startStream() {
            const peer = await props.rainway.connect(props.peerId);
            stream = await peer.requestStream(InputLevel.Keyboard);
            setStream(stream);
        }
        startStream();
        return () => stream?.leave();
    }, []);


    // Render the stream using the Rainway component.
    return (
        <div>
            <h1>Hello, world!</h1>
            <Rainway stream={currentStream} />
        </div>
    );
};

This example initiates a peer-to-peer (P2P) connection with another peer on the Rainway network. In this case, a headless server running a native app. Once a connection is established the other peer requests a stream, which begins streaming the framebuffer of a target process.

So, a complete desktop application running at native speeds without WebAssembly (WASM), is now an interactive component inside a web app. Using the prior example, we built a demo service that allows upcoming games to be shared securely with journalists and influencers. No downloads required.

Rainway has a number of features including:

  • Channels: extensible, high throughput, low latency network transports
  • App Isolation: securely stream an app to a guest while hiding the rest of the OS
  • Responsive Windows: streamed apps will update their window based on the remote viewport size
  • Remote Desktop: graphical desktop-sharing between peers with remote control capabilities
  • Input: plug and play keyboard, mouse, pen (with pressure & tilt), touch (with gestures,) and gamepad support
  • Audio: mono, stereo, quad, 5.1, and 7.1 playback is supported

To get started with Rainway, create an account here. Then check out the documentation here to create your first Rainway powered app, or check out the GitHub Repository for more details.

What can you build with Rainway?

The metaverse. The future. Whatever sparks your imagination. We’ve created a technology that frees software from the constraints of hardware. This is the basis for the tools and infrastructure required to support remote work, which has become so vital both in and outside of the interactive media industry, as well as more mobile, secure, and fully-featured entertainment, logistics, e-commerce, and education.

Some of the teams already building the next generation of products and services with Rainway include Microsoft (Xbox Cloud Gaming), Cerby (Shadow IT), and Smashcut (collaborative learning). Dream big and go further, we can help you get there.

Rainway puts developers first

We believe great code libraries are adaptable. They increase modularity and cut down on complexity so there is no separation between developers and the technology. Being adaptable and increasing modularity means providing you with the necessary features to plug in out-of-band control flow and extend the core functionality of a library at runtime.

Decreasing complexity means you can use a technology in your “Hello World” sandbox in minutes instead of hours, so you can spend your time building software instead of fighting it. We believe the ultimate developer experience stokes creativity, passion, and curiosity, and that is what we will always strive for.

What’s on the roadmap?

While work on v1.0 of the Rainway SDK is still underway, we consider the performance of our platform stable and ready to be used commercially. Until v1.0 is reached, breaking ABI changes are expected.

Your feedback is encouraged and greatly appreciated, if you have comments please send them to us here

Some of the major features coming in 2022 include:

  • REST API: interact with the Rainway network over HTTP
  • Bring Your Own Frame Buffer (BYOFB): embed Rainway into your applications render loop
  • Multiplayer: one-to-many interactive, collaborative streams
  • CRDT: access, store, or compute data on the global Rainway network in milliseconds to build richer, asynchronous multiplayer applications
  • Bebop RPC: high performance Remote Procedure Call (RPC) generation for our cross-platform serialization format
  • Peer Signing: a major improvement the the way peers connect and identify themselves to the Rainway network
  • Documentation Enhancements: improvements such as interactive examples, localization, search, and developer commentary
  • Expanded Language Support: use Rainway in more of your favorite languages like Java, Go, and Zig.

Community

Do you love poking at executables in IDA? Find video codecs insanely cool? Or have way too many pcap files on disk? Then you’ll probably fit right into our community. Join our forum, check out our Github, follow us on Twitter, and share all the great things you build with Rainway.

If you’re building an open source project and think Rainway is just the solution you need, reach out to us! We’re always looking to collaborate.

Spark change, stay excited, build the future.

built with ❤️ in Rust & C# by a bunch of nerds across 7 time zones