GitHub
Ingests repositories, issues, pull requests, comments, reviewers, and labels from GitHub. Per-user installed access is mapped onto workspace access groups.
variant=info text="Issue tracking" variant=success text="OAuth / PAT" variant=success text="Maps ACLs"
What gets ingested
| Element | Mapped to |
|---|---|
| Repository | _IssueProject |
| Issue | _Issue |
| Pull request | _Pull |
| Comment (issue or PR) | _Comment |
| User (author, assignee, reviewer) | _IssueUser |
| Labels | Properties on _Issue / _Pull |
Authentication
Two modes:
- GitHub OAuth (per-user) — the user logs in and Curiosity stores a long-lived token.
- Personal access token — useful for service accounts that need to ingest organization-wide.
The underlying HTTP client is Octokit.
Access control mapping
| Source | Carried into the graph? |
|---|---|
| Repository visibility (public vs. private) | Yes — public repos are mapped to the public access group; private repos go to the connecting user's access group. |
| Per-org/team membership | Yes when the GitHub token includes read:org scope. |
| External contributors | Picked up as _IssueUser but don't gain workspace access by themselves. |
Sync cadence
- Default cron: daily at 08:00 UTC.
- Incremental sync:
updated_atwatermark per repository, per issue type. The connector pages through the GitHub REST + GraphQL APIs respecting the rate-limit window.
Notable
- The user selects which repositories to ingest (no global "ingest everything" in private orgs by default).
- Supports both REST and GraphQL endpoints behind the same task — switching to GraphQL reduces the number of API calls on large repos.