Skip to main content

RepoKeeper logo

RepoKeeper

CI codecov PyPI Python RepoKeeper Docs

AI-powered open source maintainer agent. Reads issues, writes code, opens PRs — 24/7.

# Label an issue agent-todo — RepoKeeper handles the rest
/repokeeper go

Zero config. GitHub-native. ~$0.01 per PR with DeepSeek.


Why RepoKeeper?

Open source maintenance is a second job you didn't sign up for. GitHub Copilot helps you write code in the editor, and its Code Review feature reviews PRs. CodeRabbit and PR-Agent (Qodo) automate PR workflows with line-level suggestions and descriptions. But what about everything else? Implementing issues, bumping dependencies, diagnosing CI, monitoring your community, and iterating on fixes?

Copilot codes with you. CodeRabbit and PR-Agent review PRs. RepoKeeper runs your repo while you sleep.

Copilot Code Review CodeRabbit PR-Agent (Qodo) RepoKeeper
Issue → PR No No No Yes — native + Pi
Conversational PR fix No No No Yes — push to same branch
Code review Yes — PR only Yes — line-level Yes — /review Yes — inline + severity
PR description generation No Yes Yes — /describe Yes — /describe
Auto-labeling No Yes Yes Yes — 15 categories, diff-aware
Dependency scanning No No No Yes — 8 ecosystems
CI diagnosis + fix No No No Yes — auto-repair PRs
Community monitoring No No No Yes — Radar (issues + discussions)
Scheduled / cron No No No Yes — daily patrol
Multi-model GitHub models only Multiple Multiple DeepSeek / OpenAI / Claude
Backend options Single Single Single Native + Pi agent loop
Profile / config .github/copilot-instructions.md .coderabbit.yaml .pr_agent.toml repokeeper.yml (one file)
Interface GitHub.com, IDE GitHub App, web GitHub Action, CLI GitHub Actions, CLI, labels, comments
OSS cost Subscription required Free for public repos Free for public repos Free (your own LLM key)
Setup time Enable in settings Install GitHub App Copy Action + API key Copy Action + API key
Self-hosted No No Yes Yes — 5 composite actions

What It Does

  • 🔭 Community Radar — Monitors GitHub issues and discussions for keywords. AI classifies hits as bugs, feature requests, or noise. Auto-creates issues with deduplication and RepoKeeper branding, linking back to original discussions. Notifies via email, Telegram, or WeChat.
  • 🔍 Daily Patrol — Scans 8 ecosystems (pip, npm, Go, Cargo, Bundler, Composer, Maven, Gradle) for outdated deps. Diagnoses CI failures with real job/step data. Auto-fixes CI by opening repair PRs. Finds stale issues. Health score every weekday morning.
  • 🤖 Implementation Agent — Reads your codebase + issue → implements → verifies (lint + tests) → pushes branch → opens PR. Supports two backends: native (single LLM call, ~$0.001) and Pi (autonomous agent loop, reads files, runs tests, self-corrects). PR fix mode: comment /repokeeper go on a PR with feedback → agent reads the conversation → pushes fixes to the same branch.
  • 📝 Code Review Agent — Reads PR diffs → checks against your profile → posts inline line-level comments with severity indicators and suggestion blocks. Incremental re-review on new commits. Auto-generates PR descriptions from diffs.
  • 🏷️ Auto-Labeler — AI classifies new issues and PRs, picks labels from your repo's existing set (matching naming conventions), and creates new labels only when needed — with consistent style and descriptions. Diff-aware PR classification.
  • 👤 Maintainer Profile — One YAML file. Code style, tone, PR standards, tech stack preferences, skip keywords, verification commands. Or skip it — defaults work.

Architecture

flowchart TD
    subgraph T["Triggers"]
        direction LR
        issues["🐙 Issues"]
        prs["🐙 Pull Requests"]
        disc["🐙 Discussions"]
        cmd["💬 /repokeeper"]
    end

    T --> M

    subgraph M["RepoKeeper Modules"]
        direction LR
        radar["🔭 Radar<br/>community monitoring"]
        patrol["🔍 Patrol<br/>deps · CI · stale"]
        agent["🤖 Agent<br/>native · Pi backend"]
        labeler["🏷️ Labeler<br/>auto-classify"]
        review["📝 Review<br/>inline comments"]
    end

    profile["📋 repokeeper.yml"]:::config
    profile -.-> M

    M <--> llm["🧠 LLM · Pi<br/>DeepSeek · OpenAI · Claude"]

    subgraph O["Outputs"]
        direction LR
        pr["✅ PRs"]
        rev["📝 Reviews"]
        lbl["🏷 Labels"]
        notify["📬 Notify"]
    end

    M --> O

    classDef config fill:#f9f0ff,stroke:#6e40c9,stroke-width:2px

Adopt in 60 Seconds

Three ways to onboard — pick one:

📋 Copy a workflow

Create .github/workflows/repokeeper.yml in your repo:

name: RepoKeeper Implementation Agent

on:
  issue_comment:
    types: [created]
  issues:
    types: [labeled]
  pull_request_target:
    types: [labeled]

