RepoKeeper
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 goon 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, andreviewcomposite 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.ymlthat uses theshenxianpeng/repokeeper/agent@v1composite action — trigger on issue comments (/repokeeper go) and labels (agent-todo). PassDEEPSEEK_API_KEYas thellm_api_keyinput. Then tell me to add aDEEPSEEK_API_KEYsecret in GitHub Actions settings.
Trigger the agent
- Label any issue
agent-todo— or comment/repokeeper go. - Label a PR
agent-fix— or comment/repokeeper gowith feedback on a PR. - Comment
/repokeeper reviewon 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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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 logRelease 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 logSecurity 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.
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 logA 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.