Skip to content

GitHub Integration

Connect GitHub to search issues, pull requests, discussions, and commits across your repositories.

Content TypeDescription
IssuesBug reports, feature requests, tasks
Pull RequestsCode reviews, changes, discussions
DiscussionsQ&A, announcements, ideas
CommitsCode changes with messages
CommentsConversation threads
  1. Log into TeamLoop at app.teamloop.io
  2. Navigate to Settings > Integrations
  3. Click Connect next to GitHub
  4. Authorize TeamLoop to access your repositories
  5. Select which organizations/repos to include

TeamLoop requests read-only access to:

  • Repository metadata
  • Issues and pull requests
  • Discussions
  • Commits and code

We never write to your repositories.

teamloop_query:
query: "authentication bug"
sources: "github"
teamloop_query:
query: "ADR architecture decision record"
sources: "github"
teamloop_query:
query: "database migration"
sources: "github"

TeamLoop automatically tracks changes from GitHub:

When you query an issue, TeamLoop fetches its changelog:

  • Status changes (open → closed)
  • Label changes
  • Assignee changes
  • Milestone changes

These are stored as CHANGE entities linked to the issue:

CHANGE: "Issue #123: Status changed to Closed"
└── PART_OF → DOCUMENT: "Issue #123: Fix auth bug"

Pull request lifecycle events:

  • Review requests
  • Approvals
  • Merges
  • Status checks

GitHub content maps to TeamLoop entity types:

GitHubTeamLoop Entity
IssueDOCUMENT
PRDOCUMENT
DiscussionDOCUMENT
CommitCHANGE
Comment authorPERSON
Status changeCHANGE

From a GitHub issue about database migration:

{
"entities": [
{
"type": "DOCUMENT",
"name": "Issue #456: Migrate to PostgreSQL",
"description": "Proposal to migrate user service from MySQL to PostgreSQL",
"source_url": "https://github.com/org/repo/issues/456",
"source_integration": "github",
"source_external_id": "issues/456",
"event_date": "2024-05-15"
},
{
"type": "DECISION",
"name": "Adopt PostgreSQL for user service",
"rationale": "Need JSONB support and better performance",
"alternatives": ["MySQL", "MongoDB"],
"event_date": "2024-05-20"
}
],
"relationships": [
{
"source_name": "Adopt PostgreSQL for user service",
"source_type": "DECISION",
"target_name": "Issue #456: Migrate to PostgreSQL",
"target_type": "DOCUMENT",
"relationship_type": "PART_OF"
}
]
}

TeamLoop can search by labels:

teamloop_query:
query: "label:architecture label:decision"
sources: "github"

Include repo context in queries:

teamloop_query:
query: "repo:myorg/backend authentication"
sources: "github"

PRs often contain implicit decisions. Extract them:

{
"type": "DECISION",
"name": "Use React Query for data fetching",
"description": "Replaced manual fetch calls with React Query",
"source_url": "https://github.com/org/frontend/pull/789"
}

Track how issues evolve:

teamloop_timeline:
entity_id: "uuid-of-issue-document"

See what was known from GitHub on a specific date:

teamloop_query:
query: "authentication"
sources: "github"
mode: "as_of"
as_of: "2024-01-15"

Track how GitHub discussions evolved:

teamloop_evolution:
query: "authentication github"
from_date: "2024-01-01"
to_date: "2024-12-31"
  • Check that the integration is connected
  • Verify you have access to the repositories
  • Try a broader search term
  • Check if the content is in private repos you authorized
  • Re-authorize with additional repo access
  • Check organization permissions in GitHub settings

GitHub data is fetched fresh on each query and cached. If you see stale data:

  • The cache may need to refresh (TTL: 7 days)
  • Recent changes may not be indexed yet

TeamLoop respects GitHub’s API rate limits:

  • 5,000 requests/hour for authenticated users
  • Queries are optimized to minimize API calls
  • Cached results reduce API usage
  • OAuth tokens are encrypted at rest
  • Tokens can be revoked from GitHub settings
  • TeamLoop only reads, never writes
  • You can disconnect at any time from TeamLoop settings