opensourceprojects.dev

A broadsheet for software that doesn't ask for your email

Your retro game collection, playable in the browser
GitHub RepoImpressions5

Project Description

View on GitHub

Your Retro Game Collection, Playable in the Browser

You've got a folder full of ROMs somewhere—maybe an old hard drive, maybe a cloud backup you keep forgetting about. The problem is that actually playing them usually means wrestling with emulator configs, hunting down box art, and giving up on the whole thing halfway through. RetroAssembly is a project that tries to fix that by turning your browser into a self-hosted retro game cabinet.

What It Does

RetroAssembly is a web-based frontend for your personal retro game collection. It runs in the browser and lets you play games from a range of classic consoles—NES, SNES, Genesis, GameBoy, Arcade, and more. Rather than being a single emulator, it's a presentation layer that ties together emulation, library management, and a UI built for browsing and playing.

The project handles the parts of retro gaming that are tedious: it auto-detects box art and covers for your games, saves your progress and syncs it so you can resume later, and gives you an interface designed around spatial navigation. That last point matters more than it sounds—it means you can move between games using just a keyboard or a gamepad, no mouse required. There's also support for retro-style shaders if you want your pixels to look the way you remember them, and an on-screen virtual controller for when you don't have a physical gamepad handy.

Why It's Cool

It treats your collection like a collection. Most emulator frontends are basically file browsers with a play button. RetroAssembly leans into the idea of a "cabinet"—box art gets pulled in automatically, platforms are organized as browsable shelves, and the whole thing is meant to feel like flipping through games rather than scrolling through filenames.

Spatial navigation is a genuinely good call. If you've ever tried to navigate a web UI with a controller, you know how awkward it can be. Building the interface around spatial navigation from the start means the keyboard and gamepad aren't afterthoughts—they're the primary input method. For a living-room setup or a handheld device, that's the difference between usable and frustrating.

Save states you can actually rely on. The README calls out saving and synchronizing your game at any point, plus rewind support in some emulators. Save sync is the kind of feature you don't appreciate until you lose a save file, and rewind is the kind of feature you don't appreciate until you make a mistake you can't undo.

It runs in the browser, which means it runs anywhere. You don't need to install a desktop app or configure a frontend on each machine. If you can reach the server, you can play. That also opens up mobile play with the virtual controller, which is a nice touch for people who want to pick up a game during a commute without carrying extra hardware.

The scope is honest. The README doesn't pretend to support every console ever made—it lists NES, SNES, Genesis, GameBoy, Arcade, and points you to a supported platforms section for the rest. That kind of restraint is worth noting. Plenty of projects overpromise on compatibility and then quietly fail to deliver.

How to Try It

The easiest path is Docker, since the project publishes an image to Docker Hub:

docker pull arianrhodsandlot/retroassembly

From there you'll want to run the container and point it at wherever your ROMs live. The exact volume setup and configuration options are covered in the repository's documentation, so check the README for the current command—the project is actively developed and details can shift.

If you'd rather run it from source, you can clone the repo directly:

git clone https://github.com/arianrhodsandlot/retroassembly

Then follow the build instructions in the README. You'll need a place to store your game files, and you'll want to spend a few minutes letting it scan your library so the box art detection can do its thing.

A few things worth knowing before you dive in:

  1. You need to supply your own ROMs. This is a frontend, not a game source.
  2. Save sync depends on having a server running—if you're only running it locally, you'll want to back up your save directory.
  3. The virtual controller is there for touch devices, but a real gamepad will give you a much better experience for anything action-heavy.

You can find the full setup instructions and current feature list at github.com/arianrhodsandlot/retroassembly. There's also a Discord server linked in the README if you run into trouble or want to see what other people are doing with it.

Final Thoughts

RetroAssembly is aimed at a specific kind of person: someone who already has a ROM collection and wants a better way to actually use it. If that's you, the combination of auto-detected box art, save sync, and controller-friendly navigation covers most of what makes a retro setup pleasant rather than annoying. It's not trying to be a general-purpose emulation platform or a replacement for dedicated hardware—it's a browser-based cabinet for the games you already own. If you've been meaning to dust off that old collection, this is a reasonable place to start.


Follow @githubprojects for more developer tools and open source projects.

Back to Projects
Project ID: a176262c-dfb3-4b7b-82c5-a3fac8fa4b01Last updated: October 11, 2026 at 02:46 AM