Introduction
Romm is a self-hosted game library manager designed for retro ROM collections. It automatically scrapes metadata and artwork from IGDB, organizes games by platform, and provides in-browser emulation so you can play directly from your server without downloading files locally.
What Romm Does
- Scans and organizes ROM files by platform with automatic folder detection
- Scrapes game metadata, cover art, and screenshots from IGDB and MobyGames
- Provides in-browser emulation via EmulatorJS for instant play without downloads
- Supports multi-user access with individual game libraries and save states
- Manages firmware files, BIOS images, and save data alongside ROMs
Architecture Overview
Romm runs as a Python FastAPI backend with a Vue.js frontend, packaged in a single Docker container. It uses MariaDB for metadata storage and scans a mounted ROM directory on disk. The EmulatorJS integration serves WASM-based emulator cores directly in the browser, communicating with the backend for ROM streaming and save state sync.
Self-Hosting & Configuration
- Deploy with Docker Compose; requires MariaDB and a mounted ROM directory
- Obtain an IGDB API key (free) for metadata scraping
- Organize ROMs in platform-named folders for automatic detection
- Configure via environment variables for database, auth, and scraper settings
- Supports HTTPS behind a reverse proxy with standard headers
Key Features
- In-browser play: emulate games directly without client software
- Multi-platform support: covers 50+ retro systems from Atari to PS2
- Cloud save states: resume games across devices through the web UI
- Multi-user: each user gets their own library view and save data
- Bulk scanning with incremental updates for large collections
Comparison with Similar Tools
- RetroArch — desktop emulator frontend; Romm is web-based and server-hosted
- Playnite — Windows game launcher; Romm focuses on ROM management and web access
- LaunchBox — Windows-only with paid tiers; Romm is free and cross-platform
- EmulatorJS standalone — player only; Romm adds library management and metadata
- Gaseous — similar self-hosted concept; Romm has broader platform coverage
FAQ
Q: What platforms does Romm support for in-browser emulation? A: Most systems from NES through PS1/N64, plus handheld consoles. Newer systems depend on EmulatorJS core availability.
Q: How large can my ROM library be? A: There is no built-in limit. Users manage collections with tens of thousands of ROMs on modest hardware.
Q: Does Romm handle multi-disc games? A: Yes, multi-file and multi-disc games are grouped together as a single library entry.
Q: Can I share my library with friends? A: Yes, multi-user support lets you invite others with configurable permissions per user.