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 withrepo(orpublic_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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95148e3eb66ac243e8fe0550ce84cdfd8a8f96cbaa2ceb385c71198e5d6a298a
|
|
| MD5 |
fc340daa2b9e5caab01d5f6965a6344f
|
|
| BLAKE2b-256 |
c7918ce0ee203df8ca14a0dc4506a30627a42fd60f62b846b6f35ff8ff23b33b
|
Provenance
The following attestation bundles were made for evolutiondb_github_sync-0.1.0.tar.gz:
Publisher:
github-sync-release.yml on alptekin/evolutiondb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
evolutiondb_github_sync-0.1.0.tar.gz -
Subject digest:
95148e3eb66ac243e8fe0550ce84cdfd8a8f96cbaa2ceb385c71198e5d6a298a - Sigstore transparency entry: 1526512829
- Sigstore integration time:
-
Permalink:
alptekin/evolutiondb@ecead590d3a542df71f401d9b77286621e784459 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/alptekin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
github-sync-release.yml@ecead590d3a542df71f401d9b77286621e784459 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file evolutiondb_github_sync-0.1.0-py3-none-any.whl.
File metadata
- Download URL: evolutiondb_github_sync-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.1 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 |
91ee8f9843be03f4642850bb65e250490ac8ede5fb42c409a1c70fb28798b1c9
|
|
| MD5 |
96caaeea5e62a447f0dc47acfcb7ecfb
|
|
| BLAKE2b-256 |
4f988114ada6315698df184b863399809dca6c986e88e2cf7dd80152959198bf
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
evolutiondb_github_sync-0.1.0-py3-none-any.whl -
Subject digest:
91ee8f9843be03f4642850bb65e250490ac8ede5fb42c409a1c70fb28798b1c9 - Sigstore transparency entry: 1526512903
- Sigstore integration time:
-
Permalink:
alptekin/evolutiondb@ecead590d3a542df71f401d9b77286621e784459 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/alptekin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
github-sync-release.yml@ecead590d3a542df71f401d9b77286621e784459 -
Trigger Event:
workflow_dispatch
-
Statement type: