Skip to content
PatchDeck
Local-first · MIT · v1.6.0

Stop babysitting your pull requests.

PatchDeck watches the repositories you choose, pulls review comments and failing checks into one dashboard, then runs your own coding agent in an isolated worktree to fix what needs fixing.

npm install -g @jeremymcs/patchdeck

then run patchdeck → dashboard on localhost:5001

Node 22+  ·  Git  ·  Claude Code or Codex

localhost:5001
The PatchDeck dashboard: counters for watched repos, open PRs, open issues, processing and failed jobs, a list of watched repositories, and a live activity feed of pull requests being monitored.

The problem

Writing the code was never the slow part

A pull request goes up in minutes. Then it sits — waiting on a review comment nobody actioned, a check that failed for a boring reason, a thread left unresolved. The work isn't hard. It's just scattered across tabs, and it's easy to forget.

Feedback goes stale

Review comments pile up across PRs. Some need real thought. Most need a two-line change that nobody has gotten around to.

Checks fail quietly

A lint rule, a flaky job, a snapshot that needed updating. You find out when you next open the tab — which might be tomorrow.

Context lives in tabs

Figuring out what still needs action means opening every PR, one at a time, and reconstructing where each one got stuck.

How it works

Watch. Sync. Triage. Dispatch.

PatchDeck runs on your machine, polls the repos you point it at, and turns every piece of open feedback into a tracked item with a visible state.

  1. Step 01

    Watch

    Add a repository or paste a single PR URL. New repos default to My PRs only so you don't accidentally monitor the whole team on day one.

  2. Step 02

    Sync

    Review comments, review threads, PR status, mergeability, CI state and activity logs land in one local database.

  3. Step 03

    Triage

    Each item is sorted into work to accept, feedback to reject as a no-op, or something flagged for a human to look at.

  4. Step 04

    Dispatch

    Accepted work runs in a clean git worktree. Verified fixes get committed and pushed, threads get replies, conversations get resolved.

Every feedback item has a visible state

pending queued in_progress resolved rejected flagged failed no action needed needs a human decision retried with backoff

What's inside

One deck for everything around the code

Pull requests

See every open thread in one place

PatchDeck stores each PR's comments, review threads, failing checks, mergeability, docs-assessment state and local activity log. When work is accepted it prepares a clean worktree, runs your agent with the PR context, and handles the follow-up — pushing commits, replying on GitHub, resolving threads, polling CI.

  • Pause automation on a single PR without losing its state
  • Trusted reviewers and ignored bots, configurable per install
  • Direct PR URLs stay tracked regardless of repo scope
Pull requests
The PatchDeck pull requests page listing tracked PRs with their review threads, check status and per-PR actions.

Issues

Turn a labelled issue into an open PR

Hit Work issue and PatchDeck creates an isolated worktree, works from the issue context, pushes a branch and opens a linked pull request. Automatic issue work is opt-in per repository and gated by labels.

Ready labels

ready-for-agent
ready-to-work
agent-ready
ready

Blocking labels

blocked · question
needs-maintainer-review
needs-author-feedback
needs-discussion

Issues
The PatchDeck issues page showing issue bodies, labels, work state, failed attempts and linked pull requests.

Releases

Version bump, notes, published

PatchDeck can evaluate merged PRs for release-worthiness, propose a version bump, write the release notes and create the GitHub release. The Releases page shows both PatchDeck runs and releases created outside the app.

Automatic release creation is off by default. Leave it off and use the manual Release button instead.

Releases
The PatchDeck releases pipeline showing release runs, proposed version bumps and published GitHub releases.

CI & deployment healing

Bounded repairs for boring failures

When enabled, PatchDeck classifies failing checks, opens a healing session, and only attempts repairs for failures it considers fixable in the PR branch. Retry limits and concurrency are yours to set. Post-merge, it can watch supported deployments and open a follow-up fix PR if one fails.

Deployment platform detection currently covers Vercel and Railway markers, and the matching CLI must be installed and authenticated on the same machine.

build / lint
failed
healing session
attempt 1/3
build / lint
passing

Illustration of a healing session. CI healing is disabled until you turn it on.

Logs

Watch exactly what it did

Structured logs stream to stdout and to ~/.patchdeck/log/server.log. The Logs page adds filtering, search and live tailing. GitHub tokens are redacted before anything is written.

