Developer RyouVC , working with his wife, created Alumulemu , a library manager for Nintendo Switch consoles born out of the need to overcome the perceived slowness of existing solutions.

Written in Rust for maximum speed, this program is intended as a compatible alternative to Tinfoil , designed to be simple to set up, use and maintain.
1 of 3



Alumulemu is a repository manager for the Horizon ecosystem (the Switch console’s operating system), allowing you to host your own Tinfoil repository , exporting it to a JSON format compatible with Tinfoil or other similar clients.
Still in development and not ready for production use, the project has future ambitions, such as creating a standalone client to access the repositories without depending on Tinfoil .
The core of Alumulemu is based on SurrealDB for efficient data management, offering flexibility with a built-in instance or the ability to connect to an external instance, and Axum for the server side.
Among its features are a web interface, built with Vue.js and Tailwind CSS , which allows you to manage the server and view package metadata, and a REST API to interact with the repository, which is planned for future documentation.
The program already supports features such as default file hiding and increased thumbnail size, but it looks ahead with ambitious plans: from the integration of other repositories (even non-HTTP ones, such as Google Drive or 1fichier) to caching for faster access, up to support for Tinfoil DRM encryption .
Usage
To use Alumulemu , you need:
- A Nintendo Switch or Switch 2 console (optional, jailbroken).
- A server to host Alumulemu .
- An instance of SurrealDB (optional, recommended for better performance).
- Console-specific encryption keys (required, obtain from your device or another).
- A stable network connection (optional).
- Dump your games (optional).
Configuration
- Extract keys from your console using Lockpick_RCM .
- (Optional) Set up a SurrealDB instance , using the official Docker image or the RocksDB backend included with Alumulemu.
- Download the OCI image from the GitHub Container Registry .
- Run the container with the required environment variables and volumes.
Configuring environment variables
Alumulemu is configured via environment variables. The following are required or recommended:
- ALU_DATABASE_URL : URL of the SurrealDB instance. If not set, RocksDB backend will be used . (Example:
surrealkv:///dataorsurrealkv://database) - ALU_DATABASE_AUTH_METHOD : Authentication method for SurrealDB (optional, default: no authentication) . Available options:
none,root(future:namespace auth). - ALU_SURREAL_ROOT_USERNAME / ALU_SURREAL_ROOT_PASSWORD : Credentials for the root user (required if authentication is set to
root) . - ALU_SURREAL_NAMESPACE / ALU_SURREAL_DATABASE : Namespace and database to use (default:
alumulemu) . - ALU_PRIMARY_REGION : Primary region of the eShop (default:
US) . - ALU_PRIMARY_LANGUAGE : Primary language of the eShop (default:
en) . - ALU_SECONDARY_LOCALES : Secondary eShop languages (example:
JP_ja,US_esfor Japanese and Spanish titles) . - ALU_PROD_KEYS / ALU_TITLE_KEYS : Paths to Switch production key and title key files (needed to decrypt games and DLC) .
- ALU_HOST : Server IP address and port (default:
0.0.0.0:3000) . - ALU_CACHE_DIR : Directory for the title database cache (default:
.or/var/cache/alumulemuif in container) . - ALU_PUBLIC : Public mode (default:
false– if enabled, the API will be accessible without authentication, but administrative endpoints will still require login) .
Database Performance Optimization
You can choose an alternative SurrealDB backend to improve performance:
- surrealkv (default, faster but less reliable for local storage)
- rocksdb (more reliable, recommended for production environments)
- tikv (distributed, more scalable, suitable for large installations)
You can also connect to an external SurrealDB instance via WebSockets. Example configuration:
- ALU_DATABASE_URL=rocksdb:///data (for RocksDB)
- ALU_DATABASE_URL=surrealkv:///data (for SurrealKV)
- ALU_DATABASE_URL=ws://localhost:8000 (for a remote instance)
Access to titles
Alumulemu provides a web interface to view title metadata. Simply access the server URL from a browser.
Use with Tinfoil
Alumulemu supports a Tinfoil- compatible JSON index . To access the repository, add the following URL in Tinfoil:http://<your-server-ip>:3000/api/tinfoil
Execution
You can run the Docker/Podman container using the provided docker-compose.yml file . Alternatively, you can build the project from source code.
Note
On first run, authentication is disabled if there are no users in the database. To enable authentication, create a user on the page /admin/users. Once the user is created, the server will require authentication to log in.
It is strongly recommended that you enable authentication before running the server in a public environment.
Changelog
- Implemented RBAC ( Role-Based Access Control ) authentication by@korewaChino in #3
- New users will now have Viewer permissions assigned by default.
- The first user created will receive Admin permissions to simplify setup.
- Viewer has read-only access, Editor can import, scan, or edit game data, while Admin can create or remove users.
- Replaced the import plugin API with a new, simplified JSON-based standard ( #4 )
- Tinfoil clients accessing the root path (
/) will now be automatically redirected to/api/tinfoil. - Added a new tab
Downloadsto track downloads. - Improved handling of invalid queries to avoid unexpected crashes.
- General UI fixes :
- The title list is now correctly centered in the grid.
- Fixed padding , removing black bars in title list before background.
- Improved mobile compatibility of the title list and its pages .
Download: Source code Alumulemu v0.2.0
Source: gbatemp.net
