Command Line VPN built with Go and featuring AWS integration and a modern text-based user interface.
- Make it into a hybrind of Pritunl & Proton
- Make three tiers of service - free, personal and business
- Config based setup - remove any friction for the business or personal tier
- Make a good documentation website
- Integrate a payment provider
- 🔐 Secure AWS credentials management with local encryption
- 🖥️ Interactive terminal user interface
- 🚀 Quick VPN instance deployment on AWS
- 📊 Real-time connection monitoring
- 🔄 Instance lifecycle management
- 📝 Connection logging and diagnostics
go install github.com/shashwat-dixit/cvpn@latest
Or build from source:
git clone https://github.com/shashwat-dixit/cvpn.git
cd vpn-cli
go build ./cmd/cli-app
git clone https://github.com/shashwat-dixit/cvpn.git
cd cvpn/cvpn-docs
npm install
npm run dev
- Configure AWS credentials:
cvpn configure
- Create a new VPN instance:
cvpn create
- Connect to your VPN:
cvpn connect
Press ?
in the interactive interface to see all available commands.
Common operations:
c
: Connect to selected VPNd
: Disconnect current VPNn
: Create new VPN instancex
: Delete selected instanceq
: Quit application
The CLI supports several configuration options through environment variables or config files:
CVPN_AWS_REGION=us-west-2 # Default AWS region
CVPN_CONFIG_PATH=~/.vpncli # Configuration directory
CVPN_LOG_LEVEL=info # Logging level
Complete documentation is available in two formats:
- Built-in CLI documentation:
cvpn help
- Comprehensive web documentation at docs coming soon
- Built with Astro
- Includes tutorials and best practices
- Deployment guides
- AWS cost optimization tips
- Security recommendations
The application is built using several powerful Go libraries:
- charmbracelet/bubbletea - Terminal UI framework
- charmbracelet/bubbles - UI components
- charmbracelet/huh - Form handling
- aws/aws-sdk-go-v2 - AWS SDK
- AWS credentials are never stored in plaintext
- Automatic credential rotation
- System keyring integration
- Regular security audits
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.