Overview
GitHub is the world’s most widely used platform for hosting, versioning, and collaborating on software development projects. It is trusted by individual developers, engineering teams, and enterprises to manage code repositories, automate CI/CD workflows, perform peer code reviews, and track project progress through integrated issue and project management tools.GitHub Data Structure
The connector understands various entities of GitHub. Repositories → Issues & Pull Requests → Comments/AttachmentsWhat Gets Synced
The connector indexes the following content for AI-powered search:- Issues: Title, description (Markdown with embedded images), status, labels; assignee, created/updated timestamps
- Pull requests: Same body, comment, and attachment coverage as issues, plus commit SHAs, changed files with patches (diffs), per-file review comments on the diff, and PR review submissions (approve / request changes / comment); assignee and created/updated timestamps
- Comments: Full threads on issues and on pull requests (including the PR conversation), with author context where available
- Attachments: Files and images attached to or embedded in issue/PR bodies and comments
Configuration Guide
Setup
Setup
Authentication Method
The GitHub connector uses OAuth Apps for secure authentication.An OAuth App is used as it provides secure, token-based access without requiring users to share their passwords.
Generating Client ID and Secret
Step 1: Access GitHub Developer Settings
-
Navigate to the Developer Console:
Go to settings/developers and sign in with your GitHub account. - View Your Apps: You’ll see the “OAuth apps” page where you can create and manage OAuth 2.0 apps.

