Thanks for checking out Mavi VPN.
The project is still early, so contributions do not have to be huge. Small fixes, docs improvements, setup feedback, bug reports, and test cases are all useful.
Mavi VPN is security-related software, but it is not audited yet. Please avoid presenting it as production-ready VPN software in issues, docs, or PRs.
If you find a security issue, do not open a public issue with details. Please read SECURITY.md first.
Useful contributions right now:
- improve setup docs
- test Docker deployment on different servers
- test the Linux client on different distros
- test the Windows client and installer flow
- improve Android build or runtime docs
- add missing tests
- clean up confusing config defaults
- improve error messages
- make the README easier to follow
- help plan an iOS client using the Rust core
- report rough edges from a real setup attempt
You need Rust installed.
git clone https://github.com/zerox80/mavi-vpn.git
cd mavi-vpn
cargo test -p shared
cargo test -p mavi-vpnFor the Linux client:
cargo test -p linux-vpn
cargo build -p linux-vpnFor the server Docker setup:
cd backend
cp .env.example .env
# edit .env and set a real VPN_AUTH_TOKEN
docker-compose up -d --buildThe Android app needs Android Studio, the Android NDK, and cargo-ndk.
cargo install cargo-ndk
rustup target add aarch64-linux-android armv7-linux-androideabi x86_64-linux-androidThen open the android/ folder in Android Studio.
Please keep PRs focused. One fix or feature per PR is much easier to review.
Good PRs usually include:
- a short explanation of what changed
- why the change is needed
- how you tested it
- screenshots or logs if it affects the UI or setup flow
Before opening a PR, run the tests that match the area you changed.
cargo fmt
cargo test -p shared
cargo test -p mavi-vpnRun more tests if you touched other crates.
Keep the code boring where possible.
Clear names, small functions, and simple error messages are better than clever code. This project already touches networking, async Rust, system routing, Android, Windows, and Docker, so simple code helps a lot.
Please avoid large rewrites unless there is a clear reason.
Bug reports are very welcome.
A useful bug report includes:
- your OS and version
- the Mavi VPN commit or release
- what you were trying to do
- what happened
- what you expected
- logs with secrets removed
- your Docker or client config with tokens removed
For setup problems, exact commands help a lot.
Docs are part of the project. If something confused you while setting it up, that is worth fixing.
Small docs PRs are welcome, especially if they make the first setup easier for someone else.
An iOS client is on the roadmap.
The rough idea is to reuse the Rust core where it makes sense and connect it to an iOS app through C FFI, UniFFI, or another clean bridge. The VPN side would likely use NEPacketTunnelProvider.
Design notes, prototypes, and research issues are welcome here.
By contributing, you agree that your contribution is licensed under the MIT License, the same license used by this repository.