FixLag is a desktop application designed to reduce latency and jitter in online games like Valorant by routing traffic through optimized WireGuard servers. It features a modern, dark-themed UI built with Compose Multiplatform and communicates with a background Windows Service for secure tunnel management.
- Optimized Routing: Connects to dedicated gaming servers (e.g., Mumbai, Singapore) using the WireGuard protocol.
- Real-time Metrics: Displays live Ping and Jitter stats to monitor connection quality.
- Session Stats: Tracks historical data for your connections including duration, average ping, and max jitter.
- Modern UI: A sleek, dark-themed interface with animated transitions and a custom window frame.
- Secure:
- Uses a background Windows Service for privileged network operations.
- Communicates via secure Named Pipes (IPC).
- Encrypts sensitive configuration (keys, endpoints) on disk using AES-GCM.
- Protects the encryption key using Windows ACLs.
- Live Logs & Debug Tools: View real-time service and UI logs, and access advanced tools via the Dev Mode flag.
The project follows a clean architecture using Kotlin Multiplatform (KMP) targeting Desktop (JVM).
- UI Layer: Built with Compose Multiplatform.
HomeWindow: Main dashboard with server selection, metrics, and power button.SplashWindow: Handles initialization and key generation.- ViewModels: Manage state and business logic (
HomeViewModel,SplashViewModel).
- Domain/Data Layer:
- Persistence:
AppPreferencesstores encrypted configuration using DataStore.EncryptionManagerhandles AES-GCM encryption. - IPC:
IpcUseCaseandFixLagIpcClienthandle communication with the Windows Service via Named Pipes. - Command Execution:
CommandUseCaseexecutes system commands (e.g.,ping,wg.exe).
- Persistence:
- Dependency Injection: Uses Koin for modularity and testability.
- OS: Windows 10/11 (64-bit).
- WireGuard: The app requires
wg.exeto be present in thefiles/directory or system path for key generation. - FixLag Service: The companion Windows Service must be installed and running to handle the actual VPN connection.
- Get the Service: FixLagAgent-Windows on GitHub
-
Ensure
wg.exeis placed in thefiles/directory in the project root. -
Provide a
CLIENT_PRIVATE_KEYin yourlocal.propertiesfile for build config generation. -
Run the app using Gradle:
.\gradlew.bat :composeApp:runTip: To enable the Debug tab, run with
-DIS_DEV=trueVM option.
To create a distributable executable (MSI/EXE):
.\gradlew.bat :composeApp:packageDistributionForCurrentOSThe output will be located in composeApp/build/compose/binaries/main/.
For a full installation setup, use the provided Inno Setup script (installer.iss).
On first launch, the app generates a WireGuard key pair (wg genkey / wg pubkey) and initializes a default configuration. This data is stored securely in:
C:\Users\<User>\AppData\Local\fixlag_app\fixlag.preferences_pb
The encryption key is securely stored in:
C:\ProgramData\FixLag\secret.key
- App Logs: Displayed in the "Logs" tab within the application.
- Service Logs: Read from
C:\ProgramData\FixLag\logs\agent.log. - UI Logs: Read from
C:\Users\<User>\AppData\Roaming\FixLag\ui.log(in Dev mode).
- Language: Kotlin
- UI Framework: Compose Multiplatform
- DI: Koin
- Async: Kotlin Coroutines & Flow
- Storage: DataStore Preferences
- Serialization: Kotlinx Serialization
If you want to host your own routing servers, please refer to the Server Setup Guide.
Built with ❤️ for Gamers.
