A Work in Progress desktop GUI application to download specific ROMs from the Minerva Archive : https://minerva-archive.org , and PC Game Repacks using libTorrent (With more sources and features coming!), with the hope of being a complete app for sailing the seven seas, downloading music, books, courses, and many more.
DISCLAIMER: This app is in ALPHA. I'm just releasing it as is right now to get feedback and contributions to help polish and improve the app over time, even the current features that are added may have bugs, issues, freezes, or just incomplete and not finished
DISCLAIMER²: this app has been AI-assisted using a local LLM ( Qwen 3.6 35B ) to help with the backend, if without it, I wouldn't have gotten the torrent per-file downloading system working, and I would have shot myself dead
- ROM Browsing : Browse a local SQLite-indexed ROM catalog covering 70+ console platforms. Filter by console, source (No-Intro, Redump, TOSEC, etc.), and per-console variants.
- Smart Torrent Engine: Uses
libtorrent 2.0.13to download only the requested ROM file from multi-gigabyte torrent dumps, via a persistent queue with pause/resume/retry/cancel controls. - PC Repacks : Browse and download PC Game Repacks ( Currently FitGirl for now )
- Download Manager: Real-time download queue with drag-and-drop reordering, live speed/progress/seed stats, per-torrent settings (speed limits, peer caps, ratio/time limits, force recheck).
- Console-First Classification: Automatic console detection from the Minerva archive naming scheme with per-console variant support (Retail, Encrypted/Decrypted, BIOS, Demo, Prototype, Homebrew, etc.).
- Dark & Light Theme: Full Light/Dark/Auto theming via QFluentWidgets, with a shared palette so every widget stays in sync.
- Persistent Queue: Download queue survives app restarts. Partially downloaded torrents resume from disk rather than starting from scratch.
- Per-Torrent Concurrency Controls: Global and per-item download/upload speed limits, max peer caps, seed ratio and time limits.
- Index Sync — Downloads the
Caprico1/Minerva-archive-idsmarkdown index from GitHub, parses console/provider/torrent/file-ID metadata, classifies each entry into the correct console family, deduplicates by provider, and bulk-inserts into a local SQLite database. - Browse & Search — Queries the SQLite index by name, console, source, and variant with offset-based pagination (30 items per page).
- Download — Fetches the
.torrentfile from the Minerva CDN (cdn.minerva-archive.org), adds it to a libtorrent session, selects only the requested file from within the torrent, and writes the result intodownloads/{Console}/{Game Title}/.
- ROM downloading
- Torrent support
- Multi-console support
- Download manager
- PC Games (Repacks..)
- DAT Support
- Updates & DLC (You can find some, but it isn't very reliable)
- Media downloads (Music, Books, Courses..)
- Localization
- Linux (never™)
- more ig
|
|
|
|
|
|
|
|
- Minerva Archive
- FitGirl Repacks
- More... like nopaystation.. etc
- Not all Consoles have their variant system working yet
- Download manager is still quirky with a lot of files, currently it is recommended to download about 3 files at once. Needs more testing ( it's improving )
- The accent color option is a placeholder
- Light mode sucks
- And more idk? I need more testing, that's why I'm releasing it in alpha, so I get more feedback on the thing rather than just blindly making it.
- Python 3.10+
pip install -r requirements.txtYou can do that in the GUI or with commands
python src/core/indexer.py --syncThis downloads the latest index markdown files, parses them, and populates src/data/minerva_index.db.
It is also recommended to resync every release, not only that will insure you have the latest files,
but also if there is a change in anything list related in the app, you will be updated as well
python src/main.pyor just open the exe in releases
# Sync the index (clone + parse + upsert)
python src/core/indexer.py --sync
# Search for a ROM from the command line
python src/core/indexer.py --search "Mario"
# Show index statistics
python src/core/indexer.py --stats# Windows
build.batThe output will be in dist/PiraChest/.
Settings are stored in .config/pirachest_settings.json relative to the project root. You can edit them manually or use the built-in Settings dialog.
| Setting | Default | Description |
|---|---|---|
download_dir |
downloads/ |
Root folder for all ROM downloads |
seed_time |
0 |
Minutes to seed after download completes |
speed_limit |
0 |
Download speed cap in KB/s (0 = unlimited) |
upload_speed_limit |
500 |
Upload speed cap in KB/s (0 = unlimited) |
auto_download |
false |
Start download immediately when a ROM is selected |
delete_torrent_after |
true |
Remove cached .torrent file after download |
theme_mode |
Dark |
Dark, Light, or Auto (follows system theme) |
├── src/
│ ├── main.py # Application entry point
│ ├── core/
│ │ ├── config.py # Centralised configuration (paths, libtorrent defaults, settings)
│ │ ├── console_mapper.py # Console classification from archive torrent names
│ │ ├── console_variants.py # Per-console variant metadata (Retail, BIOS, etc.)
│ │ ├── database.py # SQLite schema, connection, queries, and pagination
│ │ ├── download_manager.py # libtorrent 2.0.13 queue engine with persistence
│ │ ├── indexer.py # GitHub markdown index fetch, parse, and DB sync
│ │ ├── sync.py # Background sync worker (QThread)
│ │ └── theme.py # Shared colour palette for Light/Dark mode
│ └── gui/
│ ├── main_window.py # FluentWindow with Home, Download Manager, Settings pages
│ ├── settings_dialog.py # Settings modal (download dir, seeding, speed limits)
│ ├── splash.py # Splash screen icon lookup
│ ├── download_manager_panel.py # Download queue page with live stats
│ ├── rom_details_panel.py # Right-side ROM metadata card (local DB only)
│ └── rom_table_model.py # Paginated QAbstractTableModel for ROM table
├── build.bat
├── PiraChest.spec # PyInstaller spec file
├── requirements.txt
└── README.md
Also, special thanks to spicysaltysparty for creating the logo
For educational and archival purposes only.
This tool is designed to interact with the Minerva Archive, a community repository of ROMs distributed for educational and archival purposes. Users are responsible for ensuring that their use of downloaded ROMs complies with all applicable laws and regulations in their jurisdiction.
The Minerva Archive and its contributors do not endorse or encourage copyright infringement. Please only download ROMs for software you own a legal copy of, or for software that is in the public domain.







