P99

Got questions or doubts? Ping me on Discord

Cloudflare only

Your own Cloudflare account is the whole backend: one Worker, one D1 database and one R2 bucket.

What it does

Each Cloudflare account holds one Worker, one D1 database and one R2 bucket, and the Worker sits on a route, <host>/_p99/*, in front of each of your sites. A route runs before a Pages project, a tunnel or another Worker on that host, so P99 never touches the site itself.

The p99 binary carries the Worker, the loader, the panel and the database migrations, and uploads that same build to every account.

  • Setup that explains itself

    p99 setup says which Cloudflare API token to create, where, and why each permission is needed. It checks the token and every permission, then creates the D1 database, the R2 bucket, the key, the Worker and a route for each site. It is safe to run again, and a second account goes in beside the first.

  • Signed requests

    Every request the CLI and TUI send is signed with HMAC-SHA256 and refused when its time is more than 60 s away.

  • Weekly backups

    A weekly backup of every table goes into the account's own R2 bucket, and the last eight are kept.

Measured

One Cloudflare Worker, D1 and R2 per account
0 servers
How it was measured
Worker runtime dependencies (wrangler only runs its tests)
0
How it was measured
The p99 binary (3.2 MB gzipped), 14 direct crates, with the Worker and the widget inside
7.1 MB
How it was measured

How to use it

  1. Put P99 on your Cloudflare account, step by step.

    p99 setup
  2. Upload a new version later, keeping every secret.

    p99 deploy

Deploy updates