Open Source
Multiplayer's core is open source under MIT: session capture, local-first architecture, deduplication, and coding agent integration. You can read every line of it, self-host it, and verify for yourself that nothing leaves your infrastructure until an issue is actually found.
Scope: what's open, what's not
Multiplayer ships in three tiers.
| Tier | What's in it | License |
|---|---|---|
| Open source core | Session capture, local-first caching, deduplication, coding agent integration | MIT |
| Hosted plan | Everything in the core, run as a managed service. SSO/SAML, 30-day session retention, email support | Proprietary, paid |
| Enterprise | Audit logs, compliance reporting, team management, etc. | Commercial license, paid |
If you're evaluating whether self-hosting is right for you: the honest tradeoff is infrastructure ownership versus convenience. Self-hosting means nothing leaves your machines, but you're running Docker Compose, MongoDB, RabbitMQ, Kafka, ClickHouse, and a handful of other services yourself. The hosted plan trades that operational load for a subscription. Neither one changes what data Multiplayer captures or when, that part of the design is the same either way.
For the full reasoning behind open sourcing Multiplayer, see Multiplayer is now open source.
The repos
Debugging agent
The core platform. Web app, backend services, data pipelines, and the coding agent integration layer.
| Repo | What it does | License |
|---|---|---|
| multiplayer-app/multiplayer | The self-hostable platform: web app, backend services, storage integrations, shared libraries | MIT |
| multiplayer-app/multiplayer-cli | Terminal UI for working through debugging sessions and turning fixes into branches or PRs | MIT |
Data capture: client-side
Multiplayer automatically captures sessions for errors and exceptions at the source. This is ideal to catch bugs as they happen, while you focus on development work.
| Repo | What it does | License |
|---|---|---|
| session-recorder-browser | Browser SDK | MIT |
| session-recorder-node | Node.js SDK | MIT |
| session-recorder-react | React SDK | MIT |
| session-recorder-react-native | React Native SDK | MIT |
| session-recorder-go | Go SDK | MIT |
| session-recorder-dotnet | .NET SDK | MIT |
| session-recorder-python | Python SDK | MIT |
| session-recorder-ruby | Ruby SDK | MIT |
| session-recorder-java | Java SDK | MIT |
You can also install browser tooling to manually trigger a session: a browser extension and an in-app widget. This is ideal for developers or end-users to submit bugs or unexpected behaviors.
| Repo | What it does | License |
|---|---|---|
| Browser extension | Capture sessions without adding an SDK to your codebase | MIT |
| Widget repo Javascript | Embeddable in-app capture widget for web apps | MIT |
| Widget repo React Native | Embeddable in-app capture widget for mobile | MIT |
Data capture: backend and infrastructure
How Multiplayer pulls unsampled data out of your existing stack.
Capturing telemetry data
You have 2 primary options for routing your backend data to Multiplayer:
OpenTelemetry Collector. We recommend this option for large, scaled platforms, because it provides more flexibility by having your services send all telemetry to the collector, which then routes specific session recording data to Multiplayer, while routing other data to your existing observability tools.
| Repo | What it does | License |
|---|---|---|
| multiplayer-otlp-collector | Send OpenTelemetry data to Multiplayer | MIT |
| multiplayer-otlp-node | Send OpenTelemetry data to Multiplayer | MIT |
| multiplayer-otlp-python | Send OpenTelemetry data to Multiplayer | MIT |
| multiplayer-otlp-java | Send OpenTelemetry data to Multiplayer | MIT |
| multiplayer-otlp-dotnet | Send OpenTelemetry data to Multiplayer | MIT |
| multiplayer-otlp-go | Send OpenTelemetry data to Multiplayer | MIT |
| multiplayer-otlp-ruby | Send OpenTelemetry data to Multiplayer | MIT |
Multiplayer exporter. This is a great choice for new applications or startups because it's simple to set up and doesn't require any additional infrastructure. You can configure our exporter to send all session recording data to Multiplayer while optionally sending a sampled subset of data to your existing observability platform.
| Repo | What it does | License |
|---|---|---|
| direct-exporter-node | Send OpenTelemetry data to Multiplayer | MIT |
| direct-exporter-python | Send OpenTelemetry data to Multiplayer | MIT |
| direct-exporter-java | Send OpenTelemetry data to Multiplayer | MIT |
| direct-exporter-dotnet | Send OpenTelemetry data to Multiplayer | MIT |
| direct-exporter-go | Send OpenTelemetry data to Multiplayer | MIT |
| direct-exporter-ruby | Send OpenTelemetry data to Multiplayer | MIT |
Capturing request/response content and headers
You have 2 primary options for routing request/response content and headers from all your system components to Multiplayer:
Multiplayer Proxy. This option allows you to handle capturing this data outside of your services and it’s ideal for large-scale applications.
| Repo | What it does | License |
|---|---|---|
| multiplayer-proxy | Backend proxy for capturing request/response content and headers | MIT |
Content-capture libraries. Capture, serialize, and mask request/response and header content directly within your service code. This is an easy way to get started, especially for new projects, as it requires no extra components in your platform.
| Repo | What it does | License |
|---|---|---|
| content-capture-node | Utilities for capturing request, response and header content | MIT |
| content-capture-python | Utilities for capturing request, response and header content | MIT |
| content-capture-dotnet | Utilities for capturing request, response and header content | MIT |
| content-capture-go | Utilities for capturing request, response and header content | MIT |
| content-capture-ruby | Utilities for capturing request, response and header content | MIT |
Run it yourself
The fastest path, from the main repo:
git clone https://github.com/multiplayer-app/multiplayer
cd multiplayer
cp .env.example docker/.env
docker compose -f docker/docker-compose.prod.yml up -d
That starts the full platform, including MongoDB, RabbitMQ, Redis, Kafka, ClickHouse, MinIO, OpenSearch, and the OpenTelemetry collector, using prebuilt images. Docker and Docker Compose are the only requirements for this path.
Prefer to try Multiplayer without standing up infrastructure first? The CLI alone gets you running against the hosted plan in one line:
npm install -g @multiplayer-app/cli
multiplayer
For local development against the platform source itself, including hot reload and PM2 process management, see the full setup guide in the main repo.
Contributing
The contributing guide, branching strategy, and commit conventions live in CONTRIBUTING.md.
One thing worth knowing before you open a PR: we're optimizing for signal over volume. The contributions that move Multiplayer forward are grounded in something you actually hit, a specific bug, a specific edge case, a specific gap you ran into self-hosting. If you're running Multiplayer and something's broken or missing, that's exactly the kind of issue we want to hear about.
Next steps
🚀 If you’re ready to trial Multiplayer with your own app, you can follow the steps in the quickstart.
📌 If you have any questions shoot us an email! 💜