The small, agile ship that crossed unknown oceans.
caravel is the shared PharosVPN client core (Go) — the engine the platform's
apps are built on. It parses and decrypts profiles, runs account sync, and drives
the VPN tunnel; profiles enter from whichever source fits the user: a synced
account, a QR scan, a file, or enterprise MDM. The per-platform apps
(caravel-mac / -ios / -android / -linux and the OpenWRT/OPNsense plugins)
are thin shells over this core.
Part of the PharosVPN platform — see
docs/DESIGN.md.
- The VPN client. Runs the actual tunnel — multi-node, multi-protocol (AmneziaWG + XRay/REALITY).
- Profile sources, not modes. A VPN engine reads a local profile store; profiles enter that store from interchangeable sources — account sync, QR, file import, MDM managed config, deep link. "Synced vs unsynced" is just which sources are enabled, not a different app.
- Posture-aware. Personal: account login + QR + file import, with an admin section if the logged-in account is an admin. Managed (MDM config present): account login and admin hidden, profiles locked. One app, one store listing.
- Offline-resilient. Connects from cached local profiles when the account service is unreachable.
Go — CGO_ENABLED=0, pure-Go AmneziaWG (amneziawg-go) + XRay (xray-core).
Exposed to the native apps via gomobile (.aar / .xcframework) and consumed
directly by the desktop/router builds. See BUILD.md.
Pre-alpha. The core is shipped and backs the released v0.1.0 clients (macOS,
Linux, Android, plus the OpenWRT/OPNsense plugins and the iOS device build):
.pharos parsing/decryption, account sync, and the AmneziaWG + XRay/REALITY
tunnel engine are live. See BUILD.md.
Apache-2.0. Contributions under the DCO (git commit -s).