{"id":47814462,"url":"https://github.com/smallstack/claude-code-pr-dashboard","last_synced_at":"2026-04-03T18:23:07.054Z","repository":{"id":344314869,"uuid":"1180801919","full_name":"smallstack/claude-code-pr-dashboard","owner":"smallstack","description":"Desktop dashboard for managing GitHub PRs with parallel Claude Code sessions in isolated Docker containers","archived":false,"fork":false,"pushed_at":"2026-03-23T12:26:27.000Z","size":2987,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-24T09:57:29.229Z","etag":null,"topics":["claude-code","desktop-app","developer-tools","github","pr-review","svelte","tauri"],"latest_commit_sha":null,"homepage":"","language":"Svelte","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/smallstack.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-13T12:31:18.000Z","updated_at":"2026-03-23T12:26:17.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/smallstack/claude-code-pr-dashboard","commit_stats":null,"previous_names":["smallstack/claude-code-pr-dashboard"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/smallstack/claude-code-pr-dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallstack%2Fclaude-code-pr-dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallstack%2Fclaude-code-pr-dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallstack%2Fclaude-code-pr-dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallstack%2Fclaude-code-pr-dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smallstack","download_url":"https://codeload.github.com/smallstack/claude-code-pr-dashboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallstack%2Fclaude-code-pr-dashboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31368173,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T17:53:18.093Z","status":"ssl_error","status_checked_at":"2026-04-03T17:53:17.617Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","desktop-app","developer-tools","github","pr-review","svelte","tauri"],"created_at":"2026-04-03T18:23:02.066Z","updated_at":"2026-04-03T18:23:07.036Z","avatar_url":"https://github.com/smallstack.png","language":"Svelte","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Claude Code PR Dashboard\n\n**Is PR review and CI fixing the bottleneck in your AI-powered development workflow?** If you're running multiple Claude Code sessions across separate terminals, each paired with a browser tab to track the corresponding PR, this tool is for you. Manage all your open PRs in one place, spawn isolated Claude Code sessions per PR, and let them autonomously fix CI failures and address review comments — in parallel, with a single click.\n\n![Claude Code PR Dashboard](https://raw.githubusercontent.com/smallstack/claude-code-pr-dashboard/main/images/screenshot.png)\n\n## Why?\n\nA typical AI-assisted dev workflow looks like this: plan a task in Claude Code, let it implement, steer when needed, run `/fix-pr` to polish, then track the PR in the browser. Doing this across 3+ parallel workstreams means juggling terminal windows and browser tabs with no connection between them.\n\nThis app puts everything in one place — PR list, CI status, and Claude Code terminals side by side.\n\n## Architecture\n\n```\n┌──────────────────────────────────────────────────────┐\n│  ┌──────────┐  ┌──────────────────────────────────┐  │\n│  │ Sidebar  │  │ Terminal Sessions (1-5)          │  │\n│  │          │  │                                  │  │\n│  │ owner/   │  │ ┌──────────┐ ┌──────────┐       │  │\n│  │ repo     │  │ │ PR #42   │ │ Shell    │  ...  │  │\n│  │ [Load]   │  │ │ claude\u003e  │ │ $        │       │  │\n│  │          │  │ └──────────┘ └──────────┘       │  │\n│  │ PR List  │  │                                  │  │\n│  │ #42 ...  │  │ (each Claude session runs in     │  │\n│  │ #38 ...  │  │  its own Docker container)       │  │\n│  └──────────┘  └──────────────────────────────────┘  │\n└──────────────────────────────────────────────────────┘\n```\n\n## How It Works\n\nEach Claude Code session runs inside an isolated **Docker container**. When you click \"Open CLI\" or \"Auto Fix\" on a PR:\n\n1. The app spawns a new container from the `docker/` image\n2. The container clones the target repository using your GitHub token\n3. If a branch is specified (Auto Fix), it checks out the PR branch\n4. Dependencies are installed (`npm ci` if `package.json` exists)\n5. Bundled commands (like `/fix-pr`) are injected if the repo doesn't have its own\n6. Claude Code launches with `--dangerously-skip-permissions` (safe inside the container)\n\nEach session gets a fully isolated environment — no worktree conflicts, no local repo needed, and multiple sessions can work on different branches simultaneously.\n\n### The `/fix-pr` Command\n\nThe app ships with a generic `/fix-pr` command that works across any repository. When triggered, Claude will:\n\n1. Read the repo's own instructions (CLAUDE.md, CONTRIBUTING.md, etc.)\n2. Merge main and resolve conflicts\n3. Analyze CI failures and review comments\n4. Fix issues with local validation\n5. Push and iterate (up to 5 attempts) until CI is green\n\nIf a repo already has its own `.claude/commands/fix-pr.md`, that takes precedence over the bundled version.\n\n## Prerequisites\n\n- [Node.js](https://nodejs.org/) \u003e= 18\n- [Rust](https://www.rust-lang.org/tools/install) (latest stable)\n- [Tauri v2 CLI](https://v2.tauri.app/start/prerequisites/)\n- [Docker](https://docs.docker.com/get-docker/) (with Docker Compose)\n- [GitHub CLI](https://cli.github.com/) (`gh`) — authenticated via `gh auth login`\n- [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code) — authenticated once locally (credentials are mounted into containers)\n- System dependencies for Tauri (see [Tauri prerequisites](https://v2.tauri.app/start/prerequisites/))\n\n## Setup\n\n```bash\n# Install frontend dependencies\nnpm install\n\n# Install Tauri CLI\ncargo install tauri-cli --version \"^2\"\n\n# Build the Docker image (one-time)\ndocker compose -f docker/docker-compose.yml build\n\n# Run in development mode\ncargo tauri dev\n```\n\n## Configuration\n\nAll settings are configured in the app's Settings panel (no environment variables needed):\n\n- **GitHub Token** — for listing PRs and cloning repos inside containers\n- **Claude Credentials Path** — path to your `~/.claude/.credentials.json` (mounted read-only into containers)\n- **Git Name / Email** — optional, used for commits inside containers\n\n## Usage\n\n1. Enter a GitHub repository (e.g. `owner/repo`) in the sidebar\n2. Click **Load** to fetch open PRs (auto-refreshes every 10 minutes)\n3. For each PR you can:\n   - **Open CLI** — spawns a Docker container with the repo cloned, opens Claude Code\n   - **Auto Fix** — spawns a container, checks out the PR branch, and sends `/fix-pr`\n   - **Open PR** — opens the PR in your browser\n4. Click **+ New Shell Session** for a local terminal (no Docker)\n5. Up to 5 sessions can run side-by-side\n\n## Tech Stack\n\n| Layer | Technology | Purpose |\n|-------|-----------|---------|\n| Shell | Tauri v2 | Lightweight desktop runtime (smaller and faster than Electron) |\n| Frontend | Svelte 5 (runes) | Reactive UI |\n| Bundler | Vite 6 | Frontend build tooling |\n| Terminal | xterm.js | Terminal emulation |\n| PTY | portable-pty (Rust) | Cross-platform pseudo-terminal |\n| Sandbox | Docker | Isolated Claude Code environment per session |\n| GitHub | gh CLI | PR data and authentication |\n| AI | Claude Code CLI | AI-powered code fixing |\n\n## Downloads\n\nPre-built binaries are automatically published to [GitHub Releases](https://github.com/smallstack/claude-code-pr-dashboard/releases) for every release:\n\n| Platform | Formats |\n|----------|---------|\n| Linux | `.deb`, `.AppImage` |\n| Windows | `.msi`, `.exe` (NSIS installer) |\n| macOS (Apple Silicon) | `.dmg` |\n| macOS (Intel) | `.dmg` |\n\n\u003e **Note:** Binaries are unsigned. On Windows you may see a SmartScreen warning, and on macOS a Gatekeeper prompt — both can be dismissed to proceed with installation.\n\n## Limitations\n\n- **Max 5 sessions** — practical limit for side-by-side usability\n- **Requires Docker** — each Claude session runs in a container\n- **Requires `gh` CLI on host** — for listing PRs in the sidebar\n- **Linux/macOS primary** — Tauri v2 supports Windows but Docker/PTY behavior may differ\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmallstack%2Fclaude-code-pr-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmallstack%2Fclaude-code-pr-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmallstack%2Fclaude-code-pr-dashboard/lists"}