Connections

GitHub

Camper manages organization teams on GitHub. Connect with a GitHub App installation (recommended) or a personal / fine-grained access token for development.

Connect with a GitHub App (recommended)

  1. Create a GitHub App (organization) with permissions to manage teams and read members as required for your Camper plan.
  2. Install the app on the target organization.
  3. Note the App ID, installation ID, and download a private key (PEM).
  4. In Camper: Connections → GitHub → Connect.
  5. Choose GitHub App, enter org login, app id, installation id, and paste the PEM.
  6. Camper seals credentials with your tenant key and runs a health check (mint installation token + list teams).

Camper mints short-lived installation access tokens on demand (JWT → GitHub) and caches them until near expiry — tokens are never logged.

PAT fallback

Use a PAT or fine-grained token with org team access for local/dev. Prefer Apps in production so rotation and least-privilege installs stay org-scoped.

  1. Connections → GitHub → Token mode.
  2. Enter org login + token.
  3. Health check lists teams with the token.

What you get today

CapabilityStatus
Connect + health
Browse / import teams
Create / rename / delete teams
Add / remove team members
Map identity email → GitHub login✅ (SAML/SCIM + verified domain emails)

Team names are free-form; GitHub slugs are derived (lowercase, hyphens) with collision checks on create/rename.

Archive on GitHub means delete the team (there is no soft-archive). Re-create if you need the team again.

Identity resolution

Camper maps each person's work email to a GitHub login using (in order):

  1. SAML / SCIM external identities (GraphQL) — matches SAML nameId or SCIM emails to the linked GitHub user
  2. Organization-verified domain emails on org members (GraphQL)

If neither path finds a user, Camper records drift (skipped membership) instead of failing the batch. Requires the GitHub App (or token) to have permission to read org members / external identities.

Optional connection config: identityMode = auto (default) | saml | verified_domain.

Nested teams (optional)

To nest a managed team under another GitHub team, set the resource’s parent team id (parentTeamId) or enable nesting on the connection (nestTeams) with a default parent. Camper passes GitHub’s parent_team_id on create.

Rate limits

Camper honors GitHub primary and secondary (abuse) rate limits. Secondary limits often arrive as HTTP 403 — Camper treats them as retryable throttles (not permission failures) and backs off using Retry-After or at least 60 seconds.

Disconnect / reconfigure

Use Reconfigure on the connection card to seal new App or token credentials. Linked team resources stay in Camper until you change them under Resources.

Related