Summary
The launcher currently runs entirely on personal accounts (@sktbrd): the Vercel integration, the GitHub OAuth App, the hosting Vercel project, and the template repo all live under an individual. Before this is an official Builder tool, all of it needs to move to the official Builder org/team so it survives account changes, shares access across the team, and presents as an official integration to users.
This is a coordination task — it can't be done solo because it requires owner access to the official Builder GitHub org and Vercel team. This issue tracks the migration with a step-by-step tutorial.
Fill in before starting:
- Official GitHub org:
<builder-github-org> (e.g. nounsbuild)
- Official Vercel team:
<builder-vercel-team>
- Production domain:
<prod-domain> (e.g. deploy.nouns.build)
What has to move
| Asset |
Currently |
Target |
| Vercel Integration (OAuth client) |
personal Vercel account |
official Vercel team |
| GitHub OAuth App |
personal GitHub |
official GitHub org |
| Hosting Vercel project (this app) |
personal Vercel |
official Vercel team |
Template repo (TEMPLATE_REPO) |
sktbrd/builder-template-app |
<builder-github-org>/builder-template-app |
| Production env vars |
personal project |
official project |
OAUTH_STATE_SECRET |
dev value |
freshly generated for prod |
The env var names the app reads (see .env.example):
TEMPLATE_REPO, OAUTH_STATE_SECRET, GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET, GITHUB_REDIRECT_URI, VERCEL_CLIENT_ID, VERCEL_CLIENT_SECRET, VERCEL_REDIRECT_URI, VERCEL_INTEGRATION_SLUG.
Tutorial
0. Prerequisites
1. Transfer the GitHub repo (optional but recommended)
If the launcher repo itself should be org-owned:
2. Move the template repo
3. Recreate the GitHub OAuth App under the org
GitHub OAuth Apps cannot be transferred between owners — recreate it:
Note: scope is public_repo read:user (set in code). A future improvement is migrating to a GitHub App for per-repo scoping — tracked separately, out of scope here.
4. Recreate the Vercel Integration under the team
Integrations are owned by the account/team that creates them — recreate under the team:
5. Move / recreate the hosting project on the official team
6. Set production environment variables (official project)
In the official Vercel project → Settings → Environment Variables (Production scope):
TEMPLATE_REPO=<builder-github-org>/builder-template-app
OAUTH_STATE_SECRET=<openssl rand -hex 32>
GITHUB_CLIENT_ID=<from step 3>
GITHUB_CLIENT_SECRET=<from step 3>
GITHUB_REDIRECT_URI=https://<prod-domain>/api/github/callback
VERCEL_CLIENT_ID=<from step 4>
VERCEL_CLIENT_SECRET=<from step 4>
VERCEL_REDIRECT_URI=https://<prod-domain>/api/vercel/callback
VERCEL_INTEGRATION_SLUG=<from step 4>
7. Decommission the personal setup
Verification checklist (post-migration)
Notes / risks
- OAuth Apps and Vercel integrations can't be transferred — they must be recreated, so client IDs/secrets change. Plan a short window where the old and new exist together, then cut over env vars and redeploy.
- Users who already authorized the personal apps will simply re-authorize the official ones; no user data is stored server-side, so there's nothing to migrate on the user side.
Summary
The launcher currently runs entirely on personal accounts (
@sktbrd): the Vercel integration, the GitHub OAuth App, the hosting Vercel project, and the template repo all live under an individual. Before this is an official Builder tool, all of it needs to move to the official Builder org/team so it survives account changes, shares access across the team, and presents as an official integration to users.This is a coordination task — it can't be done solo because it requires owner access to the official Builder GitHub org and Vercel team. This issue tracks the migration with a step-by-step tutorial.
What has to move
TEMPLATE_REPO)sktbrd/builder-template-app<builder-github-org>/builder-template-appOAUTH_STATE_SECRETThe env var names the app reads (see
.env.example):TEMPLATE_REPO,OAUTH_STATE_SECRET,GITHUB_CLIENT_ID,GITHUB_CLIENT_SECRET,GITHUB_REDIRECT_URI,VERCEL_CLIENT_ID,VERCEL_CLIENT_SECRET,VERCEL_REDIRECT_URI,VERCEL_INTEGRATION_SLUG.Tutorial
0. Prerequisites
1. Transfer the GitHub repo (optional but recommended)
If the launcher repo itself should be org-owned:
Settings → General → Transfer ownership→ transfersktbrd/builder-deploy-directto<builder-github-org>git remote set-url origin git@github.com:<builder-github-org>/builder-deploy-direct.git2. Move the template repo
sktbrd/builder-template-appinto<builder-github-org>TEMPLATE_REPO=<builder-github-org>/builder-template-app3. Recreate the GitHub OAuth App under the org
GitHub OAuth Apps cannot be transferred between owners — recreate it:
https://github.com/organizations/<builder-github-org>/settings/applications→ New OAuth Apphttps://<prod-domain>https://<prod-domain>/api/github/callbackGITHUB_CLIENT_ID,GITHUB_CLIENT_SECRETGITHUB_REDIRECT_URI=https://<prod-domain>/api/github/callback4. Recreate the Vercel Integration under the team
Integrations are owned by the account/team that creates them — recreate under the team:
https://vercel.com/dashboard/integrations/console(as the official team) → Createbuilder-deploy-direct→VERCEL_INTEGRATION_SLUGhttps://<prod-domain>/api/vercel/callbackVERCEL_CLIENT_ID,VERCEL_CLIENT_SECRETVERCEL_REDIRECT_URI=https://<prod-domain>/api/vercel/callback5. Move / recreate the hosting project on the official team
<builder-vercel-team>(Project → Settings → Advanced → Transfer), or create a new project on the team from the GitHub repomainauto-deploy<prod-domain>6. Set production environment variables (official project)
In the official Vercel project →
Settings → Environment Variables(Production scope):OAUTH_STATE_SECRET(don't reuse the dev value)7. Decommission the personal setup
Verification checklist (post-migration)
https://<prod-domain>/api/mereturns{"vercel":{"connected":false},"github":{"connected":false}}https://<prod-domain>/api/debugreturns 404 (prod-gated)<prod-domain>(no personal-account references remain)Notes / risks