jobs:
  agent:
    runs-on: ubuntu-latest
    if: |
      (
        github.event_name == 'issue_comment' &&
        contains(github.event.comment.body, '/repokeeper go') &&
        (
          github.event.comment.author_association == 'OWNER' ||
          github.event.comment.author_association == 'MEMBER' ||
          github.event.comment.author_association == 'COLLABORATOR'
        )
      ) ||
      (
        github.event_name == 'issues' &&
        github.event.label.name == 'agent-todo'
      ) ||
      (
        github.event_name == 'pull_request_target' &&
        github.event.label.name == 'agent-fix'
      )
    permissions:
      contents: write
      issues: write
      pull-requests: write
    steps:
      - name: Determine context
        id: ctx
        shell: bash
        run: |
          if [ "${{ github.event_name }}" = "pull_request_target" ]; then
            echo "issue=${{ github.event.pull_request.number }}" >> "$GITHUB_OUTPUT"
            echo "pr=${{ github.event.pull_request.number }}" >> "$GITHUB_OUTPUT"
          elif [ "${{ github.event.issue.pull_request }}" != "" ]; then
            echo "issue=${{ github.event.issue.number }}" >> "$GITHUB_OUTPUT"
            echo "pr=${{ github.event.issue.number }}" >> "$GITHUB_OUTPUT"
          else
            echo "issue=${{ github.event.issue.number }}" >> "$GITHUB_OUTPUT"
            echo "pr=" >> "$GITHUB_OUTPUT"
          fi

      - uses: shenxianpeng/repokeeper/agent@v1
        with:
          repo: ${{ github.repository }}
          issue: ${{ steps.ctx.outputs.issue }}
          pr: ${{ steps.ctx.outputs.pr }}
          llm_api_key: ${{ secrets.DEEPSEEK_API_KEY }}
          llm_base_url: ${{ secrets.LLM_BASE_URL || 'https://api.deepseek.com' }}
          github_token: ${{ secrets.REPOKEEPER_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}

Then add your API key: Settings → Secrets → Actions → New secret: DEEPSEEK_API_KEY = sk-...

Before pushing, run the setup check:

repokeeper doctor --repo owner/repo

doctor verifies the profile, workflow triggers, workflow permissions, token environment, LLM key, and repository slug. Fix anything marked missing, then push the workflow.

Want Radar, Patrol, Labeler, and Review too? Add radar, patrol, labeler, and review composite actions to separate workflow files in .github/workflows/.

🖥️ CLI

pip install repokeeper
repokeeper init --all-workflows   # profile + all 5 workflows
repokeeper init --minimal         # profile + agent workflow only
repokeeper doctor --repo owner/repo

🤖 Ask AI

Paste this into any AI coding agent (Copilot Chat, Claude Code, Cursor, Windsurf, pi, etc.):

Add RepoKeeper to this repository. Create .github/workflows/repokeeper.yml that uses the shenxianpeng/repokeeper/agent@v1 composite action — trigger on issue comments (/repokeeper go) and labels (agent-todo). Pass DEEPSEEK_API_KEY as the llm_api_key input. Then tell me to add a DEEPSEEK_API_KEY secret in GitHub Actions settings.

Trigger the agent

  • Label any issue agent-todo — or comment /repokeeper go.
  • Label a PR agent-fix — or comment /repokeeper go with feedback on a PR.
  • Comment /repokeeper review on a PR for inline code review.

Install (optional CLI)

pip install repokeeper
repokeeper init             # Create a profile
repokeeper init --minimal   # Create a profile + agent workflow
repokeeper doctor --repo owner/repo
repokeeper radar --repo owner/repo
repokeeper patrol --repo owner/repo --summary
repokeeper agent --repo owner/repo --issue 42
repokeeper labeler --repo owner/repo --issue 42
repokeeper labeler --repo owner/repo --pr 42
repokeeper review --repo owner/repo --pr 42
repokeeper describe --repo owner/repo --pr 42

Documentation

Full docs at shenxianpeng.github.io/repokeeper

Guide
Quick Start 5-minute setup
Security Permissions, tokens, and automation boundaries
Dogfood Cases Public proof template for real RepoKeeper-generated PRs
Community Radar Monitor your community
Daily Patrol Automated health checks
Implementation Agent AI-powered PRs
Auto-Labeler AI-powered issue & PR labeling
Maintainer Profile Full config reference
Code Review Agent Inline review, PR descriptions, incremental re-review
Benchmarks Cost and performance estimates by scenario

Contributing

Contributions are welcome, especially documentation examples, setup diagnostics, tests, and safety improvements. See CONTRIBUTING.md before opening a pull request.

Safety Model

RepoKeeper creates reviewable pull requests and inline code review comments; it does not approve or merge for you. The default workflow limits write access to branches, issue comments, and pull requests, and the agent blocks edits under .github/workflows/. See the Security guide before enabling it on sensitive repositories.


License

MIT © Xianpeng Shen

Metadata

Release files for repokeeper 1.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for repokeeper 1.4.0
File Size Uploaded Provenance Actions
repokeeper-1.4.0.tar.gz 106.2 kB With provenance Details for repokeeper-1.4.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for repokeeper 1.4.0
File Interpreter ABI Platform Actions
repokeeper-1.4.0-py3-none-any.whl Python 3 none any Details for repokeeper-1.4.0-py3-none-any.whl

Total release size: 211.3 kB

Release files / repokeeper-1.4.0.tar.gz

Download URL repokeeper-1.4.0.tar.gz
Size 106.2 kB
Tags Source
SHA-256 checksum
How to use checksums
92f28b28a260f7c6d723de595137eca29f33c170eac2bee6fa816b901593b2ba
BLAKE2b-256 checksum
How to use checksums
26c77e77c4685e24765b5cf147b3165e9709cf2280efac099666dffff422dc41
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 11, 2026.

Transparency log

Release files / repokeeper-1.4.0-py3-none-any.whl

Download URL repokeeper-1.4.0-py3-none-any.whl
Size 105.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bcbddc5341d86281aadb4343b9de12f0eddfdd97e9b0182f35746a7e6a78c667
BLAKE2b-256 checksum
How to use checksums
68d7328dc97f4dccfc6078dbe04b10744130575be0d33f3af1d1269f002470f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 11, 2026.

Transparency log

Security for repokeeper 1.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for repokeeper-1.4.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 11, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page