I had an idea once but not the time nor motivation to build it: a database of game design with links to gameplay snippets.
So for example an article on "2D platforming" that discusses the implementation in Super Mario, and includes a "demo" button which launches a web emulator with a save state that demonstrates a specific jumping section of the game.
Legally perilous maybe, although my non-lawyer brain sees that as fair use, especially if the emulator doesn't let you play the full game. Idk, but it'd be a unique thing on the internet.
Edit: this is awesome btw, im definitely setting up a personal instance soon
RomM is a great project! I've so excited to see the integrations coming along.
As somebody who's setup a lot of little retroboxes, the idea of doing it once and having my collection served off of my homelab to all my other devices is incredibly appealing. Web-based emulation has come a very long way. Still I prefer to play off of my individual devices many of which don't have good browser support.
Setting those systems up can take hours each, but being able to point something like a Batocera instance or an ES-DE setup at a server and have it self populate with roms, bios files, screenshots, etc, would be a dream. It sounds like this might be the future of the emulation ecosystem and it sounds amazing!
Fetching anything from the internet means some cloud knows what games I'm playing. It's a privacy risk. Games played are very revealing to personality type, and probably lots of other individual info, and that means the temptation to gather this data and sell it to advertisers is very high.
I'm using it mostly as a way to keep my copies of GOG games organized. I could use GOG's app, but the point of having fully offline copies is to not have them under the control of the people you bought them from.
Thank you for being AGPLv3, and an extra big thank you for clearly laying out the needed directory structure. Sometimes it's not always clear. The docs in general are great!
Side note: for those with large PC game libraries, Playnite is a godsend!
It has a similar UX as RomM, in fact it seems to be inspired by Playnite and has a plugin for it. It also uses most of the same metadata sources.
Playnite is quite mature and powerful now, with a rich ecosystem of extensions, data sources and themes. And even though I am not much of an emulator user, it was easy to hook up to any emulator and local ROM, like Breath of the Wild with Cemu or Pokemon Emerald on VBA.
Not to in any way suggest that you should use Playnite instead of RomM, it looks like a great app, just thought it would be relevant to mention.
Tried the first NES game off the demo. Surprisingly playable/enjoyable on mobile (Android chrome)! I feel like even a few years ago that the experience in mobile browser on some random retro game site was not even close to this good? Is emulatorJS pretty new or does this project just have all the pieces working perfectly?
Been using this for a while. It's evolving rapidly and the team behind it is very responsive and passionate. Very excited to see this evolve over time! The only thing that it really needs going forward is more Retroarch cores ported to JavaScript, but that's an upstream problem.
This might be a stupid question. But can you have a general import folder were you just dump a rom and the app IDs it and moves it to the correct system folder?
I have this installed on my unRAID instance and haven't yet figured this out..
Any way to run the Docker version without the external DB requirement? I have a bunch of things running on my home server and so far every one is a single image with no external requirements, which is very nice. Everything that needs a DB just uses sqlite, makes it operationally very simple, and nothing I do even comes within the same universe as the kind of usage that'd cause sqlite to become a bottleneck (and this doesn't look like it would, either).
I made my own really mediocre version of this 2 years ago just for PS4 and Switch ROMS, also using IGDB etc. Glad to see something so polished and professional looking.
For the maintainers, does this pull the metadata (e.g Title ID or PKG ID) from the (supported) ROM files directly, or only from the filename? I skimmed the README and Docs and couldn't find a clear answer.
My first thought was, what does it mean for a program like this to be "hosted" in the first place?
My second thought was, for people who play a lot of ROMs, they're either doing it because they know more about those games than typical online metadata sources do; and/or a big chunk of them are modded or even completely homebrew.
I get the impression the authors are monitoring the thread. I'm not home to check this out but I like the idea. A few questions.
1. Does the web interface allow you to download your ROMs in a similar fashion to Plex letting you download your files? I could see myself using this to fetch from my libraries and would like a nice GUI box art interface to grab a game I'm looking for.
2. How does this work with ROM hacks? How is the metadata pulled? Filename? Header? How could I set custom metadata where it doesn't match.
3. Does this have an accessible and documented API if I want to build extensions to it (or am I forced to use the interface?)
Reminds me of a “steam” inspired version of hyperspin. Cool! Great work. Still looking for a good hyperspin replacement that runs on Linux that I can use for my machines.
Can we collectively stop using the word "beautiful" for app descriptions. It is so overused and now effectively meaningless. Besides, beauty is supposed to be in the eye of the beholder, not the creator trying to put words in other peoples' mouths.
If you are aiming for 'beauty' (whatever that actually means), then build it to a high standard and let other people find the words on their own accord.
Show HN: RomM – An open-source, self-hosted ROM manager and player
(github.com)231 points by gassi 11 June 2025 | 94 comments
Comments
So for example an article on "2D platforming" that discusses the implementation in Super Mario, and includes a "demo" button which launches a web emulator with a save state that demonstrates a specific jumping section of the game.
Legally perilous maybe, although my non-lawyer brain sees that as fair use, especially if the emulator doesn't let you play the full game. Idk, but it'd be a unique thing on the internet.
Edit: this is awesome btw, im definitely setting up a personal instance soon
As somebody who's setup a lot of little retroboxes, the idea of doing it once and having my collection served off of my homelab to all my other devices is incredibly appealing. Web-based emulation has come a very long way. Still I prefer to play off of my individual devices many of which don't have good browser support.
Setting those systems up can take hours each, but being able to point something like a Batocera instance or an ES-DE setup at a server and have it self populate with roms, bios files, screenshots, etc, would be a dream. It sounds like this might be the future of the emulation ecosystem and it sounds amazing!
Romm works really great for this too.
It has a similar UX as RomM, in fact it seems to be inspired by Playnite and has a plugin for it. It also uses most of the same metadata sources.
Playnite is quite mature and powerful now, with a rich ecosystem of extensions, data sources and themes. And even though I am not much of an emulator user, it was easy to hook up to any emulator and local ROM, like Breath of the Wild with Cemu or Pokemon Emerald on VBA.
Not to in any way suggest that you should use Playnite instead of RomM, it looks like a great app, just thought it would be relevant to mention.
If you have time:
Does it (or can it) run emulators natively? I'm trying to get my head around js emulator, how is that libretro? Is libretro compiled to wasm?
Is it running retro arch underneath or have you managed to implement the libretro API?
I love and hate retroarch. Its menus are ridiculous but it's still easier than managing multiple emulators.
Playing through a browser seems like a downside for me personally
I have this installed on my unRAID instance and haven't yet figured this out..
For the maintainers, does this pull the metadata (e.g Title ID or PKG ID) from the (supported) ROM files directly, or only from the filename? I skimmed the README and Docs and couldn't find a clear answer.
My second thought was, for people who play a lot of ROMs, they're either doing it because they know more about those games than typical online metadata sources do; and/or a big chunk of them are modded or even completely homebrew.
1. Does the web interface allow you to download your ROMs in a similar fashion to Plex letting you download your files? I could see myself using this to fetch from my libraries and would like a nice GUI box art interface to grab a game I'm looking for. 2. How does this work with ROM hacks? How is the metadata pulled? Filename? Header? How could I set custom metadata where it doesn't match. 3. Does this have an accessible and documented API if I want to build extensions to it (or am I forced to use the interface?)
Is it MAME but for playing in a browser?
If you are aiming for 'beauty' (whatever that actually means), then build it to a high standard and let other people find the words on their own accord.