Remipn is a modern, lightweight, cross-platform VPN manager written in Rust. It offers an interactive Terminal User Interface (TUI) and a powerful Command Line Interface (CLI) to manage your VPN connections with ease.
- 🖥️ Interactive TUI: Manage your VPN profiles with an intuitive terminal interface based on
ratatui. - ⌨️ CLI Support: Quick commands to connect, disconnect, and check VPN status.
- 🔄 Smart Connection Management: Automatically handles switching between different VPNs, ensuring only one is active at a time.
- ⏳ Real-time Feedback: Connection status monitoring with an automatic retry mechanism and polling.
- 📁 Profile Import: Supports importing profiles from XML files, including automatic detection of Azure VPN Client profiles on macOS.
- 🚀 Auto-Import: Automatic scanning of default and system directories (
~/.config/remipn/imports/and Azure VPN paths). - 🔍 Search and Filters: Quickly find your profiles by name, category, or alias.
- 📂 Cross-Platform: Support for Windows (
rasdial), Linux (nmcli), and macOS (scutil). - ⌨️ CLI Shorthands: Quick command aliases (c, d, s, l) for power users.
Make sure you have Rust installed on your system.
# Clone the repository
git clone https://github.com/yourusername/remipn.git
cd remipn
# Build and install
cargo install --path .Simply run remipn without arguments to launch the interactive interface:
remipnMain Shortcuts:
Enter: Connect/Disconnect the selected profilen: Add a new profilee: Edit the selected profilea: Quick alias edit for the selected profilex: Delete the selected profilei: Import profiles from XML via file browserI: Manually trigger auto-import from standard locations (Azure VPN Client, etc.)/: Search through profilesl: Show/Hide logss: Change sortingq: Quit
You can also use remipn directly from the command line with handy aliases:
# List all profiles (alias: l)
remipn list
remipn l
# Connect to a profile (alias: c)
remipn connect "ProfileName"
remipn c "alias"
# Disconnect (alias: d)
# Provide a name to disconnect a specific VPN, or no name to disconnect all
remipn disconnect
remipn d "ProfileName"
# Check status (alias: s)
remipn status
remipn sConfigurations are saved in ~/.config/remipn/config.toml.
Profile Import Locations:
- Default:
~/.config/remipn/imports/(searched at startup or viaI). - macOS Azure VPN:
~/Library/Containers/com.microsoft.AzureVpnMac/Data/Library/Application Support/com.microsoft.AzureVpnMac(automatically scanned).
Supported formats: .xml, .ovpn, .azvpn.
This project is distributed under the MIT License. See the LICENSE file for details.
Contributions are welcome! Feel free to open issues or pull requests.