Contributing
Want to change Nakama itself? This page is the short path. For the full checklist (style, cassette tests, docs conventions), see CONTRIBUTING.md on GitHub.
Run locally
You need Bun 1.3+, git, and optionally the GitHub CLI for PRs.
git clone https://github.com/ahmadrosid/nakama.git
cd nakama
bun install
bun run dev:webOpen the web dashboard at http://localhost:3003. dev:web starts the API if needed.
Other entry points:
bun run dev:server # API only
bun run dev:cli # terminal clientIf you run the Docker single-container image instead, the dashboard is at http://localhost:4310 (API, web, and platform workers together).
Where to look
| Area | Path |
|---|---|
| API and agent runtime | apps/server |
| Dashboard | apps/web |
| CLI | apps/cli |
| Channel workers | apps/platform/{telegram,whatsapp,discord,automation} |
| Shared libraries | packages/{core,agent,db,client} |
| User docs (this site) | docs/website |
Deeper layout and conventions: AGENTS.md, system design: ARCHITECTURE.md.
How to test
bun test
bun run check # Biome via Ultracite
bun run knip # unused files, dependencies, and exports (CI fails on findings)Assert behavior, not exact prompt or error copy. Live LLM tests use MSW cassettes (*.llm.test.ts); see CONTRIBUTING.md for replay and LLM_VCR_MODE=record.
Docs-only changes: register new MDX pages in meta.json, link them from the Documentation hub, then run bun run build:docs.
Open a pull request
- Branch from
main(or fork first) - Keep the PR to one concern
- Push and create the PR with
gh pr create - In the body: what changed, what you verified, remaining risks
- Wait for CI to pass