
Trestle is a cross-platform Minecraft Java Edition launcher built with Kotlin and Compose Multiplatform.
Trestle provides:
Microsoft authentication is not implemented. Desktop launch validation stops with a sign-in requirement instead of creating an offline account.
The shared module contains the interface, product logic, network clients, persistence, installer, and domain model. Platform source sets provide runtime adapters and app storage paths.
Use the included Gradle wrapper. You do not need a separate Gradle installation.
./gradlew :desktopApp:run
Modrinth works without an access key. CurseForge requires a key that CurseForge issued for Trestle.
If you have an approved Trestle key, set it before you build or run the application:
export TRESTLE_CURSEFORGE_API_KEY="your-approved-key"
./gradlew :desktopApp:run
The Android build reads the same environment variable and adds it to the application manifest. Do not use the key from another launcher.
./gradlew :androidApp:assembleDebug
The command creates the debug APK under androidApp/build/outputs/apk/debug.
Trestle shows CurseForge as unavailable when the key is not set. Modrinth search and installation remain available.
Run the shared tests:
./gradlew :shared:allTests
Run Android lint:
./gradlew :androidApp:lintDebug
Compile the desktop app:
./gradlew :desktopApp:classes
GitHub Actions runs these checks for each pull request and each push to main.
androidApp/ Android application and entry point
desktopApp/ Desktop application and entry point
shared/ Shared UI, resources, domain model, and tests
gradle/ Version catalog and Gradle wrapper files
licenses/ Licenses for bundled third-party assets
Trestle source code uses the Apache License 2.0.
The bundled Barlow fonts use the SIL Open Font License 1.1. See licenses/OFL-Barlow.txt.