Plane: per-user backends for ambitious web apps
• Paul Butler
Ambitious browser-based applications often have compute requirements that aren’t satisfied by a traditional client/stateless-server architecture. For example, they may need to:
- Exceed the CPU and memory limits of the browser.
- Run code that can’t be compiled to JS/WASM, but needs to keep application state in memory (e.g. VS Code’s backend service)
- Pixel-stream entire GUIs over WebRTC.
We created Jamsocket to meet these use cases. Today, we’re excited to open source Plane, the Rust-based orchestration layer that powers Jamsocket.
Plane lets you dynamically start a background process on a cluster of servers via an API call. It then lets you open a bidirectional data stream to it from anything that speaks HTTPS, including browsers. When you close the stream (or the browser tab), Plane shuts down the process. It’s easier to show than tell, so here’s a two-minute demo.
We didn’t want to reinvent too many wheels. The background processes are standard containers. The bidirectional stream is just a WebSocket connection, and Plane is not opinionated about how you use it. As a result, Plane works with existing software like code-server and Jupyter notebooks, with only config-level changes.
What really excites us is not only using Plane to run existing applications, but the new applications that can be built when this infrastructure is readily available. For example, the space design software Rayon uses Jamsocket to share the same backend process among all connected clients accessing the same document, to provide a shared server-side in-memory source of truth for that document state for conflict resolution. (Figma uses a similar process-per-document approach.)
We have big plans for Plane – continuing to optimize cold start time, supporting volumes, more sophisticated scheduling, and cluster scaling. But we’re excited to share it with the world today to get it in front of more developers. If you’re interested in learning more, check out the GitHub repo and say hi to us on Discord.Plane on GitHub
For more like this, subscribe to our Browsertech Digest or follow @drifting_corp on Twitter.