AGPL-3.0-or-later · DCO · no CLA
Community.
PharosVPN is open source on purpose. The licence asks commercial users to contribute back, not to pay. The contribution model is chosen to keep the code yours, not ours.
where the code lives
One GitHub org, four repos.
PharosVPN/helm— controller / management plane + admin UIPharosVPN/buoy— VPN node agentPharosVPN/beacon— relayPharosVPN/caravel— mobile clientPharosVPN/docs— DESIGN.md and the shared protobuf contracts
licence · AGPL-3.0-or-later
Why AGPL.
Every PharosVPN repo is licenced under AGPL-3.0-or-later. We chose the AGPL because the thing we want from commercial users is contribution, not payment. The AGPL's network copyleft clause forces anyone running a modified version as a service to publish their modifications — forced contribution, not forced payment.
That is the business model. There is no commercial edition, no paid tier, no CLA-backed plan to relicense.
What that means in practice
- You can run PharosVPN for any purpose — personal or commercial — at no cost beyond your cloud bill.
- You can modify it freely, including for use behind your own service.
- If you run a modified version as a network-accessible service, AGPL §13 asks you to make your modifications available to your users.
- Linking your proprietary code against PharosVPN libraries is governed by the AGPL's standard terms — read them carefully if that's your situation.
contributions · DCO, no CLA
DCO, not CLA.
Contributions are accepted under the
Developer Certificate of Origin
— sign off each commit with git commit -s. That
appends a
Signed-off-by: Your Name <you@example.com> trailer,
which is your statement that you wrote the patch or otherwise
have the right to contribute it under the project's licence.
We don't ask contributors to sign a Contributor License Agreement. A CLA gives the project's maintainers the right to relicense contributors' code later. Since we have no plan to relicence away from the AGPL, asking you to sign one would just be a speed bump.
how to contribute
A pull request, signed off, against the right repo.
- Cross-cutting design changes go to
docs/DESIGN.mdfirst. If code and the document disagree, the document is wrong — fix it in the same PR. - Component-local changes go to the component's repo. Each repo carries a
CONTRIBUTING.mdand aBUILD.md. - Protobuf contracts live in
docs/proto/. No subproject hand-rolls message types. - Status: pre-alpha. The design is locked; the code is scaffolding. The most useful contributions right now are stress-testing the architecture by trying to build against it.