#
GitHub
Monitor your GitHub repositories, commits, issues, and pull requests directly in Weavestream with AI-powered analysis.
#
Features
- 📊 Repository Overview - See all your repos with creation dates
- 💬 Commit History - Track commits across repositories
- 🐛 Issues & Pull Requests - Monitor open/closed issues and PRs
- 🔔 Notifications - Stay updated on mentions and reviews
- ⚡ Workflow Runs - Track GitHub Actions success/failure
- 📈 Repository Activity - Monitor stars, forks, and activity
Estimated Setup Time: 15 minutes
#
Setup Guide
#
Step 1: Create a GitHub Personal Access Token
- Go to https://github.com/settings/tokens
- Click "Generate new token" → "Generate new token (classic)"
- Fill in the form:
- Note:
Weavestream Access - Expiration: 90 days (or your preference)
- Select scopes:
- ✅
repo(Full control of private repositories) - ✅
read:user(Read user profile data) - ✅
read:org(Read organization membership) - ✅
notifications(Access notifications) - ✅
workflow(Update GitHub Action workflows)
- ✅
- Note:
- Scroll down and click "Generate token"
- ⚠️ IMPORTANT: Copy the token immediately (starts with
ghp_)- You won't be able to see it again!
- Example:
ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
#
Step 2: Add GitHub to Weavestream
- Open Weavestream
- Click "+" in the sidebar
- Select "Add Source"
- Fill in:
- Name:
GitHub - Base URL:
https://api.github.com - Auth Type:
Bearer Token - Token: Paste your personal access token
- Icon:
github(automatically uses GitHub logo) - Refresh Interval:
15 minutes
- Name:
- Click "Add"
#
Step 3: Add Endpoints
GitHub has several useful endpoints. Add the ones you need:
#
Endpoint 1: Your Repositories
See all repositories you have access to.
Configuration:
- Name:
My Repositories - Path:
/user/repos - Method:
GET - Query Parameters:
sort:updated(shows recently active repos first)per_page:100(optional - get more results)
Field Mapping:
- ID Field:
id - Title Field:
full_name(shows owner/repo-name) - Date Field:
updated_at - Summary Fields:
description,language - Status Mappings:
privatefield → if true:info, if false:ok
Improved Config:
{
"mapping": {
"idField": "id",
"titleField": "full_name",
"dateField": "updated_at",
"summaryFields": ["description", "language", "stargazers_count"],
"statusField": "archived",
"statusMappings": {
"true": "warning",
"false": "ok"
},
"_invertStatusBoolean": false
}
}
#
Endpoint 2: Repository Commits
Track commits across a specific repository.
Configuration:
- Name:
[RepoName] Commits(e.g., "Weavestream Commits") - Path:
/repos/{owner}/{repo}/commits- Replace
{owner}with your GitHub username - Replace
{repo}with repository name - Example:
/repos/username/weavestream/commits
- Replace
- Method:
GET - Query Parameters:
per_page:50(optional - get more results)since:2024-01-01T00:00:00Z(optional - only commits after this date)
Field Mapping:
- ID Field:
sha(more reliable than node_id) - Title Field:
commit.message - Date Field:
commit.committer.date - Summary Fields:
commit.committer.name,author.login
Improved Config:
{
"mapping": {
"idField": "sha",
"titleField": "commit.message",
"dateField": "commit.committer.date",
"summaryFields": ["commit.committer.name", "author.login", "stats.total"]
}
}
#
Endpoint 3: Issues & Pull Requests
Monitor open issues and PRs for a repository.
Configuration:
- Name:
[RepoName] Issues(e.g., "Weavestream Issues") - Path:
/repos/{owner}/{repo}/issues- Example:
/repos/username/weavestream/issues
- Example:
- Method:
GET - Query Parameters:
state:open(orclosedorall)sort:updatedper_page:50
Field Mapping:
- ID Field:
id - Title Field:
title - Date Field:
updated_at - Summary Fields:
user.login,labels,comments - Status Field:
state- Map
open→warning - Map
closed→ok
- Map
Improved Config:
{
"mapping": {
"idField": "id",
"titleField": "title",
"dateField": "updated_at",
"summaryFields": ["user.login", "body", "comments"],
"statusField": "state",
"statusMappings": {
"open": "warning",
"closed": "ok"
}
}
}
Note: GitHub's Issues API returns both issues AND pull requests. To filter:
- Issues only: Add query param
is:issue - PRs only: The response includes
pull_requestfield - you can filter in Weavestream
#
Endpoint 4: Pull Requests (Separate)
If you want PRs separate from issues:
Configuration:
- Name:
[RepoName] Pull Requests - Path:
/repos/{owner}/{repo}/pulls - Method:
GET - Query Parameters:
state:open(orclosedorall)sort:updatedper_page:50
Field Mapping:
{
"mapping": {
"idField": "id",
"titleField": "title",
"dateField": "updated_at",
"summaryFields": ["user.login", "head.ref", "base.ref", "mergeable_state"],
"statusField": "state",
"statusMappings": {
"open": "warning",
"closed": "ok"
}
}
}
#
Endpoint 5: GitHub Actions Workflows
Monitor workflow runs (CI/CD status).
Configuration:
- Name:
[RepoName] Workflow Runs - Path:
/repos/{owner}/{repo}/actions/runs - Method:
GET - Query Parameters:
per_page:50status:completed(or leave empty for all)
Field Mapping:
{
"mapping": {
"idField": "id",
"titleField": "name",
"dateField": "updated_at",
"summaryFields": ["head_branch", "event", "actor.login"],
"statusField": "conclusion",
"statusMappings": {
"success": "ok",
"failure": "critical",
"cancelled": "warning",
"skipped": "info"
}
}
}
#
Endpoint 6: Notifications
See your GitHub notifications (mentions, reviews, etc.).
Configuration:
- Name:
My Notifications - Path:
/notifications - Method:
GET - Query Parameters:
all:false(only unread, ortruefor all)per_page:50
Field Mapping:
{
"mapping": {
"idField": "id",
"titleField": "subject.title",
"dateField": "updated_at",
"summaryFields": ["repository.full_name", "reason", "subject.type"],
"statusField": "unread",
"statusMappings": {
"true": "warning",
"false": "ok"
},
"_invertStatusBoolean": false
}
}
#
Endpoint 7: Organization Repositories
If you're part of an organization:
Configuration:
- Name:
[OrgName] Repositories - Path:
/orgs/{org}/repos- Replace
{org}with organization name - Example:
/orgs/anthropic/repos
- Replace
- Method:
GET
Field Mapping: Same as "My Repositories" above
#
Endpoint 8: Repository Activity/Events
See recent activity on a repository:
Configuration:
- Name:
[RepoName] Activity - Path:
/repos/{owner}/{repo}/events - Method:
GET
Field Mapping:
{
"mapping": {
"idField": "id",
"titleField": "type",
"dateField": "created_at",
"summaryFields": ["actor.login", "payload.action", "repo.name"]
}
}
#
Smart Filters
Create these filters for quick access:
#
Filter 1: Open Issues Assigned to Me
- Endpoint: Issues
- Conditions:
stateequalsopenassignee.loginequals[your_username]
- Logic: AND
#
Filter 2: Failed Workflow Runs
- Endpoint: Workflow Runs
- Conditions:
conclusionequalsfailureupdated_atin last7 days
- Logic: AND
#
Filter 3: Recently Updated Repos
- Endpoint: Repositories
- Conditions:
updated_atin last30 daysarchivedequalsfalse
- Logic: AND
#
Filter 4: My Open PRs
- Endpoint: Pull Requests
- Conditions:
user.loginequals[your_username]stateequalsopen
- Logic: AND
#
AI Analysis Examples
Once configured, ask Weavestream questions like:
#
About Commits:
- "Summarize commits from the last week"
- "Who has been committing the most?"
- "Show me commits by [username]"
#
About Issues:
- "What are my critical open issues?"
- "Summarize issues that need attention"
- "How many bugs vs features are open?"
#
About Repositories:
- "Which repos have I updated recently?"
- "What's my most active repository?"
- "Show me archived repos"
#
About Workflows:
- "Are there any failed CI builds?"
- "Show me workflow runs that failed today"
- "Which workflows are taking the longest?"
#
Cross-Analysis:
- "Show me repos with open issues and failed builds"
- "What needs my attention in GitHub today?"
#
Rate Limits
GitHub API has rate limits:
- Authenticated requests: 5,000 requests/hour
- Unauthenticated: 60 requests/hour (don't use this)
With 15-minute refresh and 5-10 endpoints, you'll use ~40-80 requests/hour - well within limits.
Check your rate limit:
curl -H "Authorization: Bearer YOUR_TOKEN" https://api.github.com/rate_limit
#
Advanced Configuration
#
Custom Headers
GitHub API accepts these useful headers:
In Weavestream source configuration, add Custom Headers:
{
"Accept": "application/vnd.github.v3+json",
"X-GitHub-Api-Version": "2022-11-28"
}
These ensure you get the latest API version.
#
Pagination
GitHub returns 30 items by default. To get more:
Add query parameter:
per_page:100(max allowed)
For multiple pages: GitHub uses Link headers for pagination. Weavestream should auto-detect this. If not, you can:
- Make multiple endpoint configs with
pageparameter - Or fetch only recent items using
sinceparameter
#
Filtering Results
Many GitHub endpoints support filtering:
Commits:
since:2024-01-01T00:00:00Z(ISO 8601 date)until:2024-12-31T23:59:59Zauthor:[username]path:src/main.js(commits touching specific file)
Issues:
state:open,closed,alllabels:bug,enhancement(comma-separated)assignee:[username]creator:[username]mentioned:[username]since:2024-01-01T00:00:00Z
Pull Requests:
state:open,closed,allhead:username:branchbase:mainsort:created,updated,popularitydirection:asc,desc
#
Troubleshooting
#
Issue: "Bad credentials" or 401 error
Solution:
- Verify your personal access token is correct
- Check that the token hasn't expired
- Ensure you selected the right scopes when creating the token
- Try generating a new token
#
Issue: "Not Found" or 404 error
Solution:
- Verify the repository path is correct (case-sensitive)
- Check that you have access to the repository
- For organization repos, ensure your token has
read:orgscope
#
Issue: Rate limit exceeded
Solution:
- Check your rate limit:
curl -H "Authorization: Bearer TOKEN" https://api.github.com/rate_limit - Increase refresh interval to 30 or 60 minutes
- Reduce number of endpoints
- Use pagination more efficiently
#
Issue: No data appearing
Solution:
- Check that the repository/path exists
- Verify field mappings match the actual JSON structure
- View "Raw JSON" in Weavestream to see the actual response
- Some endpoints return nested data in a
valueordataarray
#
Security Best Practices
#
✅ Do:
- Use fine-grained tokens when possible (beta feature)
- Set token expiration (90 days recommended)
- Only grant necessary scopes
- Rotate tokens regularly
- Store tokens securely (Weavestream uses macOS Keychain)
#
❌ Don't:
- Share your personal access token
- Grant more scopes than needed
- Use tokens in public repositories
- Set tokens to never expire
- Commit tokens to code
#
Additional Resources
- GitHub REST API Docs: https://docs.github.com/en/rest
- Personal Access Tokens: https://github.com/settings/tokens
- API Rate Limits: https://docs.github.com/en/rest/rate-limit
- Webhook Alternative: For real-time updates, consider GitHub webhooks
#
Summary
This GitHub integration gives you:
- ✅ Repository monitoring across all your projects
- ✅ Commit history and author tracking
- ✅ Issue and PR management
- ✅ CI/CD workflow monitoring
- ✅ Real-time notifications
- ✅ AI-powered analysis of all GitHub activity
Import this config into Weavestream or build it manually using the instructions above!
Last updated: February 2026
Weavestream Version: 1.0