Cross-platform retro game launcher based on eXoDOS
Rust
282
407 commits
updated Sep 25, 2026
A cross-platform launcher for the eXoDOS collections. Browse, download, and play DOS, Windows 3.x, Windows 9x, and ScummVM games on Linux, macOS, and Windows.
Exodium would not exist without the extraordinary work of the eXoDOS project and its creator, eXo. Over many years, eXo and the eXoDOS community have painstakingly collected, configured, and preserved over 9,000 DOS games, each one pre-configured to run out of the box. The result is an irreplaceable archive of gaming history.
Exodium is a frontend client for that collection. It does not host or distribute any game files; it uses the eXoDOS torrents that you seed yourself. If you find value in Exodium, please consider supporting the eXoDOS project directly at retro-exo.com.
eXoDOS ships with a Windows-only LaunchBox frontend and requires downloading the full ~500 GB torrent to browse the catalogue. Exodium replaces that frontend with a small native app for Linux, macOS, and Windows.
Compatibility note: DOS and Windows 3.x games run under the bundled DOSBox Staging, ScummVM games under the pinned ScummVM build Exodium fetches for them. A handful are tuned for DOSBox-ECE specials such as 3dfx Voodoo settings or the GunStick light gun and may look or behave slightly differently than under the original Windows eXoDOS setup. Windows 9x games need DOSBox-X or 86Box, which Exodium fetches with your first Windows 9x download.
Game detail panel with description, metadata, and one download size per available language.
Per-game media gallery. Flip through original box scans, magazine ads, and in-game shots.
Several games download at once, straight from the eXoDOS torrents, with the peer count and how much you have shared back.
Download the binary for your platform from the latest release.
Because Exodium is not yet signed with an Apple Developer ID, macOS Gatekeeper will block it on first launch with "Exodium is damaged and cannot be opened". To bypass this, run the following once after dragging the app to Applications:
xattr -cr /Applications/Exodium.app
This removes the quarantine attribute that macOS adds to downloaded files. The app is otherwise unmodified - the binary itself is built and distributed directly from this repo's CI pipeline.
Install the .deb (Debian/Ubuntu) or run the .AppImage directly (any distro). The AppImage needs chmod +x first.
One installer is provided: Exodium_<version>_x64-setup.exe (NSIS). It is currently unsigned, so Windows will block it by default. Trusted code signing is planned for a future release. (Releases up to v0.8.3 also shipped an .msi; it was dropped because the auto-updater delivers NSIS updates, and Windows cannot cleanly update an MSI install with an NSIS installer.)
Install: NSIS .exe + Unblock-File
Download Exodium_<version>_x64-setup.exe.
Open PowerShell and unblock the downloaded file:
Unblock-File "$HOME\Downloads\Exodium_<version>_x64-setup.exe"
Run the installer normally. SmartScreen may still show a warning - click "More info" → "Run anyway".
If Unblock-File is unavailable, right-click the .exe → Properties → tick "Unblock" at the bottom of the General tab → OK.
If downloads are stuck at 0%: check %APPDATA%\Exodium\logs\exodium.log for error details. Firewall issues are one possible cause - allow both "Private" and "Public" networks for Exodium under Windows Security → Firewall & network protection → Allow an app through firewall.
| Layer | Technology |
|---|---|
| Shell | Tauri v2 (frameless window, decorations: false) |
| Frontend | SolidJS + TypeScript + Vite |
| UI Components | Ark UI headless (@ark-ui/solid) |
| Backend | Rust |
| Database | SQLite via rusqlite (WAL mode, pre-built and shipped with the app) |
| Torrent | librqbit with selective file downloads |
pnpm tauri dev if not presentinit-dev only (brew install aria2 / apt install aria2)init-dev only (pip3 install Pillow)DOSBox Staging is downloaded automatically by
init-dev. No manual installation needed.
pnpm install
# Download thumbnails and the DOSBox binary (one-time, ~2-5 GB depending on language packs)
pnpm run init-dev
pnpm tauri dev
init-dev is idempotent - already-downloaded files and existing thumbnails are skipped. Use --force to regenerate thumbnails. Data is cached at ~/.exodium-dev/ (override with XDO_DEV_DATA=/your/path).
Language pack options:
pnpm run init-dev --glp # German Language Pack (~23 GB)
pnpm run init-dev --slp # Spanish Language Pack (~3.8 GB)
pnpm run init-dev --plp # Polish Language Pack (~800 MB)
pnpm run init-dev --all-packs
| Command | Description |
|---|---|
pnpm tauri dev | Start the app in development mode |
pnpm run init-dev | First-time setup: DOSBox binary + thumbnails |
pnpm run get-dosbox | Download DOSBox Staging binary only |
pnpm test | Run frontend tests (Vitest) |
pnpm run test:all | Frontend + Rust tests |
The pre-built SQLite database (metadata/exodium.db.gz) ships with the app. To regenerate it from the bundled XML sources:
cd src-tauri
cargo run --example generate_db
gzip -k ../metadata/exodium.db
exodium/
├── src/ SolidJS frontend
│ ├── api/tauri.ts Typed invoke() wrappers
│ ├── components/ GameCard, GameDetailPanel, SearchBar, WindowFrame, ...
│ ├── pages/ Intro, Setup, Library
│ └── stores/ games, downloads, thumbnails
├── src-tauri/
│ └── src/
│ ├── examples/ generate_db build tool (not shipped)
│ ├── commands/ Tauri commands (games, setup, updates)
│ ├── db/ SQLite schema + queries
│ ├── import/ LaunchBox XML parser
│ └── torrent/ librqbit download manager
├── metadata/ Bundled XML sources + pre-built DB (.gz)
├── scripts/
│ ├── init-dev.sh First-time dev setup
│ └── gen_thumbnails.py Resize + rename box art from XODOSMetadata.zip
├── manifest.json Update-check manifest (torrent infohashes + thumbnail pack info)
├── thumbnails/eXoDOS/ Shortcode-keyed game thumbnails (gitignored, generated by init-dev)
└── torrents/ .torrent files for every collection
Found a bug or have a question? Open an issue - include exodium.log from the app's log folder (Settings → Open log folder) for download or launch problems.
If Exodium is useful to you, consider donating via GitHub Sponsors or Ko-fi. Donations go toward OS code-signing certificates (Apple Developer ID, Windows signing) so the install warnings on macOS and Windows can go away.
MIT - see LICENSE.
Exodium does not include any game files, ROM images, or copyrighted eXoDOS assets. All game data is downloaded via the official eXoDOS torrents.
407 commits
Rust
51.4%
TypeScript
36.6%
CSS
6.2%
Python
3.2%
Shell
2.5%
Cross-platform retro game launcher based on eXoDOS
Rust
282
407 commits
updated Sep 25, 2026
A cross-platform launcher for the eXoDOS collections. Browse, download, and play DOS, Windows 3.x, Windows 9x, and ScummVM games on Linux, macOS, and Windows.
Exodium would not exist without the extraordinary work of the eXoDOS project and its creator, eXo. Over many years, eXo and the eXoDOS community have painstakingly collected, configured, and preserved over 9,000 DOS games, each one pre-configured to run out of the box. The result is an irreplaceable archive of gaming history.
Exodium is a frontend client for that collection. It does not host or distribute any game files; it uses the eXoDOS torrents that you seed yourself. If you find value in Exodium, please consider supporting the eXoDOS project directly at retro-exo.com.
eXoDOS ships with a Windows-only LaunchBox frontend and requires downloading the full ~500 GB torrent to browse the catalogue. Exodium replaces that frontend with a small native app for Linux, macOS, and Windows.
Compatibility note: DOS and Windows 3.x games run under the bundled DOSBox Staging, ScummVM games under the pinned ScummVM build Exodium fetches for them. A handful are tuned for DOSBox-ECE specials such as 3dfx Voodoo settings or the GunStick light gun and may look or behave slightly differently than under the original Windows eXoDOS setup. Windows 9x games need DOSBox-X or 86Box, which Exodium fetches with your first Windows 9x download.
Game detail panel with description, metadata, and one download size per available language.
Per-game media gallery. Flip through original box scans, magazine ads, and in-game shots.
Several games download at once, straight from the eXoDOS torrents, with the peer count and how much you have shared back.
Download the binary for your platform from the latest release.
Because Exodium is not yet signed with an Apple Developer ID, macOS Gatekeeper will block it on first launch with "Exodium is damaged and cannot be opened". To bypass this, run the following once after dragging the app to Applications:
xattr -cr /Applications/Exodium.app
This removes the quarantine attribute that macOS adds to downloaded files. The app is otherwise unmodified - the binary itself is built and distributed directly from this repo's CI pipeline.
Install the .deb (Debian/Ubuntu) or run the .AppImage directly (any distro). The AppImage needs chmod +x first.
One installer is provided: Exodium_<version>_x64-setup.exe (NSIS). It is currently unsigned, so Windows will block it by default. Trusted code signing is planned for a future release. (Releases up to v0.8.3 also shipped an .msi; it was dropped because the auto-updater delivers NSIS updates, and Windows cannot cleanly update an MSI install with an NSIS installer.)
Install: NSIS .exe + Unblock-File
Download Exodium_<version>_x64-setup.exe.
Open PowerShell and unblock the downloaded file:
Unblock-File "$HOME\Downloads\Exodium_<version>_x64-setup.exe"
Run the installer normally. SmartScreen may still show a warning - click "More info" → "Run anyway".
If Unblock-File is unavailable, right-click the .exe → Properties → tick "Unblock" at the bottom of the General tab → OK.
If downloads are stuck at 0%: check %APPDATA%\Exodium\logs\exodium.log for error details. Firewall issues are one possible cause - allow both "Private" and "Public" networks for Exodium under Windows Security → Firewall & network protection → Allow an app through firewall.
| Layer | Technology |
|---|---|
| Shell | Tauri v2 (frameless window, decorations: false) |
| Frontend | SolidJS + TypeScript + Vite |
| UI Components | Ark UI headless (@ark-ui/solid) |
| Backend | Rust |
| Database | SQLite via rusqlite (WAL mode, pre-built and shipped with the app) |
| Torrent | librqbit with selective file downloads |
pnpm tauri dev if not presentinit-dev only (brew install aria2 / apt install aria2)init-dev only (pip3 install Pillow)DOSBox Staging is downloaded automatically by
init-dev. No manual installation needed.
pnpm install
# Download thumbnails and the DOSBox binary (one-time, ~2-5 GB depending on language packs)
pnpm run init-dev
pnpm tauri dev
init-dev is idempotent - already-downloaded files and existing thumbnails are skipped. Use --force to regenerate thumbnails. Data is cached at ~/.exodium-dev/ (override with XDO_DEV_DATA=/your/path).
Language pack options:
pnpm run init-dev --glp # German Language Pack (~23 GB)
pnpm run init-dev --slp # Spanish Language Pack (~3.8 GB)
pnpm run init-dev --plp # Polish Language Pack (~800 MB)
pnpm run init-dev --all-packs
| Command | Description |
|---|---|
pnpm tauri dev | Start the app in development mode |
pnpm run init-dev | First-time setup: DOSBox binary + thumbnails |
pnpm run get-dosbox | Download DOSBox Staging binary only |
pnpm test | Run frontend tests (Vitest) |
pnpm run test:all | Frontend + Rust tests |
The pre-built SQLite database (metadata/exodium.db.gz) ships with the app. To regenerate it from the bundled XML sources:
cd src-tauri
cargo run --example generate_db
gzip -k ../metadata/exodium.db
exodium/
├── src/ SolidJS frontend
│ ├── api/tauri.ts Typed invoke() wrappers
│ ├── components/ GameCard, GameDetailPanel, SearchBar, WindowFrame, ...
│ ├── pages/ Intro, Setup, Library
│ └── stores/ games, downloads, thumbnails
├── src-tauri/
│ └── src/
│ ├── examples/ generate_db build tool (not shipped)
│ ├── commands/ Tauri commands (games, setup, updates)
│ ├── db/ SQLite schema + queries
│ ├── import/ LaunchBox XML parser
│ └── torrent/ librqbit download manager
├── metadata/ Bundled XML sources + pre-built DB (.gz)
├── scripts/
│ ├── init-dev.sh First-time dev setup
│ └── gen_thumbnails.py Resize + rename box art from XODOSMetadata.zip
├── manifest.json Update-check manifest (torrent infohashes + thumbnail pack info)
├── thumbnails/eXoDOS/ Shortcode-keyed game thumbnails (gitignored, generated by init-dev)
└── torrents/ .torrent files for every collection
Found a bug or have a question? Open an issue - include exodium.log from the app's log folder (Settings → Open log folder) for download or launch problems.
If Exodium is useful to you, consider donating via GitHub Sponsors or Ko-fi. Donations go toward OS code-signing certificates (Apple Developer ID, Windows signing) so the install warnings on macOS and Windows can go away.
MIT - see LICENSE.
Exodium does not include any game files, ROM images, or copyrighted eXoDOS assets. All game data is downloaded via the official eXoDOS torrents.
407 commits
Rust
51.4%
TypeScript
36.6%
CSS
6.2%
Python
3.2%
Shell
2.5%