diff --git a/apps/gittensory-ui/src/routes/docs.self-hosting-github-app.tsx b/apps/gittensory-ui/src/routes/docs.self-hosting-github-app.tsx index 59f4913ddf..b309db729d 100644 --- a/apps/gittensory-ui/src/routes/docs.self-hosting-github-app.tsx +++ b/apps/gittensory-ui/src/routes/docs.self-hosting-github-app.tsx @@ -10,13 +10,13 @@ export const Route = createFileRoute("/docs/self-hosting-github-app")({ { name: "description", content: - "Connect a self-hosted Gittensory review service to GitHub with a direct GitHub App or brokered Orb enrollment.", + "Connect a self-hosted Gittensory review service to GitHub with your own direct GitHub App (the default, recommended path) or private managed-beta brokered Orb enrollment.", }, { property: "og:title", content: "Self-host GitHub App and Orb — Gittensory docs" }, { property: "og:description", content: - "Connect a self-hosted Gittensory review service to GitHub with a direct GitHub App or brokered Orb enrollment.", + "Connect a self-hosted Gittensory review service to GitHub with your own direct GitHub App (the default, recommended path) or private managed-beta brokered Orb enrollment.", }, { property: "og:url", content: "/docs/self-hosting-github-app" }, ], @@ -30,23 +30,30 @@ function SelfHostingGithubApp() {

Choose a connection mode

+ + Direct App mode is the public default: it costs gittensory nothing to support and can't + overrun a shared rate-limit budget. Brokered mode routes every token mint through + gittensory's own infrastructure and GitHub API quota — every external brokered install is + gittensory's rate-limit and reliability problem, not just the operator's, so it stays + private/managed-beta until the safeguards below are in place. +

One-click App creation (recommended for a Direct App)

@@ -105,6 +112,36 @@ GITHUB_APP_PRIVATE_KEY_FILE=/run/secrets/github-app-private-key.pem GITHUB_WEBHOOK_SECRET=`} /> +

Telemetry is separate from token brokerage

+

+ These are two independent things people conflate because they're both "Orb": anonymized + fleet-calibration telemetry export (enabled by default, works in either + connection mode) and token brokerage (optional, private/managed-beta only, + lets your self-host get installation tokens from gittensory instead of holding its own App + key). Choosing Direct App mode does not opt you out of telemetry, and it's what makes{" "} + the homepage counters and cross-fleet gate calibration reflect direct + installs, not just brokered ones. +

+ +

Brokered Orb env

+ + Before enabling this for anyone outside a controlled managed-beta cohort, weigh: (1){" "} + rate-limit blast radius — every brokered install's GitHub API traffic draws + from token pools gittensory manages, so one misbehaving or high-volume install can degrade + every other brokered install; (2) quota management — there is no automatic + per-install cap on how much of that shared budget one enrollment can consume; (3){" "} + support burden — a broken brokered install looks like a gittensory outage + to its operator, not a self-host misconfiguration, and lands as a support request on + gittensory directly; (4) abuse/misconfiguration risk — an enrollment secret + that leaks or a misconfigured relay can mint tokens or receive webhook traffic for repos the + intended operator doesn't control. + + +

Minimum broker safeguards before a public rollout

+

+ A maintainer go/no-go checklist — do not open brokered enrollment beyond a small, known, + controlled cohort until every item below is true: +

+
    +
  • + Enrollment quota — a hard cap on how many brokered installs can be active + at once, not just an informal agreement. +
  • +
  • + Per-install concurrency limit — one brokered install cannot occupy an + unbounded share of the token-minting or webhook-relay pipeline. +
  • +
  • + Per-install rate budget — a ceiling on GitHub API calls attributable to a + single enrollment, independent of the other installs sharing the broker. +
  • +
  • + Revocation path — an enrollment secret can be revoked immediately, + without waiting for a deploy, when it's compromised or the install is abusive. +
  • +
  • + Metrics broken out by enrollment — token-mint volume, webhook-relay + volume, and error rate are visible per-enrollment, not only aggregated across every + brokered install, so one bad actor is identifiable instead of hiding in the average. +
  • +
+

+ See Troubleshooting for what a degraded + brokered relay looks like in logs today, and{" "} + the beta release checklist's + brokered-mode scenario for the smoke test that exercises this path. +

Webhook checks