Authoritative multiplayer framework for Node.js with state sync, room-based matchmaking, and client SDKs for web, Unity, Godot and more.
heroiclabs/nakama
Open-source game backend server offering multiplayer, matchmaking, leaderboards, chat, and social features for games and apps.
- Stars
- 13,573
- Forks
- 1,508
- Open issues
- 122
- Last commit
- 2 days ago
What is it?
Nakama is a distributed game backend written in Go. It covers the server-side pieces most multiplayer games need: user accounts with social, email, or device ID login, storage collections, a friends and groups social graph, persistent chat, realtime or turn-based matches, dynamic leaderboards, tournaments, parties, and in-app purchase validation.
Server logic can be extended with custom runtime code in Lua, TypeScript/JavaScript, or native Go. Clients can talk to it over gRPC, REST, WebSockets, or rUDP. Official client libraries exist for Unity, Unreal, Godot, Defold, .NET, JavaScript, Java/Android, and Swift/iOS.
It runs as a single binary with an embedded web console for inspecting data, managing players, and watching active matches. It requires CockroachDB or another Postgres wire-compatible database, and can be started quickly with Docker.
Key features
- 01Account login via social networks, email, or device ID
- 02Built-in friends, groups, and social graph
- 03Realtime and turn-based multiplayer matches
- 04Dynamic and seasonal leaderboards plus tournaments
- 05Server extension in Lua, TypeScript/JavaScript, or Go
- 06Embedded web console for managing data and players
Use cases
- Backend for multiplayer games that need matchmaking and realtime sessions
- Mobile or casual games requiring leaderboards, chat, and in-app purchase validation
- Social apps that need friend graphs, groups, and persistent messaging
Quick start
- 1
Set up a docker-compose file for your project
- 2
Download and start the container images and servers
docker-compose -f ./docker-compose.yml up
Things to know
- Requires CockroachDB or another Postgres wire-compatible database to run.
- Production deployment needs separate provisioning of Nakama and the database nodes.
In collections
Topics
FAQ
- What is nakama?
- Open-source game backend server offering multiplayer, matchmaking, leaderboards, chat, and social features for games and apps. Nakama is a distributed game backend written in Go. It covers the server-side pieces most multiplayer games need: user accounts with social, email, or device ID login, storage collections, a friends and groups social graph, persistent chat, realtime or turn-based matches, dynamic leaderboards, tournaments, parties, and in-app purchase validation.
- Is nakama free to use? What license does it have?
- nakama is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is nakama still maintained?
- Actively maintained. The last commit to nakama was on Oct 22, 2026.
- What can I use nakama for?
- Backend for multiplayer games that need matchmaking and realtime sessions Mobile or casual games requiring leaderboards, chat, and in-app purchase validation Social apps that need friend graphs, groups, and persistent messaging
- How do I install nakama?
- Set up a docker-compose file for your project Download and start the container images and servers: docker-compose -f ./docker-compose.yml up
- Where can I get nakama?
- The source code and installation instructions are on GitHub: https://github.com/heroiclabs/nakama
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A Chinese-language knowledge base for game developers and tech leads, covering fundamentals, game engineering, production pipelines, team management and live operations.
Instant is a client-side database and backend for apps, providing queries, auth, permissions, storage, presence and real-time sync in one service.
No-code, open-source game engine and editor for building 2D, 3D and multiplayer games for mobile, desktop and the web.
An open source Go backend shipped as a single executable, with embedded SQLite, realtime subscriptions, file and user management, and an admin UI.
NSQ is a realtime distributed messaging platform designed to handle very high message volumes without a single point of failure.