emulatormayo.← Home

Install Emulatormayo on macOS, Windows & Linux

Install a desktop player with EmulatorJS included, or self-host the browser player. You supply your own authorized game files. EmulatorJS supplies the emulation engine.

By Quentin Mayo · Free and open source

Install the desktop app

Download the Mac DMG, Windows x64 installer or Linux x64 AppImage from GitHub Releases. Mac users can choose Apple Silicon or Intel. No Node.js, npm, Docker or server setup is needed; the pinned EmulatorJS runtime is bundled.

  1. Open the Mac DMG and copy Emulatormayo to Applications, or run the Windows installer. On Linux, make the AppImage executable and open it.
  2. Select a supported system, choose your local game file and provide a BIOS file if the selected core needs one.
  3. Start the player, configure controls through EmulatorJS, and save or export your progress before leaving.

Mac apps are ad-hoc signed and not notarized; Windows installers are unsigned. Steam Deck users can add the Linux AppImage as a non-Steam app and use --deck for fullscreen. Physical Steam Deck and controller testing is pending. There is no automatic updater; install later releases manually.

Saves stay in the app's local browser profile. The app uses a stable secure local origin, native file selection and export dialogs, and asks before leaving a running game. Export backups before deleting app data or moving devices. See the desktop guide for details.

Or self-host the browser player

The following steps are optional. Use a machine with Docker, Docker Compose and curl, a modern browser and your own authorized game file. Some systems require a BIOS file. The self-hosted player is a separate service; the public website does not connect to a private game library.

No Android APK is released yet. A self-hosted player can be opened in a compatible browser on a phone or tablet. Hardware, core and browser support determine what runs.

1. Get the player source

Clone the public repository and enter the self-hosted bundle. The public Next.js website and private player are independent services.

git clone https://github.com/securelyprogramming/emulatormayo.quentinmayo.com.git
cd emulatormayo.quentinmayo.com/selfhost

The self-hosting README is the source of truth for the current commands and storage layout.

2. Prepare EmulatorJS and start Docker

export EMULATORMAYO_ROOT="$PWD/storage"
./prepare-runtime.sh
docker compose up -d

The preparation script downloads the official, pinned EmulatorJS 4.2.3 runtime and extracts it with a disposable Python container. It does not download games. The runtime and any games stay outside Git and retain their own licenses.

Open http://127.0.0.1:8097 on the host. The container binds to localhost by default. For access from a trusted LAN, set EMULATORMAYO_BIND to the host’s LAN IP before running Docker Compose. Use that host IP and port in your device’s browser.

3. Select a system and a local game file

Choose the supported system, select your local game and provide a BIOS file if the selected core needs one. Local selection uses a browser object URL: the file is read by your browser rather than uploaded to an Emulatormayo backend. Emulator runtime assets are fetched from your configured host.

EmulatorJS provides the emulator, on-screen controls, controller configuration and supported save features. Use the player’s settings to map your controller. Not every system, core or controller works on every device.

Keep the player private and back up saves

The included player has no login. Keep it on a trusted network or place it behind an authenticated reverse proxy. Use HTTPS for features that need a secure context, including controller APIs in some browsers and threaded cores. The included COOP/COEP headers do not turn plain HTTP into a secure context.

Saves and save states use EmulatorJS’s browser storage and export controls. Export backups before clearing browser data or moving to another browser or device. The player does not provide cloud save synchronization.

Emulatormayo is independent of EmulatorJS; upstream runtime and core licenses apply. No games, BIOS files, keys or third-party ROM sourcing links are included. Use only content you are authorized to access. Downloads and use are at your own risk.

Fuel the next save point.

I need help affording my AI token usage :) If Emulatormayo makes your setup a little more fun, buy the developers a coffee. Always optional. Always appreciated.