CLI reference
Every command and flag of p99, generated from its own definitions. p99 <command> --help prints the same in the terminal.
p99 [OPTIONS] <COMMAND>Global options
Section titled “Global options”These work with every command.
| Argument | What it does |
|---|---|
--json |
Answer in JSON, for agents and scripts |
--account <name> |
The account to use, when the config has several |
--agent |
Act as an agent of the configured person, shown as their name with a * (or P99_AGENT=1) |
p99 tui
Section titled “p99 tui”Open the inbox in the terminal.
p99 tui [OPTIONS]p99 setup
Section titled “p99 setup”Set up an account, step by step: the Cloudflare token, D1, R2, the Worker, routes and keys.
p99 setup [OPTIONS]| Argument | What it does |
|---|---|
--token <token> |
The Cloudflare API token, or a reference to it; P99_TOKEN in the environment keeps it out of the shell history |
--account-id <id> |
The Cloudflare account id |
--name <name> |
Your name, as P99 shows it |
--email <email> |
Your e-mail, which becomes a manager |
--vault <vault> |
Keep the token and the key in this vault of the password manager CLI |
--no-vault |
Keep the secrets in the config file (mode 0600) |
--yes |
Take the default for every question, never ask |
--worker <name> |
The Worker’s script name (p99) |
--database <name> |
The D1 database’s name (p99) |
--bucket <name> |
The R2 bucket’s name (p99) |
--host <host[=env[:kind]]> |
A host this account serves, with its environment and kind (production:release by default); repeat it |
--rate-namespace <id> |
The rate-limiting namespace id, when setup can’t pick a free one |
--resend-key <key> |
A Resend API key, which turns mail on; P99_RESEND_KEY in the environment keeps it out of the shell history |
--mail-from <from> |
The mail sender, such as “P99 <p99@example.com>” |
--no-mail |
Leave mail off without asking |
p99 deploy
Section titled “p99 deploy”Upload this version’s Worker to an account.
p99 deploy [OPTIONS]| Argument | What it does |
|---|---|
--no-check |
Skip the health check of the account’s hosts |
p99 bundle
Section titled “p99 bundle”List the Worker build embedded in this binary, without touching Cloudflare.
p99 bundle [OPTIONS]p99 hosts
Section titled “p99 hosts”List the hosts P99 serves; add, remove or set one.
p99 hosts [OPTIONS] [COMMAND]p99 hosts add
Section titled “p99 hosts add”Add a host: its route, its record and its environment.
p99 hosts add [OPTIONS] <HOST>| Argument | What it does |
|---|---|
<HOST> |
Required |
--env <ENV> |
The host’s environment. Default production |
--kind <KIND> |
The environment’s kind, when it is new or changes. One of development, release |
p99 hosts remove
Section titled “p99 hosts remove”Remove a host from the Worker and the config; its items stay.
p99 hosts remove [OPTIONS] <HOST>| Argument | What it does |
|---|---|
<HOST> |
Required |
p99 hosts set
Section titled “p99 hosts set”Change where the button sits, which pages it skips, its theme and words.
p99 hosts set [OPTIONS] <HOST>| Argument | What it does |
|---|---|
<HOST> |
Required |
--corner <CORNER> |
The button’s corner. One of bottom-right, bottom-left, top-right, top-left |
--offset <X,Y> |
Pixels from the corner’s two edges |
--above <selector> |
Sit above this element while it shows |
--off <pattern> |
A path where P99 never loads; repeat it, they replace the list |
--theme <key=value> |
A theme variable; an empty value removes it. Repeatable |
--string <key=value> |
One of the panel’s words; an empty value removes it. Repeatable |
p99 invite
Section titled “p99 invite”Mint a personal code for a person on one or more hosts.
p99 invite [OPTIONS] --name <NAME> --email <EMAIL> <HOSTS>...| Argument | What it does |
|---|---|
<HOSTS>... |
The hosts the code works on. Required |
--name <NAME> |
The person’s name, as P99 shows it |
--email <EMAIL> |
The person’s e-mail, which ties their items to them |
--manager |
Let the person see and change every item |
p99 invites
Section titled “p99 invites”List the personal codes.
p99 invites [OPTIONS]| Argument | What it does |
|---|---|
--host <HOST> |
Only the codes for this host |
p99 revoke
Section titled “p99 revoke”Revoke a personal code.
p99 revoke [OPTIONS] <ID>| Argument | What it does |
|---|---|
<ID> |
The code’s id, from p99 invites. Required |
p99 list
Section titled “p99 list”List items.
p99 list [OPTIONS] [HOST]| Argument | What it does |
|---|---|
<HOST> |
The host to list |
--all |
Every host |
--status <STATUS> |
Open, closed, any or one status. Default open |
--kind <KIND> |
Only this kind: bug, feature, improvement, question or task |
--mine |
Only what you reported |
-q, --query <text> |
Items whose title or text holds these words, accents ignored |
--limit <LIMIT> |
At most this many items. Default 50 |
p99 show
Section titled “p99 show”Show an item with its comments, events and landings.
p99 show [OPTIONS] <KEY>| Argument | What it does |
|---|---|
<KEY> |
The item’s key, such as BUG-12, or its number. Required |
--host <HOST> |
The host the item belongs to |
p99 file
Section titled “p99 file”File an item on a host.
p99 file [OPTIONS] --kind <KIND> --title <TITLE> <HOST>| Argument | What it does |
|---|---|
<HOST> |
The host the item is for. Required |
--kind <KIND> |
What it is. One of bug, feature, improvement, question, task |
--title <TITLE> |
One line that says what it is about |
--body <BODY> |
The text, or - to read it from standard input |
--page <path> |
The page it is about. Default / |
--attach <file> |
A file to attach; repeat it |
p99 comment
Section titled “p99 comment”Comment on an item.
p99 comment [OPTIONS] <KEY> <TEXT>| Argument | What it does |
|---|---|
<KEY> |
The item’s key, such as BUG-12, or its number. Required |
<TEXT> |
The text, or - to read it from standard input. Required |
--internal |
For managers only |
--attach <file> |
A file to attach; repeat it |
--host <HOST> |
The host the item belongs to |
p99 status
Section titled “p99 status”Change an item’s status.
p99 status [OPTIONS] <KEY> <STATUS>| Argument | What it does |
|---|---|
<KEY> |
The item’s key, such as BUG-12, or its number. Required |
<STATUS> |
The new status. Required; one of new, confirmed, in_progress, waiting, resolved, abandoned, duplicate |
--duplicate-of <KEY> |
With duplicate: the item this one repeats |
--host <HOST> |
The host the item belongs to |
p99 assign
Section titled “p99 assign”Assign an item to someone, or to no one.
p99 assign [OPTIONS] <KEY> [WHO]| Argument | What it does |
|---|---|
<KEY> |
The item’s key, such as BUG-12, or its number. Required |
<WHO> |
An e-mail address, or me |
--none |
Leave it unassigned |
--host <HOST> |
The host the item belongs to |
p99 download
Section titled “p99 download”Download an attachment.
p99 download [OPTIONS] <ID>| Argument | What it does |
|---|---|
<ID> |
The file’s id, from p99 show. Required |
-o, --out <path> |
Where to save it (its own name by default) |
p99 announce
Section titled “p99 announce”Tell P99 which items this checkout’s commits fixed or referred to.
p99 announce [OPTIONS] [HOST]| Argument | What it does |
|---|---|
<HOST> |
The host the build went to; its environment is the build’s |
--env <ENV> |
The environment, when no host names it |
--branch <BRANCH> |
The branch (the current one by default) |
--version <VERSION> |
The version (git describe by default) |
--rev <range> |
A git range; the default is the last 500 commits |
p99 import
Section titled “p99 import”Bring items over from another tracker, keeping their keys and numbers.
p99 import [OPTIONS] --host <HOST> <bundle-dir>| Argument | What it does |
|---|---|
<bundle-dir> |
A directory holding bundle.jsonl and the files it names. Required |
--host <HOST> |
The host the items belong to |
--dry-run |
Report what would change, and write nothing |