retroemu
retroemu runs classic console games in a terminal using Node.js and libretro cores compiled to WebAssembly.
What retroemu is
retroemu runs classic console games in a terminal using Node.js and libretro cores compiled to WebAssembly. Its README describes support for more than 25 systems, including NES, SNES, Game Boy, Genesis, Atari, N64, and PlayStation; it can also run WASM carts and JavaScript games. Video output can appear in a terminal, an SDL window, or both, with truecolor ANSI rendering in the terminal. SDL2 supports more than 2,100 controllers and provides direct audio output. SRAM saves load and save automatically, while libretro save states use F5 and F7. Remote play lets a host share a game with a player or spectator; the guest needs no ROM or core, and video, audio, and controller data travel peer to peer over WebRTC. A programmatic API supports loading games and controlling emulation, saves, input, and video. retroemu is free and MIT-licensed. Installation uses `npm install -g retroemu`; it requires Node.js 22 or later and a truecolor terminal. PC Engine CD and ColecoVision require user-provided BIOS dumps.
Good
- Supports more than 25 systems.
- Offers terminal, SDL window, or combined video output.
- Remote play shares video, audio, and controller data peer to peer.
- SRAM saves load and save automatically.
Watch out
- Requires Node.js 22 or later.
- Terminal output requires a truecolor terminal.
- PC Engine CD and ColecoVision need user-supplied BIOS dumps.
Who it suits
retroemu suits users who want to run retro games through a terminal or SDL window, and developers who need a programmatic emulation API. It requires Node.js 22 or later and a truecolor terminal.
Verdict
retroemu combines terminal-based emulation with SDL output, save handling, and remote play. Check its Node.js and display requirements, along with BIOS needs for two systems, before installing.
Plans and prices
From retroemu's own pricing page, checked 11 Oct 2001.
| Plan | Price | What it gives you |
|---|---|---|
| Free | Free | MIT-licensed software; install with npm |
The facts
Each one read from retroemu's own pages, with the date it was checked.
Where it runs
- BIOS limit
- PC Engine CD and ColecoVision require users to provide their own BIOS dumps because the README says no free replacement exists.checked 11 Oct 2001
What it does
- Controllers and audio
- The README says SDL2 supports more than 2,100 controllers with automatic mapping and provides direct SDL2 audio output.checked 11 Oct 2001
- Display requirement
- Terminal output requires a truecolor terminal; the README names iTerm2, Kitty, Alacritty, Windows Terminal, and GNOME Terminal as examples.checked 11 Oct 2001
- Install and runtime requirement
- The README gives `npm install -g retroemu` as the installation command and requires Node.js 22 or later.checked 11 Oct 2001
- Integration
- Frontend applications can launch retroemu with an IPC channel and control it through JSON-RPC.checked 11 Oct 2001
- Integrations
- The project uses libretro cores and SDL2, and documents WebRTC remote play using node-datachannel and hsync for signaling.checked 5 Oct 2001
- License
- The repository lists the project license as MIT.checked 11 Oct 2001
- Limits
- PC Engine CD and ColecoVision require BIOS dumps supplied by the user; the README says most other listed systems do not require one.checked 5 Oct 2001
- Native game formats
- It can also run WASM wasmcart games and JavaScript jsgame games through its rendering pipeline.checked 11 Oct 2001
- Programmatic use
- The package exposes a programmatic API for loading games and controlling emulation, saves, input, and video.checked 5 Oct 2001
- Purpose
- retroemu runs classic console games in a terminal using libretro cores compiled to WebAssembly.checked 11 Oct 2001
- Remote play
- Remote play lets a host share a game with a joining player or spectator, with video, audio, and controller input sent peer-to-peer over WebRTC.checked 11 Oct 2001
- Remote play signaling
- The README says the signaling server brokers the WebRTC handshake and then leaves the loop, seeing about 3 KB of data.checked 5 Oct 2001
- Requirements and installation
- The README requires Node.js 22 or later and a truecolor terminal, and gives `npm install -g retroemu` as the installation command.checked 5 Oct 2001
- Saves
- Battery-backed SRAM is saved automatically on quit, and save states can be saved or loaded with F5 and F7.checked 11 Oct 2001
- Security
- The README describes jsgame games as running in a sandboxed realm.checked 11 Oct 2001
- Supported systems
- The README describes support for more than 25 systems, including NES, SNES, Game Boy, Genesis, Atari, and others.checked 5 Oct 2001
- Systems
- The README lists support for more than 25 systems, including NES, SNES, Game Boy, Genesis, Atari, N64, and PlayStation.checked 11 Oct 2001
- Video
- Video can render as ANSI art in the terminal, in an SDL window, or in both at once.checked 11 Oct 2001
- What it does
- retroemu runs retro console games in a terminal with Node.js using libretro cores compiled to WebAssembly.checked 5 Oct 2001
Alternatives to retroemu
- 1
Virtual Jaguar
Free planOpen sourceAndroidiOSWebAPI8.1Free plan - 2

Foxol
Free planAndroidiOSWebLinux8.0From €3.33 a month - 3
SkyEmu
Free planOpen sourceAndroidiOSWebLinux8.0Free plan - 4
Flycast
Free planOpen sourceAndroidLinuxmacOSSelf-hosted7.6Free plan - 5
RetroArch
Free planAndroidiOSWebLinux7.6Free plan - 6
ares
Free planOpen sourceLinuxmacOSSelf-hostedWindows7.5Free plan
