Skip to main content

Sync GitHub PR / issue activity you're involved in into EvolutionDB long-term memory.

Project description

evolutiondb-github-sync

Pull every GitHub PR / issue thread you're involved in — authored, assigned, reviewed, or commented on — into EvolutionDB long-term memory. The MCP server then surfaces them through search_memory, so an AI assistant connected through Claude Desktop / Claude Code can answer "what did we decide on PR #142 last week?" without re-reading the diff.

What gets indexed

For every issue + PR that matches involves:<you> updated:>since:

Record Key shape
The thread itself gh_thread_<repo>#<number>
Diff-anchored comments gh_pr_comment_<comment_id>
Issue-thread comments gh_issue_comment_<comment_id>
PR reviews with a body gh_pr_review_<review_id>

Keys are deterministic, so a re-sync UPSERTs instead of duplicating rows. A per-thread watermark on updated_at skips threads that haven't moved since the last pass.

Install

pip install evolutiondb-github-sync

Or from this repo:

pip install -e client/github-sync

Configure

Copy .env.example to .env and fill in:

  • GITHUB_TOKEN — classic PAT with repo (or public_repo) + read:user. See https://github.com/settings/tokens.
  • GITHUB_USERNAME — the handle to follow.
  • EVOSQL_* — point at a running EvolutionDB instance (default localhost:5433 / admin / admin).
  • MCP_USER_ID — sticky namespace shared with the MCP server.

Run

# One pass; pull the last 7 days. First-time bootstrap.
evolutiondb-github-sync --once --since 7d

# Daemon — polls every GITHUB_POLL_INTERVAL seconds.
evolutiondb-github-sync --interval 900

# Verify auth + scopes without touching the DB.
evolutiondb-github-sync --once --dry-run

Each pass prints a one-line JSON summary:

{"ok": true, "threads": 12, "comments": 84, "reviews": 6, "errors": 0}

Rate limits

A classic PAT gives you 5,000 REST calls per hour. One sync pass spends roughly 1 search call + (3 calls × open threads), so even 500 active threads fits in under 10% of the budget. The client honours X-RateLimit-Remaining and the secondary-rate-limit Retry-After header — if either fires it sleeps until reset and resumes.

What's not indexed

  • Commit messages — git history is already queryable locally.
  • Workflow runs / check runs — high volume, low signal for memory recall.
  • Notifications — overlaps too much with the issue / comment streams.

Privacy

Records are written to the same EvolutionDB store the MCP server reads from. Anyone with access to that database (and the matching MCP_USER_ID) can recall the indexed content through search_memory. Don't ship a GITHUB_TOKEN that has more scope than you'd hand the AI assistant directly.

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

evolutiondb_github_sync-0.1.0.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

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

evolutiondb_github_sync-0.1.0-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file evolutiondb_github_sync-0.1.0.tar.gz.

File metadata

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

File hashes

Hashes for evolutiondb_github_sync-0.1.0.tar.gz
Algorithm Hash digest
SHA256 95148e3eb66ac243e8fe0550ce84cdfd8a8f96cbaa2ceb385c71198e5d6a298a
MD5 fc340daa2b9e5caab01d5f6965a6344f
BLAKE2b-256 c7918ce0ee203df8ca14a0dc4506a30627a42fd60f62b846b6f35ff8ff23b33b

See more details on using hashes here.

Provenance

The following attestation bundles were made for evolutiondb_github_sync-0.1.0.tar.gz:

Publisher: github-sync-release.yml on alptekin/evolutiondb

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

File details

Details for the file evolutiondb_github_sync-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for evolutiondb_github_sync-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 91ee8f9843be03f4642850bb65e250490ac8ede5fb42c409a1c70fb28798b1c9
MD5 96caaeea5e62a447f0dc47acfcb7ecfb
BLAKE2b-256 4f988114ada6315698df184b863399809dca6c986e88e2cf7dd80152959198bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for evolutiondb_github_sync-0.1.0-py3-none-any.whl:

Publisher: github-sync-release.yml on alptekin/evolutiondb

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