prowl

command module
v0.1.0-rc1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 22, 2026 License: Apache-2.0 Imports: 1 Imported by: 0

README ΒΆ

πŸ¦‰ prowl

Keep watch over your pull requests.

A single-binary CLI + TUI for keeping tabs on the GitHub Pull Requests you care about. Track a list of PR URLs, then run a single command to see their current state (open / draft / merged / blocked), assignees, and GitHub merge-queue position β€” all in a Bubble Tea interactive table, with Enter to open the PR in your browser.

πŸ¦‰ prowl  πŸ“Š 2 open Β· 1 merged Β· 0 closed

  PR     β”‚ Assignee   β”‚ Status        β”‚ Queue                β”‚ Pos β”‚ ETA β”‚ URL
 ────────┼────────────┼───────────────┼──────────────────────┼─────┼─────┼──────────
  #1234  β”‚ alice      β”‚ open          β”‚ queued (mergeable)   β”‚ 2   β”‚ ~7m β”‚ …pull/1234
  #1235  β”‚ bob,carol  β”‚ open/blocked  β”‚ -                    β”‚ -   β”‚ -   β”‚ …pull/1235
  #1198  β”‚ dave       β”‚ merged        β”‚ -                    β”‚ -   β”‚ -   β”‚ …pull/1198

  ↑↓ nav Β· ⏎ open Β· c copy Β· d delete Β· r refresh Β· q quit

Features

  • Interactive Bubble Tea TUI with arrow nav, open / copy / delete / refresh.
  • One-shot non-interactive listing with prowl list (use --json for agents).
  • GitHub merge-queue awareness (position + ETA).
  • Lightweight archival: move merged / closed PRs out of the active list.
  • Single static binary, no runtime dependencies beyond gh (used for auth).
  • XDG-compliant data files, compatible with the legacy prowl.sh.

Install

Homebrew (macOS / Linux)
brew install figarocorso/tap/prowl
go install
go install github.com/figarocorso/prowl@latest
Pre-built binaries

Grab the archive for your platform from the releases page and drop the extracted prowl binary anywhere on your PATH.

From source
git clone https://github.com/figarocorso/prowl.git
cd prowl
go build -o prowl .

Then verify:

prowl check

Requirements

  • gh (GitHub CLI), authenticated for repos you want to inspect (prowl shells out to gh for auth state but uses cli/go-gh directly for API calls).

Optional:

  • open (macOS) / xdg-open (Linux) β€” open PRs in browser on Enter.
  • pbcopy / wl-copy / xclip / xsel β€” copy URL to clipboard.

Usage

prowl                                       # interactive TUI
prowl list                                  # plain table on stdout
prowl list --json                           # JSON array (agent-friendly)
prowl list --open                           # only currently-open PRs
prowl list --source reviewed                # show archived list
prowl add https://github.com/owner/repo/pull/123
prowl remove https://github.com/owner/repo/pull/123
prowl archive                               # move merged/closed to reviewed
prowl get <url> [--json]                    # single-PR detail
prowl check                                 # environment / auth / data dir
prowl version
Data files

prowl tracks two plain-text files, one URL per line:

File Purpose
prs-active.txt PRs you're watching
prs-reviewed.txt Archive of PRs once they've merged or been closed

By default they live in ${XDG_DATA_HOME:-$HOME/.local/share}/prowl/. Legacy prs-unmerged.txt / prs-merged.txt / prs-closed.txt files are migrated automatically on first run.

Choosing a different data directory

Priority (highest to lowest):

  1. --data-dir <path> flag
  2. PROWL_DATA_DIR env var
  3. ${XDG_DATA_HOME}/prowl
  4. ~/.local/share/prowl

Individual file paths can also be overridden via PROWL_ACTIVE and PROWL_REVIEWED.

Optional config file

prowl looks for an optional YAML config at ${XDG_CONFIG_HOME:-~/.config}/prowl/config.yml:

refresh_interval: 30s
columns: [PR, Assignee, Status, Queue, URL]
Raycast integration (macOS)

This repo ships two Raycast Script Commands in raycast/ that launch prowl in an iTerm tab.

By default they prefer the Go binary prowl; if it isn't on PATH they fall back to prowl.sh (legacy). Override with PROWL_BIN=/abs/path.

Authentication

prowl uses cli/go-gh and inherits whatever credentials gh has set up. Authenticate once with:

gh auth login

Public PRs work without authentication; private PRs require it.

AI / agent integration (MCP server)

prowl ships a stdio Model Context Protocol server so AI agents can query your tracked PRs directly. Start it with:

prowl mcp

Available tools (read-only by default):

Tool Purpose
list_prs List tracked PRs. Filter by source / status / assignee.
get_pr Full detail for a single PR (state, assignees, queue position).
get_pr_diff Unified diff for a PR (or summary=true for {files,+,-} digest).

Mutating tools (add_pr, remove_pr) are gated behind --allow-mutations or PROWL_MCP_ALLOW_MUTATIONS=true.

Claude Code / Claude Desktop config

Add to your mcpServers section:

{
  "mcpServers": {
    "prowl": {
      "command": "prowl",
      "args": ["mcp"]
    }
  }
}

To enable mutations, swap the args for ["mcp", "--allow-mutations"].

Legacy bash script

The original prowl.sh (Bash + gh + jq) lives in legacy/ for users not ready to switch. It reads the same data directory as the Go binary, so the two can coexist.

License

Apache License 2.0 β€” see LICENSE.

Contributing

Issues and pull requests welcome. Keep changes focused, small, and self-contained.

Documentation ΒΆ

The Go Gopher

There is no documentation for this package.

Directories ΒΆ

Path Synopsis
internal
data
Package data fetches Pull Request metadata from GitHub.
Package data fetches Pull Request metadata from GitHub.
mcp
Package mcp implements a small stdio JSON-RPC 2.0 server that speaks the Model Context Protocol.
Package mcp implements a small stdio JSON-RPC 2.0 server that speaks the Model Context Protocol.
store
Package store reads and writes the plain-text PR list files used by prowl.
Package store reads and writes the plain-text PR list files used by prowl.
tui
Package tui hosts the Bubble Tea TUI for prowl.
Package tui hosts the Bubble Tea TUI for prowl.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL