Don't trust us. Read the code.
Privacy and resilience systems that ask for your trust have already failed. We publish our source so you can verify what we claim, and we license it so you can run it yourself.
Trust through transparency
A closed-source privacy product is a contradiction, and so is a closed-source backup product. You would be trusting that the encryption is real, that the data paths are actually absent, that the proofs are actually zero knowledge, that the keys are never held.
We do not ask for that trust. Our cryptographic cores, backend services, backup engine, client tooling, and protocol specifications are published. Read the code. Run it yourself. Find a bug and tell us.
Open, and honest about it
We do not claim that every line we write is open source. We claim that it is published and auditable, and that you can run it yourself. Here is exactly what that means for each product.
Provii — open source
Open source under a mix of licences across its repositories: AGPL-3.0, Apache-2.0, and MIT, with a small number of components kept proprietary. The cryptographic crates are dual-licensed MIT or Apache-2.0.
Free for the people who use it to prove their age. Credential issuers pay a per-verification royalty; that is the commercial layer.
downpipes — source-available
The engine, console, and control-plane are source-available under the Elastic License v2. You may read, run, and rely on them yourself, in your own Cloudflare account, for free. The offline reader is MIT-licensed and fully open.
The one thing the licence forbids is reselling downpipes as a managed service. That is not commercial protection; it is the product. A third party running it for you would be taking custody, and no-custody is the whole point.
The things you would otherwise have to take on faith
Cryptographic cores
Rust crates for zero knowledge proof generation and verification, Pedersen commitments, and constant-time operations (Provii); the post-quantum hybrid sealing that protects archives at rest (downpipes).
Services & engines
Provii's verification and issuance services, in Rust and TypeScript on Cloudflare Workers; the downpipes in-tenant backup engine and operator console that run inside your own account.
Client tooling
Native iOS (Swift) and Android (Kotlin) wallet apps with a shared Rust core via UniFFI (Provii); the MIT-licensed downpipe offline reader that restores archives with no vendor in the loop (downpipes).
Specifications
A standalone age-verification protocol spec (Provii) and a frozen archive-format spec (downpipes), both implementation-independent. Anyone can build a compatible verifier or a compatible reader.
Integration SDKs
Client and server libraries across multiple platforms and languages, with demo implementations covering common integration scenarios.
Security documentation
Our ISMS documentation is published alongside the code. Threat models, risk registers, data processing records, security policies. Not behind a sales call.
SLSA provenance, signed and pinned
Every build artefact we release can be traced back to its exact source commit and the build environment that produced it, and signed with Sigstore. You do not need to trust that we built what we say we built. The provenance chain proves it.
The downpipes update channel goes further: updates are signature-pinned and pull-only, verified against a pinned public key before they apply, and rolled back automatically if a post-apply canary fails.
- Every release traced to its exact source commit
- Sigstore-signed provenance attestations
- Signature-pinned, pull-only update channel
- SHA-pinned CI dependencies
- Automated licence compliance checks
- Automated vulnerability scanning
Your data stays yours
The same principle runs through both products. A Provii credential belongs to the holder: it lives on their device, protected by their biometrics or passcode, and we cannot access it, revoke it, or monitor how it is used.
A downpipes backup belongs to the customer: it lives in their own Cloudflare account, sealed under keys only they hold, and we never receive a copy. In both cases, when we say you own your data, we mean you are the only one who has it.
A standard, not a walled garden
We publish implementation-independent specifications so others can build compatible software. Anyone can write a Provii-compatible verifier, or a reader for the downpipes archive format.
That is deliberate. A recovery path you can rebuild from a public spec is one no vendor, including us, can ever take away from you.
What we believe
No-custody beats good intentions
A promise not to misuse your data is only as good as the company making it. A system that never holds your data cannot break that promise, because there is nothing to break.
Privacy and sovereignty are architectural
Not a toggle, not a policy, not a promise. When the data paths do not exist, or the keys live only with you, there is nothing to breach, subpoena, or sell.
Regulation needs better tools
Age-verification mandates and data-protection rules are tightening. The question is whether compliance requires mass surveillance and central honeypots, or whether cryptography offers a better path. We think the answer is obvious.
Verifiability is non-negotiable
Closed systems ask you to take their word for it. We think that is an unreasonable ask. If you cannot read the code and run it yourself, you cannot verify the claim.
Get involved
Report bugs, review the cryptography, suggest improvements, or build something new on top of our specifications. We welcome contributions from anyone who shares the goal.