Loading...
AI-powered push summaries
Loading...
Git Push Tracker receives push events from GitHub/GitLab via webhooks, generates AI summaries using Google Gemini, and exposes them through a REST API. Each project has its own API key — consumers only see pushes from their project.
Use the form above. You'll get a webhook URL and a webhook secret.
GitHub: Settings → Webhooks → Add webhook. Paste the URL, set secret, content type application/json, select "Just the push event".
GitLab: Settings → Webhooks → Add. Paste the URL, set secret token, check "Push events".
Click + Key on your project card. Save the key immediately — it's only shown once. Give it a label like "dashboard" or "slack-bot".
Make a GET request with your API key as a Bearer token:
# Fetch AI-generated push summaries for your project curl -H "Authorization: Bearer YOUR_API_KEY" \ "DOMAIN_PLACEHOLDER/api/v1/pushes"
One key = one project. Each API key is scoped to a single project. If you have 5 projects, you need 5 different keys. A key from project A will never return data from project B.
GET /api/v1/pushes
Headers:
Authorization: Bearer gpt_abc123...
Query parameters (all optional):
limit=20 # Results per page (default 20, max 100) offset=0 # Pagination offset branch=main # Filter by branch name since=2024-01-01 # Filter by date (ISO 8601)
{
"project": "my-app",
"pushes": [
{
"id": "550e8400-e29b-41d4-...",
"branch": "main",
"author": "molimat",
"commitCount": 3,
"summary": "- Added OAuth endpoint\n- Fixed Redis timeout\n- Updated deps",
"pushedAt": "2026-04-14T10:30:00.000Z"
}
],
"pagination": {
"limit": 20,
"offset": 0,
"total": 42
}
}
JavaScript / Node.js:
const res = await fetch('DOMAIN_PLACEHOLDER/api/v1/pushes?limit=5', { headers: { Authorization: 'Bearer YOUR_API_KEY' } }); const { pushes } = await res.json(); pushes.forEach(p => console.log(p.summary));
Python:
import requests res = requests.get( "DOMAIN_PLACEHOLDER/api/v1/pushes", headers={"Authorization": "Bearer YOUR_API_KEY"}, params={"branch": "main", "limit": 10} ) for push in res.json()["pushes"]: print(push["summary"])
Using with an AI agent (prompt context):
# Give your AI agent recent project activity as context: # # "Here are the recent changes pushed to the project: # {paste the summaries from the API response}" # # The AI can then answer questions like: # - "What was deployed today?" # - "Who worked on auth last week?" # - "Summarize this sprint's changes"
Does one endpoint return all projects?
No. Each API key is tied to one project. The endpoint GET /api/v1/pushes is the same for all projects, but the Bearer token determines which project's data you see.
Can someone see another project's pushes?
No. API keys are project-scoped. There is no way to query across projects with a single key.
How fast are summaries generated?
The background worker processes pending pushes every 10 seconds. After a push, you should see the AI summary within ~15-20 seconds.
What if Gemini fails?
Failed pushes retry automatically up to 3 times. Check the "pending" count on your project card — if it stays high, the Gemini API key may be invalid or rate-limited.
Can I use this with a Slack bot / dashboard widget?
Yes. Generate a dedicated API key labeled "slack-bot" or "widget" and call the endpoint from your integration. The response is plain JSON.