Index a repository’s issues and their comments. Each issue becomes one document, and citations link back to it.
Other GitHub sources read the same repository: GitHub Pull Requests, GitHub Discussions, GitHub Files and GitHub Code. Add any of them side by side.

Before you start

  • A Pro plan or higher, and permission to edit sources in the knowledge base.
  • The repository’s owner and name.
  • For a private repository: a GitHub access token. A public repository needs none, but a token avoids GitHub’s low limit on anonymous requests.

Token permissions

Use a fine-grained personal access token limited to the repositories you connect, with:
  • Issues: read-only
  • Metadata: read-only (GitHub adds this automatically)
A classic token with the repo scope also works. Kelu only reads; it never writes to your repository.

Set up

1

Choose GitHub Issues

Open your knowledge base, go to Sources, click Add source and choose GitHub Issues. Give the source a name.
2

Name the repository

Fill in Owner and Repository name. Pasting the repository URL into Owner fills both. Add the Access token if you have one.
3

Choose what to index (optional)

Set State, Labels, Exclude labels and Updated within. By default, every closed issue is indexed.
4

Test and add

Click Test connection, then Add source. The first sync starts right away.

Options

OptionDefaultWhat it does
Owner—Required. The user or organization that owns the repository.
Repository name—Required.
Access tokenEmptyRequired for a private repository.
API URLEmptyGitHub Enterprise Server only, for example https://github.example.com/api/v3.
StateClosed onlyClosed only, Open only or All.
LabelsEmptyKeeps issues that carry at least one of these labels.
Exclude labelsEmptyDrops issues that carry any of these labels. Wins over Labels.
Updated withinEmptyOnly issues updated in the last N days. Empty indexes all of them.
Keep a label such as exclude-kelu in Exclude labels. When an outdated issue causes a bad answer, add that label to it on GitHub. The next sync removes it.

What gets indexed

  • One document per issue, titled Issue #123: title.
  • It holds the status and close reason, who opened it, its labels, the description and the comments.
  • Long threads keep the newest 200 comments. The source’s Sync history tab lists any thread that was cut.
  • Pull requests are not included. Add a GitHub Pull Requests source for those.
When you change State, Labels or Exclude labels, the next sync removes issues that no longer match. Updated within is different: an issue that ages out of the window stays indexed.

Sync

GitHub Issues re-syncs every 5 minutes. Issues that did not change are skipped. Click Sync Now on the source page to sync right away.

Troubleshooting

  • Nothing was indexed. Check State. With Closed only, open issues are not read.
  • A label filter matched nothing. Check the label exists on the repository. A typo in one label quietly matches fewer issues.
  • The sync fails with rate limit exhausted. Add a token, or wait for the reset time in the error.
  • 401 or 403. GitHub rejected the token, or it cannot read this repository.
  • 404. The repository was not found, or the token cannot see it. A fine-grained token must list this repository.
  • state "…" is not one of open, closed, all. The source’s state was set through the API to a value GitHub does not accept. Pick one from the State list.