This program runs an HTTP server receiving requests from Counterstrike's Gamestate Integration and triggers things when certain events have happened.
At the moment those "things" are
- Bomb planted countdown timer (once the bomb has been planted a voice will announce "[30, 20, 15, 10, 5] seconds" until detonation)
- The same but for the remaining time per round
- Audio indicator when running low on ammo
- Experimental: Ammo indicator via game overlay
You will run this program in a terminal.
Stop the game, clone this repository and copy the gamestate_integration_events.cfg from the repo into your CS game's
config folder.
Depending on your setup the config folder is usually located at
Steam/steamapps/common/Counter-Strike Global Offensive/game/csgo/cfg/
This file tells Counterstrike to send it's Gamestate data to the local webserver we are spinning up in the next step. Now, you have two options to run it
If you have Rust installed, simply build and run the application in the
repository's source folder. Open a terminal and execute cargo run --release ...
> cargo run --release
Finished `release` profile [optimized] target(s) in 0.12s
Running `target\release\main.exe`
2026-05-14T14:42:21.739475Z INFO main: Starting server...
2026-05-14T14:42:21.740517Z INFO main: Server RunningNow start the game, play a match and you should be hearing audio output once the bomb is planted or the round is about to end.
This should also run on Linux, but I haven't tested.
You can find pre-compiled binaries in the Release section. Simply download the archive for your OS. The archives contain
the binary and a sound folder containing audio files. When running the program, make sure to run it from archive's
root.
> .\main.exe
2026-05-14T14:48:45.645007Z INFO main: Starting server...
2026-05-14T14:48:45.646034Z INFO main: Server RunningThere are a couple of settings to customize stuff
Usage: main.exe [OPTIONS]
Options:
-p, --port <PORT> [default: 30001]
-i, --ip <IP> [default: 127.0.0.1]
-s, --sound-path <SOUND_PATH> [default: sounds]
-d, --debug
--disable <DISABLE> [possible values: round-timer, bomb-timer, ammo-low, ammo-indicator]
--no-visuals
-h, --help Print help
-V, --version Print versio
For example, if you want to disable the ammo low indicator, run the program with
--disable ammo-low
There's an experimental feature which displays the amount of ammo in the current clip. This feature
- uses it's own directx rendering pipeline (therefore only works on Windows)
- creates a fullscreen click-thru window (game must not be run in exclusive fullscreen mode but borderless)
- doesn't inject into the game's process, so this should be safe (famous last words).
You can opt-out of the overlay with --no-visuals.
A default set of sound files is part of the published releases. The application looks for audio files in the sounds/
directory relative to where you start it from. You can override that path with the --sound-path option.
Also - for the round and bomb announcements - you can add your own wav files. E.g. if you want to have an announcement
60 seconds before the round ends, add a file 60.wav in the sounds folder.
CS GSI sends bomb planted events randomly delayed. It appears as if this delay is somewhere between 0 and 2 seconds, so the countdown until detonation isn't a 100% accurate. If you are playing CT, maybe hurry up when you hear the 10 second announcement :-)
