poppa · Rust + Playwright · CLI · interactive console · MCP
Poppa
Poppa gets pull requests through a Proof of Presence check. Some enterprise GitHub organisations require one before a pull request can merge: a person signs in through the organisation's identity provider for that exact commit. Poppa finds the pull requests waiting on it across several accounts, opens their sign-in pages in a batch or completes them one at a time, and merges them only if asked.
poppa list # ready PRs needing PoP, every configured account
poppa open --dry-run # preview the sign-in tabs
poppa auto # complete them one at a time
poppa auto --merge --squash # then request squash merges
poppa i # the interactive console
Finding pull requests
Accounts are GitHub logins on their hosts, each authenticated with gh. For every call, Poppa asks gh for that login's token and hands it only to that account's own API children: it never switches gh's active account, never stores a token, and strips ambient token variables first, so a personal token can't silently stand in for a work login.
Drafts are excluded unless you include them, and "ready" means only "not a draft": not approved, not green, not mergeable. open launches one sign-in tab per PR, in a stable order, and stops there: a dispatched tab is not a completed check, so you rerun list to see what actually passed.
Serial mode
poppa auto works through the queue serially in one dedicated, persistent browser, waiting for GitHub to confirm the check on the PR's exact head commit, and for the sign-in to settle, before it touches the next.
- The password stays put. It comes from a local secret file or a single hidden-echo prompt, lives only for the run, and is never accepted in arguments, configuration, the environment or MCP, nor given to the browser automation.
--no-passwordleaves verification to you. - Merging is separate and explicit.
--auto-mergeand--mergecompose with the check, never replace it;listonly previews them, andautouses GitHub's normal rules with the head commit pinned and no admin bypass. - A console for people.
poppa ilists every PR with its check and merge state, multi-selects, proves, merges, edits, closes, publishes drafts and reruns failed checks, with detail and diff panes, on the same serial core. - The same for agents.
poppa mcp stdioexposes the same operations; configuration is reloaded on every call.