AI-powered open source maintainer agent
Project description
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. AI coding agents like Copilot and Cursor help you write code in the editor. PR Agent (Qodo) automates PR workflows. But what about everything else? Triaging issues, bumping dependencies, diagnosing CI, responding to the community?
Copilot codes with you. PR Agent polishes PRs. RepoKeeper runs your repo while you sleep.
| Copilot / Cursor | PR Agent (Qodo) | RepoKeeper | |
|---|---|---|---|
| What it does | AI agent coding in your editor | Automates PR descriptions, reviews, suggestions | Maintains your repo autonomously |
| How | Reads codebase → implements → verifies | PR lifecycle automation | Reads issues + codebase → opens verified PRs |
| When | While you code | On PR events | 24/7 on schedule (labels, comments, cron) |
| Community | No | No | Monitors, classifies, responds |
| Dependencies | No | No | Scans 8 ecosystems for outdated deps |
| CI | No | No | Diagnoses failures, suggests fixes |
| Cost | $10–39/month subscription | Free OSS / paid plans | ~$0.01 per PR (your own LLM key) |
| Config | IDE settings | CLI / PR comments | One YAML (or zero) |
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 you 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. Streams LLM output in real-time. Estimates token cost. Supports DeepSeek, OpenAI, and Anthropic Claude models.
- 🏷️ 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. Supports issue and PR labeling with diff-aware classification.
- 👤 Maintainer Profile — One YAML file describing your code style, tone, PR standards. Or skip it — defaults work.
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]
jobs:
agent:
runs-on: ubuntu-latest
if: |
(
github.event_name == 'issue_comment' &&
!github.event.issue.pull_request &&
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'
)
permissions:
contents: write
issues: write
pull-requests: write
steps:
- uses: shenxianpeng/repokeeper/agent@v1
with:
repo: ${{ github.repository }}
issue: ${{ github.event.issue.number }}
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.
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
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 | AI code review for PRs |
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; it does not merge them 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file repokeeper-1.1.0.tar.gz.
File metadata
- Download URL: repokeeper-1.1.0.tar.gz
- Upload date:
- Size: 91.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ca44db0176b0ff3dda2114d8702f288070d0cb27d9da98525d6bbad5e7b726b
|
|
| MD5 |
e4cbca90eade032d16fd953007267921
|
|
| BLAKE2b-256 |
1166bb2cfef2d711813e0b23432383efa44df8514de02848f6930b7a528edb5e
|
Provenance
The following attestation bundles were made for repokeeper-1.1.0.tar.gz:
Publisher:
release.yml on shenxianpeng/repokeeper
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
repokeeper-1.1.0.tar.gz -
Subject digest:
2ca44db0176b0ff3dda2114d8702f288070d0cb27d9da98525d6bbad5e7b726b - Sigstore transparency entry: 1464234430
- Sigstore integration time:
-
Permalink:
shenxianpeng/repokeeper@7940811836962e1da3f829df59a4bbb2b8743dd7 -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/shenxianpeng
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7940811836962e1da3f829df59a4bbb2b8743dd7 -
Trigger Event:
push
-
Statement type:
File details
Details for the file repokeeper-1.1.0-py3-none-any.whl.
File metadata
- Download URL: repokeeper-1.1.0-py3-none-any.whl
- Upload date:
- Size: 89.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
982e267a67a0ab150693ec7ed1fd55a082d754996c4552537d42982bddd4c28e
|
|
| MD5 |
c1df5d7f40e449b89ac46d4000475857
|
|
| BLAKE2b-256 |
886e0f7bfda277fc67e94e1a0ae861d38b09befd905fddba40a792fa0fea159d
|
Provenance
The following attestation bundles were made for repokeeper-1.1.0-py3-none-any.whl:
Publisher:
release.yml on shenxianpeng/repokeeper
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
repokeeper-1.1.0-py3-none-any.whl -
Subject digest:
982e267a67a0ab150693ec7ed1fd55a082d754996c4552537d42982bddd4c28e - Sigstore transparency entry: 1464234808
- Sigstore integration time:
-
Permalink:
shenxianpeng/repokeeper@7940811836962e1da3f829df59a4bbb2b8743dd7 -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/shenxianpeng
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7940811836962e1da3f829df59a4bbb2b8743dd7 -
Trigger Event:
push
-
Statement type: