CS2RemoteConsole
A CS2-centric VConsole implementation in C++ with remote control support. Might support other Source 2 games as well.
Install / Use
/learn @theokyr/CS2RemoteConsoleREADME
CS2RemoteConsole
CS2RemoteConsole is a C++ utility for remotely interacting with Counter-Strike 2's console, featuring a TUI and support for a centralized remote server.

Features
- Connect, read, and write messages to CS2 through the VConsole socket
- Connect and receive commands from a remote control server
- Display console output with channel-based coloring
- Configurable settings via INI file
- Cross-platform support (Windows and Linux) for both client and server
- CMake build system for cross-platform builds
- Text-based User Interface for easy interaction
Disclaimer
Use responsibly and in accordance with the Counter-Strike Fair Play Guidelines. This tool is
for educational and development purposes only and should only be used in -tools mode.
Requirements
Client
- Windows or Linux OS
- Counter-Strike 2 running in
-toolsmode - C++ compiler with C++17 support
- CMake 3.14+
- PDCursesMod (Windows) or ncurses (Linux)
- spdlog library
Server
- Windows or Linux OS
- C++ compiler with C++11 support
- CMake 3.14+
Building
CMake (Recommended)
Build both client and server:
mkdir build && cd build
cmake ..
cmake --build .
To build only the client or server:
cmake .. -DBUILD_CLIENT=ON -DBUILD_SERVER=OFF # Client only
cmake .. -DBUILD_CLIENT=OFF -DBUILD_SERVER=ON # Server only
Visual Studio (Windows)
- Open the project in Visual Studio
- Ensure all required libraries are properly linked
- Build the solution
Docker (Server)
- Ensure Docker and Docker Compose are installed
- Navigate to the
dockerdirectory - Build and run:
docker-compose up --build
Configuration
Edit config.ini to customize:
cs2_console_ip: IP address of the CS2 console (default: 127.0.0.1)cs2_console_port: Port number of the CS2 console (default: 29000)cs2_console_reconnect_delay: Reconnection delay in milliseconds (default: 5000)remote_server_enabled: Enable or disable remote server connection (default: 1)remote_server_ip: IP address of the remote control server (default: 127.0.0.1)remote_server_port: Port number of the remote control server (default: 42069)remote_server_reconnect_delay: Remote server reconnection delay in milliseconds (default: 5000)debug_sanity_enabled: Enable or disable debug sanity checks (default: 0)debug_sanity_interval: Interval for debug sanity checks in milliseconds (default: 5000)
Usage
Client
- Ensure
config.iniis in the same directory as the executable or in the current working directory - Run the program
- Use the TUI to interact with the CS2 console:
- Type commands and press Enter to send them to CS2
- Use Page Up/Down or mouse wheel to scroll through console output
Server
- Run the server program
- Enter commands to be broadcasted to all connected clients
- Type 'quit' to exit the server
Architecture
CS2RemoteConsole consists of three main components:
- Client: Connects to both CS2 console and the remote server. It features a TUI for user interaction and displays console output.
- Server: Acts as a central hub for multiple clients, allowing command broadcasting.
- libvconsole: A static library implementing the VConsole2 Protocol used by Source 2 games.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Acknowledgements
We express our gratitude to the original authors of these libraries, which served as a foundation for our VConsole protocol implementation.
