Skip to content

danthi123/LoLProxChat

LoLProxChat

Server status Latest release License: AGPL v3

Proximity voice chat for League of Legends. Hear nearby players (allies and enemies) with volume that scales by in-game distance — enemy voices fade in around champion-vision range and grow louder as they close.

Standalone Windows desktop app built with Tauri 2 + WebView2. No Overwolf, no third-party voice service, no telemetry. Registered + approved on the Riot Developer Portal (App ID 809090).


Install

Download the latest lolproxchat.exe from Releases. Single portable executable — no installer.

Requirements:

  • Windows 10 1809+ or Windows 11
  • WebView2 Runtime (ships with Windows 11; pushed via Edge on Windows 10)
  • League of Legends in Borderless mode (Settings → Video → Window Mode → Borderless). Required — DX9 true fullscreen takes exclusive GPU output and no transparent overlay can render over it.

Launch the exe before or during a League match. The panel auto-attaches beside the minimap once a game is detected.

First run

Windows will show one of these on first launch (the exe isn't code-signed; this is the standard treatment for any unsigned binary downloaded from the internet):

  • "Windows protected your PC" (SmartScreen) → More infoRun anyway.
  • "This app has been blocked for your protection" (Mark of the Web) → right-click lolproxchat.exeProperties → check UnblockOK → re-launch.

Subsequent launches don't prompt.

Verify your download

Every release body includes a SHA-256 hash. Compare it against your downloaded exe to confirm you got the official build (defends against in-transit tampering, mirror reposts, typosquatted re-uploads):

# PowerShell
Get-FileHash lolproxchat.exe

# WSL / git-bash
sha256sum lolproxchat.exe

Every release exe is also submitted to VirusTotal during the build, and the scan link is included in the release notes — verifiable against 70+ antivirus engines before you download.


Quick start

  1. Make sure LoL is in Borderless mode.
  2. Launch lolproxchat.exe. The panel appears in the middle of the screen showing the current lifecycle ("Waiting for League of Legends", "In champion select", etc.).
  3. Once you load into a match, the panel jumps to the left edge of the minimap. Other players running LoLProxChat in the same match appear within a few seconds.
  4. Always Open mic is the default — just talk. MIC = self-mute, VOL = mute everyone, MUTE per row = silence a specific player.

For the rest — every Settings toggle, troubleshooting, log-grab flow, uninstall — see the user guide.


Docs

Doc When to read
User guide Day-to-day usage, every Settings toggle, troubleshooting, reporting bugs
Architecture How it actually works — computer-vision pipeline, WebRTC flow, server design
Threat model What the design protects, what it doesn't, what we collect (and what we don't)
Compliance Relationship to Riot's third-party policy + Developer Portal status
Self-hosting Run your own signaling server
Contributing Build, test, release flow + code style
Security policy How to report vulnerabilities
Changelog What changed in each release

How it works (in 5 bullets)

  1. Game detection — reads the LCU and Live Client Data APIs for game phase + player roster. No memory reads, no injection.
  2. Position — the app captures the minimap image, finds champion icons on it by color and shape, and identifies which champion each one is with a trained image-recognition model — producing your position in in-game coordinates.
  3. Signaling — players in the same match join a deterministic WebSocket room (room ID = hash of sorted player names) on a self-hosted Node server.
  4. Voice — WebRTC peer-to-peer audio between players (Opus 128 kbps, DTLS-SRTP). No audio touches any server.
  5. Proximity volume — each client streams its XY coordinates to the signaling server (over the same WebSocket used for presence/signaling); the server computes pairwise volumes for everyone in the room. Team voice is always full volume (no proximity); cross-team (enemy) voice fades in at ~champion vision range (~1350 game units) and grows louder as they close. Server-enforced — a modified client cannot bypass the team filter or range cutoff. Clients only ever receive { peerName: volume }, never another peer's raw position.

For depth, see docs/architecture.md.


Privacy + anti-cheat in one paragraph

LoLProxChat collects no analytics, no telemetry, no fingerprinting, no persistent user identifiers. The only data that leaves your machine is your summoner name (for room routing — same name visible on the match scoreboard), your XY position (sent to the server over TLS, held in process memory only for as long as you're in the room, never logged), WebRTC signaling, and the voice audio itself (DTLS-SRTP, peer-to-peer, never touches the server). Want to keep your public IP private even from peers in your match? Settings → Hide IP (Force TURN) routes voice through the TURN relay. See docs/threat-model.md for the full breakdown.


License

GNU AGPLv3. Free and open source — use, study, modify, and self-host it, including commercially. The copyleft terms require that if you distribute the app, or run a modified version as a network service, you make the corresponding source available under the AGPLv3. © 2026 Daniel Thiberge.

Champion icons used to train the recognition model come from Community Dragon (a community-maintained mirror of Riot's game assets). They remain Riot Games' intellectual property, are used for training only, and are not distributed with this software.


Acknowledgements

  • LOL_Minimap_Tracker — minimap champion-tracking reference
  • LeagueMinimapDetectionCNN — reference code for minimap detection
  • Community Dragon — champion icon assets used to train the champion-recognition model
  • Tauri — desktop app framework
  • Cloudflare Realtime TURN — managed TURN relay infrastructure
  • Every user who's filed an issue or attached a log — your reports made this app actually work.

About

Proximity voice chat for League of Legends

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors