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.
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.
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.
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.
Every runner streams their game to the lobby. Watch friends' runs โ and their wipes โ live while you play yours.
Locations appear on a map as you play, colored by encounter status. Dupes clause, shiny clause, and hardcore level caps built in.
When a run dies, restart into a fresh numbered attempt. Every past attempt โ encounters, graveyard, diary โ stays browsable forever.
One machine hosts; everyone else just opens a link. Windows, macOS, and Linux.
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.
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.
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.
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.
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.
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.
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.
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.
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.