FiveLaunch is a desktop launcher for FiveM that lets you keep multiple, fully isolated client setups on one machine. Each setup ("client") has its own mods, plugins, citizen overrides, and settings, and FiveLaunch swaps them in and out by controlling what FiveM actually reads on disk at launch time.
Stack: Tauri 2 (Rust) + Svelte 5 + TypeScript + Tailwind + Bun
| Docs | https://fivelaunch.help |
| Support | https://fivelaunch.help/support |
| Downloads | https://github.com/oyuh/fivelaunch/releases |
| Issues | https://github.com/oyuh/fivelaunch/issues |
v2 is a ground-up rewrite of the original Electron app (still available on the
v1branch). Behavior and on-disk data are the same, but the binary is roughly 3 MB native instead of ~170 MB, and startup is sub-second. You can move between v1 and v2 without touching your data.
FiveM reads mods, plugins, and settings from a fixed set of folders and files on your machine. Instead of copying those around every time you want a different setup, FiveLaunch stores each client's files in its own directory and then, at launch, points FiveM's real paths at the client you picked.
The linking is done with NTFS junctions wherever possible, so switching clients is effectively instant and costs no extra disk space (no duplicate copies of your mods folder). Anything FiveLaunch has to move out of the way first (an existing real folder, a settings file) goes into a central backup store you can browse and restore from later, rather than being left as loose _original files scattered next to your game.
Plugins are a special case because the running game sometimes writes back into that folder. You get two modes per client:
- Junction mode (default): the game's
pluginsfolder becomes a link to the client. Instant, zero-copy. - Sync mode:
pluginsstays a real folder owned by one client. FiveLaunch mirrors client to game before launch, does a conservative game to client sync of safe file types while you play, then a final pass on exit. Use this if a plugin misbehaves when its folder is a junction.
If you want a full walkthrough with screenshots, the docs site is the place to go.
- Grab the latest release and run the installer.
- On first run, confirm you understand which folders and files FiveLaunch will link and move aside.
- In Settings, set your FiveM.app folder (for example
%LOCALAPPDATA%\FiveM\FiveM.app). - Create a client.
- Toggle on the features you want for that client: mods, plugins, citizen, settings.
- Launch.
From then on, switching setups is: pick a client, hit launch.
- Multiple isolated clients, each with its own linking preferences.
- Selective linking per client for
mods,plugins(junction or sync mode),citizen,gta5_settings.xml, andCitizenFX.ini. Turn on only what you want that client to control. - Snapshot / "My Setup" captures your current live FiveM files into a fresh client without duplicating them (real folders are moved in, the live location becomes a junction). Restore returns FiveM to that baseline after any session.
- Central backup store: anything moved aside lands in
%APPDATA%\FiveLaunch\backups\, browsable and restorable from the History dialog. - ReShade sync: discovers your ReShade config, presets, and logs, keeps client-owned copies, and syncs them for the active client.
- Quick launch from the UI with live progress, or from a desktop shortcut (
FiveLaunch.exe --launch-client=<id>), which is single-instance safe. - GTA V settings editor with categorized, human-readable controls instead of raw XML. Import from game reads your real
Documents\Rockstar Games\GTA V\settings.xml, and every saved/applied file keeps your GPU name (VideoCardDescription) — pulled from your real settings, or auto-detected from your hardware (preferring the discrete GPU) when none exists yet — so GTA actually applies the graphics instead of re-detecting and resetting them. - Minimize to tray while you play, with automatic restore when the game exits.
- In-app updates via the Tauri updater, sourced from signed GitHub releases.
- Open a client's folder straight from the app, and custom window controls (minimize / maximize / close).
The split is deliberate: all the risky filesystem and process logic lives in Rust and is unit-tested in isolation, and the Svelte UI never touches disk directly.
- Rust core (
src-tauri/src/core/): every bit of filesystem, linking, mirroring, and process logic. Framework-agnostic and unit-tested, including golden-file tests that keep every on-disk format byte-compatible with v1. - Command layer (
src-tauri/src/commands.rs): thin#[tauri::command]wrappers over the core, plus background sync state. - UI (
src/): Svelte 5, talking to Rust through the typed bridge insrc/lib/api.ts. Live launch progress arrives over Tauri events.
Modules worth knowing:
| Module | Responsibility |
|---|---|
core/launch.rs |
The launch pipeline: link everything, kick off syncs, start the game |
core/linking.rs |
Junction linking and moving originals into the backup store |
core/plugins_sync.rs |
Copy/sync plugins mode with an mtime cache and in-game syncing |
core/mirror.rs |
The general file-mirroring engine (skew windows, content-compare tiebreaks) |
core/snapshot.rs |
Capture and restore of the "My Setup" baseline client |
core/reshade.rs |
ReShade config/preset/log discovery and sync planning |
core/backups.rs |
Central backup store used by the History dialog |
Each client is stored under:
%APPDATA%\FiveLaunch\clients\<clientId>\
mods\
plugins\
citizen\
settings\
gta5_settings.xml
CitizenFX.ini
At launch, FiveLaunch links or writes these FiveM targets to match the active client:
%LOCALAPPDATA%\FiveM\FiveM.app\mods%LOCALAPPDATA%\FiveM\FiveM.app\plugins%LOCALAPPDATA%\FiveM\FiveM.app\citizen%APPDATA%\CitizenFX\gta5_settings.xml%APPDATA%\CitizenFX\CitizenFX.ini
Anything that has to be moved aside goes to the central backup store:
%APPDATA%\FiveLaunch\backups\<kind>_<epochMs>\
The on-disk format is fully compatible with v1, so you can switch between the two versions freely.
- Bun 1.x
- Rust (stable) with the MSVC toolchain
bun install
bun run tauri devThere is also a no-build UI preview harness for working on the frontend in isolation:
bun run uibun run test # frontend unit + component tests (vitest)
bun run check # svelte-check + tsc
# from src-tauri/
cargo test # Rust unit tests + v1-compatibility golden tests
cargo bench # criterion performance benchmarksbun run tauri buildThe release target is a signed NSIS installer, produced under src-tauri/target/release/bundle/nsis/. The raw FiveLaunch.exe at src-tauri/target/release/ is a build byproduct and is not the distributed artifact.
Full user and reference docs live at fivelaunch.help. If you get stuck or hit a bug, start at Support, then open an issue.
Contributions are welcome. See CONTRIBUTING.md for how to set up, what the review bar is, and the licensing terms that apply to submissions.
The short version: this project is source-available (not open-source), and by contributing you agree your changes can be redistributed as part of FiveLaunch. Details are in the license.
Source-available under the FiveLaunch Source-Available License (FiveLaunch-SAL).
- You may view, use, and modify the code for personal or internal use.
- You may not redistribute the code or derivatives (including public forks) without written permission.
- You can share improvements by opening a pull request back to this repository.
Full terms in LICENSE.
FiveLaunch modifies FiveM client files by linking and replacing folders and settings. Use at your own risk, and keep your own backups of anything you care about.