Single-binary CLI. Pipes to jq, scripts, your editor.
Read and write brief.md, list pitches, draft outreach, manage submissions, all from the terminal. The Bun runtime is bundled inside each binary; no Node install required.
Download from GitHub Releases.
Single-binary releases on every tag. The CLI repository is private, so use gh signed in (gh auth login) to download the binary for your platform. The commands below handle it. A plain browser link to github.com/Startvest-LLC/prapi-cli/releases only resolves if you are signed in to GitHub with access. A curl | sh installer ships alongside v1.
macOS / Linux
gh release download v0.36.0 \ --repo Startvest-LLC/prapi-cli \ --pattern 'prapi-darwin-arm64' \ --output /usr/local/bin/prapi chmod +x /usr/local/bin/prapi prapi --version
Swap the pattern for prapi-darwin-x64 on Intel Macs or prapi-linux-x64 on Linux.
Windows (PowerShell)
gh release download v0.36.0 ` --repo Startvest-LLC/prapi-cli ` --pattern 'prapi-windows-x64.exe' ` --output $env:USERPROFILE\bin\prapi.exe prapi --version
Make sure %USERPROFILE%\bin is on your PATH, or move the binary somewhere that already is.
All builds
| OS | Arch | Asset | Size |
|---|---|---|---|
| macOS | Apple Silicon | prapi-darwin-arm64 | 64 MB |
| macOS | Intel | prapi-darwin-x64 | 69 MB |
| Linux | x86_64 | prapi-linux-x64 | 95 MB |
| Windows | x86_64 | prapi-windows-x64.exe | 99 MB |
Verify the SHA256 against SHA256SUMS attached to the same release.
Five minutes from install to first pitch.
prapi auth login opens your default browser, you approve, and the key is delivered back over a one-shot localhost callback. No paste.
# Authenticate (browser device flow)
prapi auth login
prapi auth whoami | jq
# brief.md authoring (Git-canonical via /publish)
prapi brief pull startvest/my-brand > brief.md
$EDITOR brief.md
prapi brief push startvest/my-brand -f brief.md
prapi brief publish startvest/my-brand
# Pitches
prapi brands | jq '.brands[] | {id, slug}'
prapi pitches list --since-hours 72 --min-score 60 | jq '.items[].query_id'
prapi pitches draft <queryId> --brand <brandId>
prapi pitches status <draftId> --set sent --notes "sent via Gmail"Need a token instead of the browser flow? prapi auth login --token <key> writes directly to ~/.config/prapi/config.json. Generate keys at app.prapi.dev/pr-pitch/settings.
What ships today.
29 command groups across every shipped PRAPI module. Every command outputs JSON to stdout, diagnostics to stderr. Pipes cleanly to jq, fzf, scripts.
prapi auth
loginbrowser flow OR --token pastelogoutclear saved keywhoamiverify token + show user
prapi brief
pullfetch a brand brief.mdpushreplace document (marks DIRTY)publishcommit DIRTY → Giteditpull → $EDITOR → pushvalidateparse without savingstate / history / diffinspect + audit
prapi pitches
listrecent pitches with best brand matchgetfull details + scores + latest draftscorerescore vs all brandsdraftgenerate a pitch draftoverrideclear a quality gate + retrystatusmark sent / landed / skipped
prapi brands
- list your brand UUIDs
prapi calendar
slots / cadencelist slots + see posting cadencedraft / generateattach existing or LLM-generate a draftpublishship a slot to Buffer / CMSstrategygenerate + commit a multi-week planengagementrecord + read post-publish metrics
prapi outbound
prospects / sequenceslist across brandstouches / getlist + inspect individual touchesenroll / mark-sentadd prospects, mark a touch sentinboxunread replies + classifylogin / runLinkedIn paste-and-validate flow
prapi content
draftslist content-module draftsget / approve / rejectreview queue from the shell
prapi assets
list / getinspect brand assets + variantsversions / restoretime-travel an assetvisibility / deleteprivate/public + hard delete
prapi submissions
list / getdirectory-submission staterunlocal Playwright fill of a directory form
prapi portfolio
signalsopen cross-module compounding signalsactivityunified cross-module event streamack / act / dismisstriage signals from the shell
prapi outlets
layer <domain>5-layer outlet taxonomy lookup
prapi aio
briefsAI Overview citation-gap briefs by propertybrief <id>outline + competitor refs for a single briefpublish <id> <url>mark a brief published (idempotent)outcomeswin-rate by property + by format
Same engine as the web app and MCP server.
Every command is a thin client over /api/v1/*, the same bearer-authed REST surface the dashboard and MCP server share. A curl | sh installer ships alongside v1; until then GitHub Releases is the install path.