A deterministic Minecraft launcher for reproducible, inspectable game environments.
English | Chinese
DropOut is a modern, developer-grade Minecraft launcher built around one idea: a game setup should be traceable like a software project.
Most launchers focus on starting the game. DropOut also keeps the surrounding environment understandable: account state, Java runtime, game version, loader, instance directory, assets, libraries, and launch logs.
Minecraft environments are complex systems. DropOut treats them as versioned workspaces.
DropOut is a desktop application with three active surfaces:
| Surface | Path | Stack | Purpose |
|---|---|---|---|
| Desktop shell | src-tauri/ |
Rust, Tauri 2 | Authentication, downloads, Java/version resolution, instance storage, launch orchestration |
| Launcher UI | packages/ui/ |
React 19, shadcn/ui, Vite/Rolldown, Tailwind CSS 4 | Main application interface rendered inside the Tauri webview |
| Documentation | packages/docs/ |
Fumadocs, React 19, React Router 7 | Bilingual product and developer documentation |
The Rust core owns side effects. The React UI invokes Tauri commands and renders state. The docs package explains the product, architecture, and user workflows.
- Microsoft authentication - device-code OAuth flow, Minecraft Services login, token refresh, and persisted account state.
- Offline accounts - local accounts for testing or non-network play.
- Launch command center - one state-driven action for sign-in, repair, download, launch, stop, and failure recovery, backed by real readiness checks.
- Instance library - searchable and sortable grid/list views, progressive readiness, active-instance details, and guarded management actions.
- Instance system - isolated game directories with per-instance notes, memory and Java overrides, version, loader, mods, saves, and migration entry points.
- Automatic memory - live RAM and mod-count-aware heap sizing, protected system headroom, launch pressure checks, and per-instance overrides.
- Minecraft version management - install, verify, list, delete, and launch local versions.
- Fabric and Forge support - loader version discovery plus installer flows for modded instances.
- Java management - local Java detection, compatibility checks, Adoptium catalog lookup, downloads, resume, and cancellation.
- Concurrent downloads - asset/library queues with progress events and recovery paths.
- Configuration editor - edit launcher JSON with locally bundled Monaco, schema diagnostics, formatting, keyboard save, and discard protection.
- Release feed - GitHub release notes surfaced on the home screen.
- Game assistant - optional local or OpenAI-compatible helper for logs, crashes, and configuration questions.
Prebuilt DropOut bundles are published on the releases page. Running the launcher does not require Rust or Node.js; those are only needed for the development build.
| Platform | Architecture | Download | Install |
|---|---|---|---|
| Windows 10/11 | x86_64, ARM64 | NSIS -setup.exe |
Run the installer, then launch DropOut from the Start menu. |
| macOS | Apple Silicon, Intel | .dmg |
Open the disk image and drag DropOut into Applications. If macOS blocks the first launch, allow it in System Settings → Privacy & Security. |
| Debian / Ubuntu | x86_64, ARM64 | .deb |
sudo dpkg -i Dropout_*.deb, then sudo apt-get install -f if dependencies are missing. |
| Fedora / RHEL | x86_64, ARM64 | .rpm |
sudo dnf install ./Dropout-*.rpm |
| Any glibc Linux | x86_64, ARM64 | .AppImage |
chmod +x Dropout_*.AppImage && ./Dropout_*.AppImage |
| Arch Linux | x86_64, ARM64 | AUR dropout-bin |
yay -S dropout-bin (or paru -S dropout-bin) |
| Alpine Linux 3.22 | x86_64 | -musl.tar.gz |
Install the runtime libraries, verify the checksum, extract, and run ./dropout (see below). |
Asset names embed the version and architecture, for example Dropout_0.2.0-rc.2_amd64.AppImage; pick the file matching your OS and your CPU suffix (x64/amd64/x86_64 or arm64/aarch64).
Every desktop asset has signed GitHub build provenance, so you can verify that it came from this repository's release workflow before installing:
gh attestation verify ./downloaded-asset -R HydroRoll-Team/DropOutAlpine Linux needs the native WebKitGTK libraries before the musl archive can start:
sudo apk add ca-certificates gtk+3.0 libayatana-appindicator librsvg openssl webkit2gtk-4.1
sha256sum -c Dropout_*-musl.tar.gz.sha256 &&
tar -xzf Dropout_*-musl.tar.gz &&
cd Dropout_*-musl &&
./dropoutThe musl archive is dynamically linked against Alpine packages; on glibc distributions use the AppImage, .deb, or .rpm instead. To build a bundle yourself, see Build A Desktop Release.
Step-by-step install instructions, a first-launch walkthrough, and troubleshooting live in the documentation: English · 简体中文.
- Rust toolchain from rustup.rs
- Node.js 22+
- pnpm 10+
- OS dependencies from the Tauri v2 prerequisites
This repository does not use pnpm-workspace.yaml. Install each JavaScript surface against the root lockfile:
pnpm install
pnpm -C packages/ui --lockfile-dir "$PWD" install
pnpm -C packages/docs --lockfile-dir "$PWD" installpnpm install also runs the repository prepare script, which installs the local prek hooks.
pnpm exec tauri devTauri starts the React UI dev server through src-tauri/tauri.conf.json and opens the desktop window at http://localhost:1420.
pnpm exec tauri buildRelease artifacts are produced by Tauri under the Rust target directory and configured bundle directories.
pnpm -C packages/ui dev
pnpm -C packages/docs devThe UI can run in a browser for layout work, but Tauri-backed flows require the desktop shell. For repeatable browser-only UI work, use the development fixtures and Playwright workflow documented in packages/ui/README.md.
| Task | Command |
|---|---|
| Install root tooling | pnpm install |
| Install UI dependencies | pnpm -C packages/ui --lockfile-dir "$PWD" install |
| Install docs dependencies | pnpm -C packages/docs --lockfile-dir "$PWD" install |
| Run desktop app | pnpm exec tauri dev |
| Build desktop app | pnpm exec tauri build |
| Run UI dev server | pnpm -C packages/ui dev |
| Build UI bundle | pnpm -C packages/ui build |
| Lint UI | pnpm -C packages/ui lint |
| Test UI fixtures, accessibility, and screenshots | pnpm -C packages/ui test:ui |
| Update reviewed UI screenshot baselines | pnpm -C packages/ui test:ui:update |
| Run docs site | pnpm -C packages/docs dev |
| Build docs site | pnpm -C packages/docs build |
| Check docs types/content | pnpm -C packages/docs types:check |
| Validate Cloudflare docs deploy | pnpm deploy:docs:dry-run |
| Deploy docs to Cloudflare Workers | pnpm deploy:docs |
| Test Rust workspace | cargo test --workspace |
Deployment maintenance is documented in docs/cloudflare-deployment.md.
.
|-- assets/ # README and project media
|-- crates/ # Rust support crates and macros
|-- packages/
| |-- docs/ # Fumadocs + React Router documentation site
| `-- ui/ # React launcher frontend
|-- scripts/ # Release and maintenance scripts
|-- src-tauri/ # Rust desktop backend and Tauri configuration
|-- Cargo.toml # Rust workspace
|-- package.json # Root tooling
`-- pnpm-lock.yaml # Shared pnpm lockfile
The command boundary is registered in src-tauri/src/main.rs. Feature modules live under src-tauri/src/core/:
auth.rsandaccount_storage.rshandle Microsoft and offline account state.instance.rsowns isolated instance directories and metadata.game_version.rs,manifest.rs, andmigration.rsresolve Minecraft versions and launch rules.fabric.rs,forge.rs,maven.rs, anddownloader.rsinstall loaders, libraries, assets, and version files.java/detects, validates, and persists compatible Java runtimes.modpack/,mods.rs, andcontent_search.rshandle modpack parsing, mod metadata, and content discovery.assistant.rspowers the optional troubleshooting assistant.
The UI keeps long-lived state in packages/ui/src/models/, renders routes from packages/ui/src/pages/, and shares reusable controls from packages/ui/src/components/.
- Account persistence and token refresh
- Microsoft device-code login and offline login
- Java auto-detection and Adoptium download flow
- Fabric and Forge install paths
- Isolated instance/profile system
- GitHub releases integration
- Optional game assistant
- Multi-account switching
- Built-in mods manager
- Custom game directory selection
- Launcher auto-updater
- Reviewed, copy-only directory and archive migration from PCL, HMCL, MultiMC, and Prism Launcher
- Migration conflict previews, cancellation, rollback, and structured compatibility reports
The public roadmap is tracked at https://roadmap.sh/r/minecraft-launcher-dev.
DropOut is built for long-term maintainability. Useful contributions usually improve one of these areas:
- instance and profile workflows
- mod loader compatibility
- Java/runtime detection
- downloader reliability
- UI/UX clarity
- documentation and troubleshooting coverage
Use the standard GitHub flow: fork, branch, commit, and open a pull request against HydroRoll-Team/DropOut. UI contributors should also read the fixture and regression testing guide.
Distributed under the GNU Affero General Public License v3.0. See LICENSE for details.
