- 10 core commands for full VPN control
- Automatic rotation with configurable intervals
- Multiple rotation modes: sequential, random, latency
- Daemon support (background operation)
- Configuration management (
~/.protator/config.yaml) - Environment diagnostics
- Log output with optional follow mode
- Clean, professional output
- Linux
protonvpn-cliorprotonvpn(v0.1.6+) installed and logged in- C++17 compiler (for building from source)
- CMake 3.10+
- curl (for IP lookup)
Note on ProtonVPN Plans & Rotation Behavior:
- Protator works with both free and paid ProtonVPN plans
- Random mode (default): Lets ProtonVPN choose server randomly, Protator reads actual location
- Country-specific: If
--country CODEused with paid plan, requests specific country. Falls back to random if unavailable - Free plan: Rotation works seamlessly, ProtonVPN picks from available free servers automatically
Simply run the setup script - it will handle everything:
git clone https://github.com/BangAguse/Protator.git
cd Protator
chmod +x setup.sh
./setup.shThe setup script will:
- Check for required build tools (cmake, g++)
- Build protator from source
- Install globally to
/usr/local/bin/protator - Configure ProtonVPN credentials
- Create default config file
If you prefer to build manually:
cd Protator
mkdir build && cd build
cmake ..
make -j
cd ..
sudo make -C build install
./setup.sh # Still need to run this for ProtonVPN configAfter installation with ./setup.sh, use protator directly from anywhere:
protator doctor # Check system status
protator start --interval 300 --background # Start rotating IP every 5 min
protator status # Check daemon status
protator ip # Check current IP
protator stop # Stop daemon and disconnect VPNprotator <command> [options]protator start [--interval SECONDS] [--country CODE] [--mode MODE] [--background]Options:
--interval SECONDS- Rotation interval (default: 300)--country CODE- Specific country code (e.g., US, FR, DE)--mode MODE- Rotation strategy:sequential,random,latency(default: random)--background- Run as daemon in background
Example:
protator start --interval 600 --mode sequential --backgroundprotator stopStops the daemon process if running in background.
protator rotateRotates IP immediately without recurring loop.
protator statusOutput:
ACTIVE
Current IP: 36.83.91.227
protator ipOutput:
36.83.91.227
protator list [--country CODE]Shows available ProtonVPN servers. Optionally filter by country.
protator config show
protator config get <key>
protator config set <key> <value>Keys: interval, mode, country, background, logging
Example:
protator config set interval 600
protator config get modeprotator doctorChecks:
- ProtonVPN CLI installed
- Logged in status
- Internet connectivity
- Permissions
protator logs [--follow]Show log file. Use --follow for live tailing (like tail -f).
protator versionOutput:
Protator v0.1.0
Creator : https://github.com/BangAguse
Language : C++
License : MIT
Platform : Linux
--help- Show help (per command)-v, --debug- Enable debug logging-h- Show help
Config file: ~/.protator/config.yaml
Default structure:
interval: 300
mode: random
country: null
background: false
logging: trueFields:
interval- Seconds between rotations (default: 300)mode-sequential,random, orlatency(default: random)country- Specific country code ornullfor any (default: null)background- Auto-daemonize iftrue(default: false)logging- Enable logs to~/.protator/protator.log(default: true)
When rotation is triggered:
- Disconnect from current VPN
- Wait 2 seconds
- Connect to new server based on mode:
- sequential: Connect to servers in order
- random: Pick a random server
- latency: Connect to lowest-latency server (fallback: first available)
- Log the event
- Repeat if running in loop
- Binary:
/usr/local/bin/protator(installed globally by setup.sh) - Config:
~/.protator/config.yaml(auto-created by setup.sh) - Log:
~/.protator/protator.log(created on first run) - PID:
~/.protator/protator.pid(daemon process ID file)
protator start --interval 300 --background
protator statusprotator start --country US --mode random --backgroundprotator rotateprotator ipprotator logs --followprotator stopIf protator is not found after installation:
-
Verify installation:
which protator /usr/local/bin/protator --version
-
Re-run setup.sh:
./setup.sh
-
Add to PATH manually (if needed):
export PATH="/usr/local/bin:$PATH"
-
Re-run the setup script (will prompt for login):
./setup.sh
-
Or login manually:
protonvpn signin <your-username>
-
Verify login:
protator doctor
If you get permission errors:
-
Ensure ProtonVPN CLI is properly installed:
which protonvpn-cli
-
Try running with sudo:
sudo protator doctor
-
Check file permissions:
ls -la ~/.protator/
Check that ProtonVPN CLI is working:
protonvpn citiesProtator/
├── CMakeLists.txt # Build configuration
├── setup.sh # Setup & installation script
├── README.md # Documentation
└── src/
├── main.cpp # Entry point
├── cli.cpp/hpp # CLI parsing & command routing
├── rotator.cpp/hpp # Rotation logic
├── vpn.cpp/hpp # VPN wrapper & integration
├── config.cpp/hpp # Config file management
├── logger.cpp/hpp # Logging system
├── diagnostics.cpp/hpp # System diagnostics
└── scheduler.cpp/hpp # Scheduler placeholder
Note: build/ directory is created temporarily during compilation and should not be committed to version control.
- Language: C++17
- Build System: CMake
- Logging: Internal lightweight logger
- Threading: std::thread
- VPN Integration: protonvpn-cli via system calls
- Platform: Linux
Creator: BangAguse
License: MIT
mkdir build && cd build
cmake ..
make -jThe binary protator will be created in the project root directory.
rm -rf buildIf you find Protator useful, consider supporting its development via donation.
Your support helps keep the project maintained and improved.

