Race Nuzlockes with your friends.
On your own server.

Nuz-Dash is a self-hosted multiplayer Nuzlocke platform: play in the browser, let the tracker log encounters straight from the game's memory, and watch everyone's runs live โ€” side by side. No accounts. Invite links are all it takes.

๐ŸŽฎ

Play in the browser

Built-in GB / GBA / NDS emulator (EmulatorJS). Bring your own legally-dumped ROM โ€” patched ROM hacks welcome. Save states live on the server and resume automatically.

๐Ÿ“ก

Encounter radar

Wild battles are detected from the running game's memory โ€” species, level, shiny โ€” and logged with one click. Works with pokeemerald-expansion hacks, fakemon included.

โค๏ธ

Live party sync

Team, HP bars, and faint alerts parsed straight from the battery save. Deaths flow into the tracker with a cause-of-death note. Auto backups on every in-game save.

๐Ÿ‘€

Watch party

Every runner streams their game to the lobby. Watch friends' runs โ€” and their wipes โ€” live while you play yours.

๐Ÿ—บ๏ธ

Self-drawing route map

Locations appear on a map as you play, colored by encounter status. Dupes clause, shiny clause, and hardcore level caps built in.

๐Ÿ

Attempts & history

When a run dies, restart into a fresh numbered attempt. Every past attempt โ€” encounters, graveyard, diary โ€” stays browsable forever.

Run your own server

One machine hosts; everyone else just opens a link. Windows, macOS, and Linux.

Install Node.js

Nuz-Dash needs Node.js 20 or newer. Check with:

node --version

Download & build

Grab the source zip from the latest GitHub release and extract it anywhere (or git clone https://github.com/tummyslyunopened/nuz-dash), then in that folder:

npm install
npm run build
npm start

Open http://localhost:4517 โ€” create your lobby and you're the first runner.

Go public with a Cloudflare Tunnel

To let friends join over the internet, install cloudflared (drop the binary into a tools/ folder next to the app, or put it on your PATH). Then open the admin dashboard at http://localhost:4518 โ€” the tunnel panel offers two modes:

Quick โ€” hit Start tunnel and you're public in seconds on a random *.trycloudflare.com URL. Zero setup, but the URL changes every time the tunnel restarts.

Named (recommended) โ€” a permanent address on a domain you manage on Cloudflare. In the tunnel panel: switch to named, enter a tunnel name and your hostname (apex or subdomain, e.g. nuz.example.com), click Login to Cloudflare and approve in the browser, then Create tunnel & route DNS, then Start tunnel. Enable auto-start and your address survives every restart.

Either way, every invite link you copy automatically uses the public address.

Invite your runners

Copy the invite link from your lobby page and send it privately. Each joiner picks a name and gets their own secret link โ€” that link is their login, so it should be treated like a password. Lost links can be regenerated by any lobby member or from the admin dashboard.

FAQ

Where do ROMs come from?

You. Nuz-Dash ships zero game files โ€” each lobby's host uploads their own legally-dumped ROM (patched hacks included). The ROM stays on the host's machine and is served only to lobby members.

Where is my data stored?

Everything lives in server/data/ on the host machine as plain JSON plus your ROMs, save states, and sprites. Back up that folder and you've backed up every run. Runners also get automatic local .srm + .state downloads on every in-game save.

How does login work with no accounts?

Secret links. Creating or joining a lobby mints a personal URL containing a random token โ€” possession of the link is the identity. Share invite links privately, bookmark your personal link, and rotate it anytime if it leaks.

Which games are supported?

The emulator covers Game Boy, Game Boy Color, Game Boy Advance, and Nintendo DS. Deep integration โ€” encounter radar, live party, auto backups โ€” currently supports Gen 3 (Ruby/Sapphire/Emerald/FireRed/LeafGreen) and hacks built on them, including pokeemerald-expansion-based hacks. The manual tracker supports all 21 mainline games.

Can I use my own domain?

Yes โ€” if your domain is on Cloudflare (any plan, including just DNS), the admin dashboard sets up a named tunnel for you: log in once, click "Create tunnel & route DNS", and your instance gets a permanent hostname like nuz.example.com. No port forwarding, no exposed IP, free. If the hostname already has a DNS record, remove it first โ€” the setup won't overwrite existing records.

How do I update?

Download the newest release over your install (or git pull), then npm install && npm run build and restart. Your server/data/ folder is untouched, and data migrations run automatically on boot.