Because every agent run is recorded, you can turn automation on one switch at a time and check the trail before trusting the next one.

Logs
The PatchDeck logs page with filtering, search and live tailing of structured server log records.

Safety

Local-first, and cautious on purpose

PatchDeck drives a coding agent against real branches, so it is built to be boring about it. State lives on the machine running it, git work happens in app-owned worktrees, and the automatic paths ship switched off.

PatchDeck can spend paid agent usage when automation is enabled. Start manually, watch the logs, and only turn on the automatic paths you actually trust.

Settings
The PatchDeck settings page with toggles for automation, agent selection, retry limits and GitHub credentials.

Your data stays put

Everything lives in ~/.patchdeck/state.sqlite. No PatchDeck server, no telemetry, no account.

Isolated worktrees

Agents never touch your working copy. Each run gets a clean git worktree under the PatchDeck home directory.

Off by default

Automatic releases, CI healing and deployment healing are all disabled until you explicitly enable them.

Spend ceiling

Cap agent runs per rolling hour across every path. At the ceiling, work waits instead of failing, then resumes on its own.

Drain mode

Pause all new agent work in one switch without deleting a single piece of tracked state.

Bounded retries

Failures retry with backoff up to your limit. Anything needing a person is parked under Needs attention.

Interfaces

Four ways in, one local state

Web dashboard

patchdeck

The primary UI for PRs, issues, releases, logs and settings.

MCP server

patchdeck mcp

Tool access from any MCP-compatible host, against the same local state.

Local REST API

starts with the server

Programmatic access for your own scripts and dashboards.

Desktop app

npm run tauri:build

A native shell that keeps PatchDeck in the macOS menu bar with live counts.

You can also just ask it things — natural-language questions about tracked PR state work from the dashboard, the API and MCP.

Install

Running in about a minute

Terminal

1 · Install

npm install -g @jeremymcs/patchdeck

2 · Start

patchdeck

Opens http://localhost:5001 in your browser.

Prerequisites

  • Node.js 22+ and Git
  • GitHub auth via gh auth login, GITHUB_TOKEN, or a token saved in Settings
  • A local coding CLI: claude or codex, installed and authenticated

A cautious first run

  1. 1

    Add one repository, or paste a single PR URL.

  2. 2

    Confirm GitHub auth in Settings if no token was picked up automatically.

  3. 3

    Keep repo discovery on My PRs only until you want team-wide monitoring.

  4. 4

    Turn off Auto PRs and Auto Issues before adding busy repos.

  5. 5

    Work manually until the behaviour looks right, then re-enable the automatic paths you want.

FAQ

Reasonable questions

Does PatchDeck cost anything?

PatchDeck itself is free and MIT-licensed. It drives your coding agent, though — so when automation is enabled it can spend whatever your Claude Code or Codex plan charges. That's why every automatic path ships off, and why there's an hourly ceiling on agent runs.

Which coding agents are supported?

Claude Code (claude) and OpenAI Codex (codex). Install and authenticate one on the same machine; you can also configure a fallback agent for when the primary is unavailable.

Where does my data go?

Nowhere. State is a SQLite file at ~/.patchdeck/state.sqlite (override with PATCHDECK_HOME). There is no PatchDeck backend and no account to create. Traffic goes to GitHub and to your agent's provider, and nowhere else.

Will it push to my branches without asking?

Only on paths you've enabled. When work is accepted and automation is on, PatchDeck commits and pushes verified fixes to the PR branch and can reply to review threads. Turn off Auto PRs and Auto Issues to keep everything manual, use drain mode to pause new work, or pause a single PR without untracking it.

Can I reach the dashboard from another machine?

Yes, and it's opt-in. Set PATCHDECK_WEB_USERNAME and PATCHDECK_WEB_PASSWORD (or save credentials in Settings) before starting. Local browser and local API access don't need a login. Put TLS in front of it before exposing it outside a trusted network.

Do I have to let it run automatically?

No. Plenty of people run PatchDeck purely as a dashboard — one place to see which PRs have unresolved threads or failing checks — and press the buttons themselves. The automation is there when you want it.

Give your PRs somewhere to land

Free, MIT-licensed, and it runs entirely on your machine.

npm install -g @jeremymcs/patchdeck