Native BitTorrent download manager and streaming package installer for Nintendo Switch homebrew.
DOWNLOAD LATEST - pipensx.nro
Important
pipensx does not include Nintendo keys, firmware, games, or a torrent catalog. Use it only with content you are legally allowed to download and install. The project is not affiliated with Nintendo, RuTracker, or the catalog provider.
Note
This project was developed with substantial assistance from AI tools for code generation, refactoring, testing, review, and documentation. Changes are still built and validated before they are merged.
- native Borealis interface with controller, touch, light/dark, handheld, and docked support
- persistent FIFO queue with pause, resume, retry, recheck, and safe shutdown
- restart-safe piece verification and download recovery
- tracker, DHT, and PEX peer discovery
- live, cached catalog loaded from the allowlisted
Langegen/switch-gamessource - offline magnet resolution when the catalog provides a verified info dictionary
- download-only mode and sequential NSP/NSZ installation while pieces arrive
- Application, Patch, and AddOnContent packages with installed-version checks
- optional debrid fetch via TorBox or a self-hosted TorrServer (no Real-Debrid)
- optional HTTPS/SOCKS proxy for catalog, artwork, and debrid HTTPS traffic
- download diagnostics, speed history, peer state, and extended telemetry
The public build intentionally starts without a bundled catalog or game metadata index. On first use, the Catalog view refreshes from the trusted source and then uses its on-SD cache.
Clone the pinned submodules:
git clone --recurse-submodules https://github.com/i3sey/pipensx.git
cd pipensxRun the portable PC test suite:
make testBuild the Nintendo Switch application after installing devkitPro dependencies:
export DEVKITPRO=/opt/devkitpro
make switchThe resulting application is build-switch/pipensx.nro. See
BUILD.md for dependency installation, golden tests, optional
metadata input, and deployment helpers.
Copy the NRO to:
SD:/switch/pipensx/pipensx.nro
Launch it through hbmenu in application mode by holding R while opening a
game. Album applet mode is rejected because it does not provide enough memory
and network resources for the application.
Runtime data is stored below SD:/switch/pipensx/, including:
queue.bencode
torrents/
downloads/
dht_nodes.bin
catalog/catalog.json
catalog/metadata/
catalog/images/
pipensx.log
The interface displays contextual controller hints. The main actions cover adding torrents, opening details, pausing/resuming, retrying/rechecking, and safely stopping the active task before exit.
The application fetches switch_games.json over HTTPS from an exact
repository-prefix allowlist. Redirects or look-alike hosts are rejected before
catalog bytes are parsed. A failed refresh leaves the last valid SD-card cache
active.
Catalog magnets are resolved from a pre-verified info dictionary when one is available, otherwise through BitTorrent extension-protocol peers. Received metadata is checked against the magnet info hash before entering the normal torrent preview and queue flow.
Only one torrent downloads at a time. Existing files are verified before a task starts or resumes. Interrupted packages restart from their beginning; packages committed before the interruption remain installed and are skipped. Runtime behavior such as sleep/wake and long installs must ultimately be validated on physical Switch hardware.
Read CONTRIBUTING.md before sending a change. Report vulnerabilities privately as described in SECURITY.md; do not place secrets or copyrighted datasets in issues or fixtures.
Historical implementation notes are archived under
docs/plans/. They are not the current roadmap.
pipensx is licensed under the GNU General Public License v3.0. See LICENSE. Third-party components retain their original licenses as listed in THIRD_PARTY_NOTICES.md.