Skip to main content

AI-powered open source maintainer agent

Project description

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. 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.

Architecture

flowchart TD
    issues["🐙 Issues"]
    prs["🐙 Pull Requests"]
    disc["🐙 Discussions"]
    comments["💬 /repokeeper"]

    profile["📋 Maintainer Profile<br/>repokeeper.yml"]:::config

    radar["🔭 Community Radar<br/>monitors community"]
    patrol["🔍 Daily Patrol<br/>deps · CI · stale issues"]
    agent["🤖 Implementation Agent<br/>issue → implement → PR"]
    labeler["🏷️ Auto-Labeler<br/>classify issues & PRs"]
    reviewer["📝 Code Review Agent<br/>inline PR review"]

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

    newpr["✅ Verified PRs"]
    review["📝 Inline Reviews"]
    applied["🏷 Applied Labels"]
    notify["📬 Email · Telegram · WeChat"]

    issues --> radar & agent & labeler
    prs --> reviewer & labeler
    disc --> radar
    comments --> agent & reviewer

    profile -. "configures" .-> radar
    profile -.-> patrol
    profile -.-> agent
    profile -.-> labeler
    profile -.-> reviewer

    radar & patrol & agent & labeler & reviewer --> llm
    llm --> radar & patrol & agent & labeler & reviewer

    agent & patrol --> newpr
    reviewer --> review
    labeler --> applied
    radar & patrol --> notify

    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]

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, 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.


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; 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

repokeeper-1.2.0.tar.gz (102.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

repokeeper-1.2.0-py3-none-any.whl (100.6 kB view details)

Uploaded Python 3

File details

Details for the file repokeeper-1.2.0.tar.gz.

File metadata

  • Download URL: repokeeper-1.2.0.tar.gz
  • Upload date:
  • Size: 102.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for repokeeper-1.2.0.tar.gz
Algorithm Hash digest
SHA256 4a1b00e84c2704d68e51aadc790932ff04f127eecbb1141b3740ff16cb8c0f2f
MD5 ec458878f34d2cec0f72c4d4e30d8675
BLAKE2b-256 5e2f8f4f7cf0cbc8abdb535b8daa9f46af5748a5f5a41f910766fbc6297703fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for repokeeper-1.2.0.tar.gz:

Publisher: release.yml on shenxianpeng/repokeeper

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file repokeeper-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: repokeeper-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 100.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for repokeeper-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d74acd2f06bcf2a01283a800e68fcbfe63ab1912e41f1dac4a86a1b2942a48f3
MD5 0f2ae26f65ee311cf3e03926abce7ab3
BLAKE2b-256 51cd40ccea00194b0e24bd6a9c4d21993671c41544011b3af8ebe5cc9764f80e

See more details on using hashes here.

Provenance

The following attestation bundles were made for repokeeper-1.2.0-py3-none-any.whl:

Publisher: release.yml on shenxianpeng/repokeeper

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page