{"id":13494012,"url":"https://github.com/jamsocket/plane","last_synced_at":"2026-02-02T23:18:44.039Z","repository":{"id":37023094,"uuid":"426740091","full_name":"jamsocket/plane","owner":"jamsocket","description":"A distributed system for running WebSocket services at scale.","archived":false,"fork":false,"pushed_at":"2025-02-10T21:18:57.000Z","size":3882,"stargazers_count":1906,"open_issues_count":3,"forks_count":42,"subscribers_count":18,"default_branch":"main","last_synced_at":"2025-05-07T04:05:14.749Z","etag":null,"topics":["rust","websocket"],"latest_commit_sha":null,"homepage":"https://plane.dev","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jamsocket.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-10T18:52:39.000Z","updated_at":"2025-05-04T09:28:59.000Z","dependencies_parsed_at":"2024-01-09T16:46:09.106Z","dependency_job_id":"54780522-92f5-4884-bf6d-c91c80072536","html_url":"https://github.com/jamsocket/plane","commit_stats":{"total_commits":278,"total_committers":8,"mean_commits":34.75,"dds":0.302158273381295,"last_synced_commit":"25be1ec6113a565597f50010b4f8b4a363e52d1d"},"previous_names":["drifting-in-space/spawner","jamsocket/plane"],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamsocket%2Fplane","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamsocket%2Fplane/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamsocket%2Fplane/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamsocket%2Fplane/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jamsocket","download_url":"https://codeload.github.com/jamsocket/plane/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254020631,"owners_count":22000755,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["rust","websocket"],"created_at":"2024-07-31T19:01:20.896Z","updated_at":"2026-02-02T23:18:39.000Z","avatar_url":"https://github.com/jamsocket.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"\u003cdiv style=\"postion: relative; width: 337px; height: 110px;\"\u003e\n    \u003ca href=\"https://plane.dev#gh-light-mode-only\" style=\"position: absolute;\"\u003e\n        \u003cimg src=\"./resources/plane-logo-light.svg\" alt=\"Plane logo\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://plane.dev#gh-dark-mode-only\" style=\"position: absolute;\"\u003e\n        \u003cimg src=\"./resources/plane-logo-dark.svg\" alt=\"Plane logo\" /\u003e\n    \u003c/a\u003e\n\u003c/div\u003e\n\n[![Docker image](https://img.shields.io/docker/v/plane/plane)](https://hub.docker.com/r/plane/plane/tags)\n[![Build Docker Image](https://github.com/jamsocket/plane/actions/workflows/build-image.yml/badge.svg)](https://github.com/jamsocket/plane/actions/workflows/build-image.yml)\n[![Tests](https://github.com/jamsocket/plane/actions/workflows/tests.yml/badge.svg)](https://github.com/jamsocket/plane/actions/workflows/tests.yml)\n[![Chat on Discord](https://img.shields.io/discord/939641163265232947?color=404eed\u0026label=discord)](https://discord.gg/N5sEpsuhh9)\n[![crates.io](https://img.shields.io/crates/v/plane.svg)](https://crates.io/crates/plane)\n\nPlane is a distributed system for **running stateful WebSocket backends at scale**. Plane is heavily inspired by [Figma’s mulitplayer infrastructure](https://www.figma.com/blog/rust-in-production-at-figma/), which dynamically spawns a process for each active document.\n\nUse cases include:\n- Scaling up [authoritative multiplayer backends](https://jamsocket.com/blog/you-might-not-need-a-crdt).\n- Running isolated code environments (like REPLs, code notebooks, and LLM agent sandboxes).\n- Data-intensive applications that need a dedicated high-RAM process for each active user session.\n\n## How Plane works\n\nYou can think of Plane as a distributed hashmap, but instead of storing data, it stores running processes. When you ask Plane for the process associated with a key (via an HTTP API), it either returns a URL to an existing process, or starts a new process and returns a URL to that.\n\nPlane will keep the process running for as long as there is an open connection (usually a WebSocket connection) to it. Once all connections to a process have been closed for some time threshold, Plane will shut down the process.\n\nPlane guarantees that only one process will be running for each key at any given time, allowing that process to act as an authoritative source of document state for as long as it is running.\n\n### Architecture\n\nRead more about [Plane’s architecture](https://plane.dev/concepts/architecture).\n\n[![Architecture diagram of Plane](./docs/public/arch-diagram.svg)](https://plane.dev/concepts/architecture)\n\n## Learn more\n\n- Read the [quickstart guide](https://plane.dev/quickstart-guide)\n- Learn about [Plane concepts](https://plane.dev/concepts/session-backends)\n- See instructions for [building and developing Plane locally](https://plane.dev/developing)\n- Read about [production deployment](https://plane.dev/deploy-to-prod)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamsocket%2Fplane","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjamsocket%2Fplane","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamsocket%2Fplane/lists"}