A RomM frontend for iPhone and Apple TV.
RomM manages your game collection: the library, the metadata, the cover art, the saves. Cabinet was inspired by their work and built to bring it to Apple devices. It puts your collection on your iPhone and your Apple TV, opening on whatever you were playing last so you are back in the game in one tap.
Works directly for iPhone. For Apple TV you'll also need an iPhone or iPad to open the link on, that's an Apple TestFlight requirement, not this app. See Get it below, including the option for Apple-TV-only setups.
Latest GitHub Releases: iOS 1.0.0 · tvOS 1.0.0 · Mac 1.0.0
| Home | Playing a game | Library |
| Apple TV Home | Apple TV Library |
| Browsing arcade games on Apple TV | Launching a game on Apple TV |
| Cabinet for Mac, Home | Cabinet for Mac, Library |
| Cabinet for Mac, a platform | Cabinet for Mac, launching a game |
Your RomM library on iPhone. Cabinet plays your collection through RomM's own web player, built right into the app.
Offline play for supported systems. Cabinet also ships native on-device cores for the classic consoles and handhelds. Keep a game on your phone and it plays with no signal and no server at all: on a plane, on the subway, anywhere. Native speed, native controls, the whole screen.
A real Apple TV app. Not a phone app on a television: Home, Library and the pause menu are built for a remote and a ten foot viewing distance, your recent games show up on the top shelf, and it runs entirely on those same built-in cores. Your library on the big screen with a controller in your hand.
A real Mac app. The television's app at arm's length: a sidebar with your library, a Settings window, menus, a game screen built for a pointer and a keyboard or your iPhone as the controller. And the systems only a desk machine can carry: PlayStation 2, GameCube and Dreamcast run there at full speed, with the recompilers the phone and the television cannot have.
A whole platform in one go. Download All keeps every game on a system at once, on the Mac and on iPhone. On the phone it comes down through the system's own background downloader, over Wi-Fi only, so a platform started at the kitchen table finishes with the phone locked in a pocket, with its progress in the Dynamic Island and on the Lock Screen.
On the home screen and in Spotlight. A widget in three sizes shows what you played last, your recents or your favourites, each cover a tap into its game; and typing a game's name into the phone's own search opens it straight in.
Your saves follow you. Save states and battery saves sync back to your RomM server, so they are waiting wherever you play next. PlayStation games get their own memory card.
Your controller just works. Connect any controller your device supports and play. Pair a second one for couch co-op. On iPhone there are also touch controls, a layout per console, tuned per orientation.
Arcade games get the controls they actually had. Where a cabinet used a spinner, a trackball, a steering wheel and pedals, a light gun or a rotary joystick, Cabinet draws that instead of pretending everything was a joystick and two buttons. Which control a board gets comes from real arcade data rather than guesswork.
The small details of old hardware. Vectrex games draw the translucent colored overlay that shipped in the box with them. The handful of Game Boy Advance cartridges with sensors soldered inside, WarioWare Twisted among them, read your phone's own motion.
Your phone is a controller for your Apple TV. Pair it once with a code shown on screen. Two people with two phones are two players, and phones share seats with any controllers you already have. A friend who turns up with no RomM server of their own can install Cabinet, skip setup entirely, and be a controller and nothing else.
A Nintendo DS uses both screens. The television shows the top screen and your phone becomes the bottom one, in your hands, as the touchscreen it always was.
A light gun you sight in. Shoot the middle of the picture and two corners, the way an arcade cabinet was set up, and the gun knows where your television is.
Game & Watch plays like a Game & Watch. No on-screen controls at all. The machine fills the screen and you press its buttons by pressing them.
Your phone is the VMU. While your Apple TV plays a Dreamcast game, the controller screen on your phone shows the game's live VMU display, sitting where the real controller's window sat. And when a game downloads a minigame onto its memory card, Sonic Adventure's Chao Adventure being the classic, the game's launch screen on your phone grows a VMU row: tap it and the phone becomes the VMU, shell and all, playing the minigame off the same card your save syncs through. Take it on the bus; your creature comes home changed.
Natively, on iPhone, Apple TV and Mac, through emulators built into the app: Arcade, PlayStation, PSP, Saturn, Nintendo 64, Nintendo DS, 3DO, SNES, NES, Game Boy, Game Boy Color, Game Boy Advance, Virtual Boy, Genesis, Sega CD, 32X, Master System, Game Gear, TurboGrafx-16, TurboGrafx-CD, Neo Geo Pocket Color, Atari 7800, Atari 2600 and Vectrex. On iPhone these work offline once a game is kept on your phone. Nintendo 64 sits behind an Experimental Cores switch on iPhone and Apple TV, because its speed varies by game there.
On the Mac alone: PlayStation 2, GameCube and Dreamcast. Those three need the kind of just-in-time compilation Apple's phones and televisions do not allow, so they run where it is allowed and nowhere else. Cabinet's rule is fully playable or not offered at all.
Game & Watch, and the Dreamcast VMU, on iPhone. The television has no way to touch a machine, and touching it is the whole point; and the VMU is the thing you took away from the console, so the phone is the VMU, showing its live screen while a Dreamcast game plays on the Mac, and running its minigames on its own.
Beyond that list, on iPhone: whatever your RomM server plays through its web player, with a connection. On Apple TV and Mac, the native list is the list.
- Amiga CD32 and Philips CD-i have no dedicated touch control layout yet, and both currently only play through the web player on iPhone.
- Native play only resumes from an explicit save state, not automatically on quit or backgrounding, unlike the web player.
- Multi-disc games aren't supported yet, on any system.
- Light gun support covers the arcade cabinets. The console light gun systems are on the roadmap.
- Dreamcast is Mac only. On iPhone and Apple TV it never reached full speed in heavy 3D, because those platforms don't allow the kind of just-in-time compilation that console's CPU needs, so it is not offered there. See issue #6 for the story.
- A RomM server with your games on it (built and tested against 5.1.0)
- An iPhone running iOS 18 or later, an Apple TV running tvOS 18 or later, or a Mac with Apple silicon running macOS 15 or later
Cabinet does not come with any games. It plays yours.
The easy way: TestFlight.
On iPhone: just open that link there. It walks you through installing TestFlight first if you don't have it, then Cabinet.
On Apple TV, if you also have an iPhone or iPad: install TestFlight on that device too (signed into the same Apple ID as your Apple TV), open the link there, and tap Accept. It installs on the Apple TV over the air, tvOS has no browser, so the link has to be opened on the phone or iPad, not the TV itself.
On Apple TV only, no iPhone or iPad at all: the public link above can't reach you, that's an Apple limitation, not something we can work around. Ask in Discussions or open an issue and I'll send you a direct email invite instead, which works from any device, a computer included, to get a one-time code you enter on the Apple TV.
Each platform also has its own releases on its own schedule, all published under Releases, if you'd rather not go through TestFlight.
iPhone: download the latest iOS IPA and install it with AltStore or SideStore.
Apple TV: download the latest tvOS IPA and install it with Xcode from a Mac, or build it yourself. Friendlier install paths are coming.
Mac: download the disk image from the latest Mac release, open it, and drag Cabinet to Applications. It is signed and notarized, so it opens like any other app.
When you first open it, type in your server address and approve it in RomM. That is all. Cabinet never asks for your password, it uses RomM's own device authorization.
Cabinet exists because of the RomM team. The library, the metadata, the save model, and the web player inside the iPhone app are all their work. Cabinet is just a way to enjoy it on Apple devices. If you like Cabinet, go star their project, it is where the real work lives.
I am not a programmer. Cabinet was built with AI assistance, by me, because I wanted this app to exist and it did not. The entire history is here, unedited, so you can see how it was made and judge for yourself.
Cabinet is MIT. The emulators it uses keep their own licences, listed in docs/licenses.md and in the app under Settings.
Cabinet is free, is not sold, and takes no donations. Some of those emulators require exactly that, so it stays that way.
Security issues: SECURITY.md.