Step 2: Create a New OAuth App
- Click the “New OAuth App” button in the top right corner
-
Fill in the application details:
- Application Name: Enter a meaningful name (e.g., “PipesHub GitHub Connector”)
- Homepage URL: Enter PipesHub Homepage URL (e.g., “http://localhost:3001”)
- Application description: Description about app (Optional)
- Authorization callback URL:
- You need to enter the redirect URI provided by PipesHub
- To get this URL, open PipesHub in another tab, navigate to PipesHub (bottom left corner) → Workspace settings → Connectors → Your Connectors, find the Github connector, and click “Setup”
GitHub OAuth App allows only one callback URL.
- Copy the Redirect URL shown in the configuration dialog:

- Click “Register Application” to proceed
Step 3: Get OAuth Credentials
- Copy the following credentials:
- Client ID: Your app’s unique identifier
- Secret: Your app’s client secret (click “Generate a new client secret”)

Step 4: Configure Connector in PipesHub
- Return to the Pipeshub Github configuration dialog (if you closed it, navigate to Pipeshub (bottom left corner) → Workspace settings → Connectors → Your Connectors, find the Github connector, and click Setup)
-
The configuration dialog has two steps:
- Step 1: Authentication - Enter OAuth credentials
- Step 2: Sync Settings - Configure synchronization
- Verify the Redirect URI displayed matches the callback URL you configured in GitHub Developer Settings (Step 2)
-
Enter your OAuth 2.0 credentials:
- Application (Client) ID: From previous step
- Client Secret: From previous step

- Click “Next” to move forward
Step 5: Authorize the Connection
- After saving the configuration, click “Authenticate GitHub to Proceed”
- You’ll be redirected to GitHub’s authorization page

- Enter GitHub login credentials and click Sign In
- User will be shown the set of permissions needed, click Authorize to grant permissions

- You’ll be redirected back to PipesHub with a success message
- The connector status will update to show “Connected — you can continue to Configure records”

Step 6: Enable and Configure the Connector
- After successful authentication, click “Continue to configuration” to activate the connector
- A configuration dialog will appear with a section:
- Sync Settings - Configure synchronization strategy and schedule

Sync Settings
Configure your synchronization preferences:- Sync Strategy: Choose between “Scheduled” or “Manual”
- Sync Interval: Choose how often to sync (default: 60 minutes)
Scheduled sync runs automatically at the specified intervals, keeping your data up-to-date without manual intervention. Manual sync requires you to trigger synchronization on-demand.
Save and Activate
- Click “Save Configuration” to save your configuration.
- User will be prompted to begin synchronization.
- The connector will verify credentials and begin initial synchronization
- Monitor the Indexing Progress to track sync completion
Supported Features
The GitHub connector syncs the following data from your GitHub repositories:- Repositories: All accessible repositories
- Issues: Full issue content including description, status, comments
- Pull Requests: Full pull request content including description, merge status, commit history, review comments, comments and file changes
- Comments: All comments on issues and pull requests with author information
- Attachments: Files attached to issues, pull requests (images, documents, etc.)
Useful Links
- GitHub Developer Settings: settings/developers
- OAuth App Documentation: oauth-apps/building-oauth-apps/creating-an-oauth-app
- GitHub REST API Documentation: github/rest
Troubleshooting
Troubleshooting
Troubleshooting
Common Issues
Invalid client credentials error:- Verify Client ID and Client Secret are correct
- Ensure you copied the full values without extra spaces
- Check that the OAuth app is active in GitHub Developer Settings
- Regenerate the secret if necessary and update PipesHub
- Ensure the Redirect URI in PipesHub exactly matches the callback URL in GitHub
- Check for trailing slashes or protocol differences (http vs https)
- Update both configurations to use the same URL
- Verify you’re signing in with a valid GitHub account that has access to the required repositories
- Verify the connector status shows “Active”
- Check that the authenticating user has owned repositories
- Review sync logs for specific error messages
- Disable and re-enable the connector to re-authenticate
- Check if the OAuth app is still active in GitHub Developer Settings
Connector Workflow
Synchronization Process
Synchronization Process
The GitHub connector follows a structured synchronization process to ensure all data is accurately synced with proper permissions.For each repository, the connector fetches issues and pull requests from the GitHub API. Each record is normalized into a hierarchical BlockGroup layout inside a BlocksContainer: the description, conversation, and (for pull requests) code-review context are kept in separate block groups so search and retrieval can target the right slice of content.
Sync Overview
Therun_sync method executes a complete synchronization cycle in a specific order:Full Sync vs Incremental Sync
The connector automatically determines whether to perform a full or incremental sync:Full Sync occurs when:- First-time synchronization (no sync checkpoint exists)
- Manual full sync is triggered
- A valid sync checkpoint exists
- Uses the saved sync checkpoint to fetch or filter for records updated since the last sync time
Issue and Pull Requests Synchronization
GitHub considers all Pull requests as issues.
Body, comments, and attachments
For each issue and pull request, the connector:- Description: Stores the body as the first BlockGroup (index 0). Markdown is preserved and inline images are embedded in the indexed representation.
- Comments: Stores each top-level comment as its own BlockGroup in thread order.
- Attachments and images: Applies the same extraction and placement rules for issues and pull requests—files and images are mapped to the description or the specific comment they belong to.
Pull requests use the same body, comment, and attachment handling as issues. The section below lists additional content indexed only for pull requests.
Additionally for pull requests
- Commits: Commit SHAs (and related commit context) are synced as dedicated blocks so answers can be tied to the commits on the PR.
- Changed files: For files touched by the PR, the connector indexes file content together with the diff (patch) for that change.
- Review comments on the diff: Per-file review comments on the PR changes—including line-associated feedback where GitHub provides it—are indexed separately from regular issue/PR conversation comments.
- Reviews: PR-level review submissions (for example approve, request changes, or comment-only review) are indexed as distinct material from inline review-comment threads.
Sync pipeline (summary)
- Fetch all issues and pull requests for the repository (respecting full vs incremental sync rules above).
- Batch records for processing.
- Build BlockGroups for description and comments; map attachments and images to the description or the correct comment.
- For pull requests only, add blocks for commits, changed files with diffs, review comments on changes, and review submissions.
Comments are stored as BlockGroups within the parent issue or pull request BlocksContainer (not as separate top-level records). That keeps threads organized and ensures comments are removed when the parent record is deleted.
Checkpoint Management
After each successful sync:- Stores the latest issue update timestamp as checkpoint for each repository
FAQ
Queries not returning results. What could be wrong?
Queries not returning results. What could be wrong?
Common causes:
-
Email mismatch - The email used during connector authentication doesn’t match your PipesHub account email. This causes permission issues preventing you from accessing synced data.
- Fix: Reconfigure the connector and authenticate using the same email as your PipesHub account.
-
Data not yet indexed - The connector is still syncing or hasn’t completed the initial indexing process.
- Fix: Go to Settings > Connectors, check the sync status, and wait for indexing to complete.
How long does the initial sync take?
How long does the initial sync take?
The initial sync duration depends on the size of your GitHub repositories:
Why do I see no issues after authenticating?
Why do I see no issues after authenticating?
The most common causes are missing scopes or selecting the wrong GitHub account. Re-run authentication, ensure the PipesHub email and GitHub account email matches.
Ready to Get Started?
Connect your GitHub account to PipesHub in just a few minutes. Follow the step-by-step guide above to enable repository issues and pull-requests search across all your GitHub content.
