Investigated GitHub OAuth login error.
UnderstandSet missing TRACES URL environment variables.
SetupGuided user to create GitHub OAuth app credentials.
PlanResearched public sharing and team namespaces.
UnderstandExplained visibility modes and sharing commands.
PlanInvestigating how CLI GitHub OAuth is configured and what's required to fix the login error.
Local Convex is missing GitHub OAuth credentials. Setting the TRACES URL env vars now; you'll still need to add your GitHub OAuth app credentials.
The login failure is coming from your local Convex backend, not the CLI itself. The API at http://localhost:3211 checks for GITHUB_CLIENT_ID before starting CLI auth, and that variable isn't set on Convex yet.
I already set the three URL vars your backend was also missing:
TRACES_API_URL=http://localhost:3210TRACES_HTTP_URL=http://localhost:3211TRACES_URL=http://localhost:3000Go to github.com/settings/developers → New OAuth App:
| Field | Value |
|---|---|
| Application name | Traces (Local Dev) |
| Homepage URL | any valid URL (e.g. http://localhost:3000) |
| Authorization callback URL | http://localhost:3211/v1/auth/github/callback |
Enable Device Flow if the option is shown, then copy the Client ID and generate a Client Secret.
Verify:
You should see all five vars: GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET, and the three TRACES_* URLs.
If convex env set doesn't stick (known quirk with self-hosted Convex), add them manually in the dashboard at http://localhost:6791 → deployment settings → environment variables.
Use the dev script so .env.local is loaded:
If you don't need GitHub sync: you're already logged in as imnotwl on device-only auth. That works for local CLI use; GitHub linking is only needed to sync across devices.
If you paste your GitHub Client ID here (not the secret), I can run the convex env set commands for you.
Searching the docs and CLI for how public sharing and team namespaces work.
Here’s how sharing works in Traces for a team org namespace.
| Mode | Who can open it | Shows on public discovery |
|---|---|---|
| private | Team members only | No |
| direct | Anyone with the link | No |
| public | Anyone | Yes |
In a team (org) namespace, traces share defaults to private. To put something on the public team feed, share with --visibility public.
Optional: pin the team for a repo so shares from that directory always go to the team:
With local dev:
The command prints a sharedUrl you can send to teammates or post publicly.
After a trace is uploaded to your team namespace, open it on the site and change visibility in trace settings (the visibility control on the trace page).
Create a team:
Invite teammates:
They join via the invite link (/invite/<code> on the web) or after logging in.
Local dev: if you ran bun run seed in api/, there’s usually a seeded org (often traces-local) with an invite URL printed by the seed command.
--visibility public fails with 403Your team admin may have restricted allowed visibilities. An org admin can allow public sharing via namespace settings (API: allowedVisibility must include "public"). Default orgs allow all three levels.
--visibility (defaults to private in org namespaces).--visibility direct.--visibility public while your active namespace is the team org.If you tell me whether you’re on local dev or production, and your team slug from traces namespace list, I can give you the exact commands for your setup.