Got questions or doubts? Ping me on Discord
What it does
P99 is extremely highly opinionated: it runs on Cloudflare, and that's its only requirement. One Cloudflare account runs one Worker, one D1 database and one R2 bucket, on your own site's domain at /_p99/. No other server, no framework, no other database, no other service, and nothing from your stack.
-
One tag, every page
The loader is a classic script of about 2 KB that draws the + in its own closed Shadow DOM, only for people holding a personal code. For everyone else it reads nothing and draws nothing, and it works under a strict Content-Security-Policy.
README More on Widget<script src="/_p99/p99.js" async></script> -
Captures that keep secrets
The visible screen, the whole page or regions the person marks go with the item. Fields marked data-p99-redact, and every password field, are blanked in every capture, and the address is kept without its query string and hash.
README
-
A board on your site
A manager opens Board in the panel and gets the site's board over the page: Inbox, Doing, Review and Done, each renameable, and cards to drag with the mouse, a finger or the keyboard. A move made anywhere, in the browser, the terminal or by an agent, slides into place on every open board within about a second.
README -
The inbox in your terminal
p99 alone opens the inbox: every item across your sites and Cloudflare accounts, or one site at a time, with its host and its label on every row. Read a thread, reply, add an internal note, move it to another label, or assign it.
README More on Terminal -
Boards in the terminal and for agents
Every item carries one label, its state, and a board is one manager's columns of labels in that person's order: the top matters most, and there is no priority field to fill. Moving a card gives the item that column's label, so a shared label hands work from one board to another. The Board tab of p99 tui drags cards with the keys or the mouse, and p99 move does the same from a script or an agent.
READMEp99 move BUG-12 --to Doing p99 boards -
A CLI for people and agents
Every command answers --json. An agent acting for you runs with --agent, and its items, comments and changes show as your name with an asterisk, so your words and your agent's never look alike. p99 watch prints each change as it happens.
README
-
One item for the same report
p99 merge folds duplicates into one item. Their reporters follow it: they read its public thread in the panel and get its replies, its closing and its landings by mail.
READMEp99 merge BUG-14 BUG-15 --into BUG-12 -
GitHub, kept small
Link a site to a repository: p99 github open makes a GitHub issue for an item, and when a pull request carrying Fixes: BUG-12 merges, or that issue is closed, the item is marked fixed.
the GitHub guidep99 github set example.com --repo acme/shop --token-ref env:GITHUB_TOKEN p99 github open BUG-12 -
Slack and Discord
A site posts its new items, comments, closed items and shipped fixes to a Slack channel, a Discord channel or both, through an incoming webhook: no app to install, and the URL is kept sealed and never shown again.
hosts.mdp99 hooks set example.com --slack <webhook URL> -
Mail for reporters
A reporter gets a mail when someone replies, when the item is closed or reopened and when the fix ships, in the site's colours with a plain-text part. Each mail's link opens the item straight in the panel, and one click stops mail about that item.
README -
Where a fix landed
p99 announce reads your commits' Fixes: and Refs: trailers and tells P99 which environment a build reached, so each item shows when its fix is on dev and in production.
README
-
Setup that explains itself
p99 setup says which Cloudflare API token to create and why each permission is needed, checks it, then creates the D1 database, the R2 bucket, the key, the Worker and a route for each site. It is safe to run again.
README More on Cloudflare