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.
- Instance system - isolated game directories with per-instance notes, memory overrides, Java arguments, version, and loader state.
- 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 - inspect and edit raw JSON/TOML launcher configuration.
- Release feed - GitHub release notes surfaced on the home screen.
- Game assistant - optional local or OpenAI-compatible helper for logs, crashes, and configuration questions.
- 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.
| 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 |
| 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 |
| Test Rust workspace | cargo test --workspace |
.
|-- 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
- Import from PCL, HMCL, MultiMC, Prism Launcher, and other profiles
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.
Distributed under the GNU Affero General Public License v3.0. See LICENSE for details.
