exemple_launcher_with_lightylauncherlib_small.webm
[dependencies]
lighty-launcher = { version = "26.5.12", features = ["vanilla"] }
tokio = { version = "1", features = ["full"] }
anyhow = "1.0"use lighty_launcher::prelude::*;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
AppState::init("MyLauncher")?;
let mut instance = VersionBuilder::new(
"my-instance",
Loader::Vanilla,
"",
"1.21.1",
);
let mut auth = OfflineAuth::new("Player123");
let profile = auth.authenticate().await?;
instance
.launch(&profile, JavaDistribution::Temurin)
.run()
.await?;
Ok(())
}Microsoft auth, modpacks, event streams, every loader — runnable
samples in examples/.
- Light. Only ships what you use. A pure-Fabric build never pulls in the Forge pipeline.
- Fast. Mods, libs, assets, resourcepacks, shaders — downloaded in parallel.
- Mods & modpacks just work. Drop a Modrinth slug or a CurseForge id and the file lands in the right folder.
.mrpackand.zipmodpacks supported out of the box. - Tokens stay yours. Microsoft and Azuriom secrets can't leak through logs or JSON dumps. OS keychain storage is one method call away.
- You see everything. Typed events stream every step on a broadcast bus — perfect for a real-time UI.
lighty-launcher/ # Root crate (prelude + feature gates)
└── crates/
├── core/ # AppState, HTTP, hashing, extract
├── auth/ # Offline / Microsoft / Azuriom
├── event/ # Broadcast bus + typed events
├── java/ # JRE auto-download
├── launch/ # Install + game lifecycle
├── loaders/ # Vanilla / Fabric / Quilt / Forge / NeoForge
├── modsloader/ # Modrinth + CurseForge + modpack pipelines
└── version/ # VersionBuilder
| Feature | Effect |
|---|---|
vanilla / fabric / quilt / neoforge / forge |
Enable that loader (forge covers modern + legacy 1.7.10–1.12.2) |
lighty_updater |
Custom updater backend (auto-pulls vanilla/fabric/quilt/neoforge/forge) |
all-loaders |
Every loader above |
modrinth |
Modrinth API + .mrpack modpack support |
curseforge |
CurseForge API + .zip modpack support (requires API key) |
all-mods |
Both modrinth and curseforge |
events |
Typed broadcast events (LaunchEvent, ModloaderEvent, …) |
keyring |
OS-keychain storage for auth tokens (opt-in) |
tracing |
Structured logging via tracing |
Mix and match:
lighty-launcher = { version = "26.5.12", features = ["fabric", "modrinth", "events"] }📚 Full docs on GitBook: https://hamadi.gitbook.io/lightylauncher
Per-crate API reference next to the code:
| Crate | What it does |
|---|---|
lighty-core |
App state, HTTP, hashing, archive extract |
lighty-auth |
Offline / Microsoft / Azuriom auth |
lighty-event |
Broadcast event bus |
lighty-java |
JRE download and discovery |
lighty-launch |
Install orchestrator + game runner |
lighty-loaders |
Minecraft loader implementations |
lighty-modsloader |
Mod sources + modpack parsers |
lighty-version |
Fluent VersionBuilder |
PRs welcome — see CONTRIBUTING.md.
MIT.
- LightyUpdater — companion server for custom modpack distribution.
- FlowUpdater — Java launcher library by FlowArg, one of the early inspirations for this project.
Special thanks to FlowArg whose work on FlowUpdater provided valuable guidance and direction in the early stages of this project.
Thanks to everyone who has contributed — issues, PRs, and feedback all help make this library better.
