Install
p99 is one binary: the CLI, the TUI inbox and the Worker it uploads to Cloudflare. It runs on Linux and macOS, and on Windows through WSL.
Linux and WSL
Section titled “Linux and WSL”Each release carries a Linux x86_64 binary with a SHA256SUMS file:
v=$(basename "$(curl -fsSLo /dev/null -w '%{url_effective}' https://github.com/gmrdad82/p99/releases/latest)")mkdir -p ~/.local/bin && curl -fsSL "https://github.com/gmrdad82/p99/releases/download/$v/p99-$v-linux-x86_64.tar.gz" | tar -xz -C ~/.local/bin p99On Windows, install WSL (wsl --install in an administrator PowerShell), open the Ubuntu shell and run the same two lines there.
The macOS binary is built for Apple Silicon, and its tests pass on GitHub’s runner:
v=$(basename "$(curl -fsSLo /dev/null -w '%{url_effective}' https://github.com/gmrdad82/p99/releases/latest)")mkdir -p ~/.local/bin && curl -fsSL "https://github.com/gmrdad82/p99/releases/download/$v/p99-$v-macos-arm64.tar.gz" | tar -xz -C ~/.local/bin p99~/.local/bin needs to be on your PATH.
Check the download
Section titled “Check the download”Every release lists the SHA-256 of each archive in SHA256SUMS:
curl -fsSLO "https://github.com/gmrdad82/p99/releases/download/$v/p99-$v-linux-x86_64.tar.gz"curl -fsSL "https://github.com/gmrdad82/p99/releases/download/$v/SHA256SUMS" | sha256sum --check --ignore-missingOn macOS use shasum -a 256 --check in place of sha256sum --check.
From source
Section titled “From source”With Rust 1.97 or newer:
cargo install --locked --git https://github.com/gmrdad82/p99 --tag vX.Y.Z p99The Worker is built into the binary, so there is nothing else to install: no Node, no wrangler.
Quick start
Section titled “Quick start”-
Check the binary:
Terminal window p99 --versionp99 bundlep99 bundlelists the Worker this build uploads, without touching Cloudflare. -
Set up a Cloudflare account.
p99 setupasks for your name, your e-mail and a Cloudflare API token, then creates the D1 database, the R2 bucket, the Worker and a route for each host:Terminal window p99 setupSet up an account walks through every question.
-
Put one tag in the
<head>of every page of the site:<script src="/_p99/p99.js" async></script>Put P99 on a site covers placement, Content-Security-Policy and Cloudflare Access.
-
Invite yourself and open the link it prints:
Terminal window p99 invite example.com --name "Ada Lovelace" --email ada@example.com --managerThe “?” now shows on your pages. File a bug from it, then read it in the terminal:
Terminal window p99 list example.comp99 tui
The config lives in ~/.config/p99/config.toml; the configuration reference lists every key.