fix(workers): point WORKOS_ISSUER at accounts.mukoko.com (identity.nyuchi.com has no DNS) - #62
Merged
Merged
Conversation
…d identity.nyuchi.com Both deployed worker configs named an AuthKit issuer with no DNS record: identity.nyuchi.com resolves to nothing (getent: no output; the discovery fetch returns 000), so the site gate worker could not complete a WorkOS OIDC login at all — every `visibility: internal` page was unsignable-into — and the docs MCP worker could not verify a caller's bearer token. The AuthKit domain moved to accounts.mukoko.com in the Aug 2026 migration; its /.well-known/openid-configuration self-identifies as that issuer and /oauth2/jwks answers 200. The site's client id (client_01KVTX0V2K1VM3PSC0DJ9VZWTV) is a live Connect app in the same WorkOS project+environment that AuthKit domain serves, so the host swap is a correction, not a migration. Also corrects the reader-facing docs that presented the dead host as the canonical identity host, and adds the four-host table (AuthKit issuer vs WorkOS auth API vs the two gateways) to the identity overview, plus a "do not restore" note at each WORKOS_ISSUER line — pointing an issuer variable at auth.mukoko.com yields metadata that validates but dead-ends at discovery. Test fixtures in shamwari-docs-ai are left alone: they are opaque stand-ins for AI-returned prose, asserted verbatim, not configuration. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HFaeL83iEL5gqQXhHweH6u
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
nyuchi-docs-mcp | d06153c | Commit Preview URL Branch Preview URL |
Aug 12 2026, 11:17 AM |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
shamwari-docs-ai | d06153c | Commit Preview URL Branch Preview URL |
Aug 12 2026, 11:17 AM |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
nyuchi-docs | d06153c | Commit Preview URL Branch Preview URL |
Aug 12 2026, 11:18 AM |
bryanfawcett
marked this pull request as ready for review
August 12, 2026 11:19
bryanfawcett
added a commit
that referenced
this pull request
Aug 12, 2026
…ame the real WorkOS project (#63) Two factual errors #62 deliberately left for a separate PR, because they are different claims about different things. 1. `api.mukoko.com` was documented as a "Legacy host" (api/overview) and "Legacy production host" (api/security). It is neither. `getent hosts api.mukoko.com` returns nothing and `GET https://api.mukoko.com/health` returns 000 (connection failure, not a redirect); `https://api.nyuchi.com/health` returns 200 `{"status":"healthy",...,"version":"4.1.0"}`. Per the ecosystem architecture, api.nyuchi.com is the gateway serving traffic today (FastAPI on Fly, nyuchi/api-gateway) and api.mukoko.com is a SEPARATE Mukoko gateway still being built. "Legacy" tells a reader the opposite of what is true: that it used to work, rather than that it does not work yet. Both rows are corrected rather than deleted — the name is real (it is in the gateway's own `DEFAULT_TRUSTED_HOSTS` in gateway/lib/security.py, allow-listed ahead of the host existing), so a reader who has heard it needs somewhere to find out what it is. Each page carries a "do not reword this back" note so the not-legacy/not-yet-built distinction survives a future editing pass. 2. deployment/agentgateway named a "Nyuchi Identity" WorkOS project. No such project exists: the account (team "Mukoko Account") has exactly ONE project, `Mukoko Account` (project_01KQBBSK9062YGVJB6JWW3BMN8), with two environments — `Staging` (sandbox) and `Production`. The Connect app's environment (Production) was already right; only the project name was wrong. Swept every mention of the other three hosts plus nyuchi.dev and found no further errors: the four-host table #62 added is confirmed live (accounts.mukoko.com/.well-known/openid-configuration self-identifies as that issuer; auth.mukoko.com/.well-known/oauth-authorization-server 404s, which is exactly the dead-end #62 warns about), every api.nyuchi.com curl example is on the host that answers, and the one nyuchi.dev URL (tester.fundi.nyuchi.dev) is an explicitly internal-only agent, not a consumer surface. The Kweli MCP is documented at kweli.mukoko.com/mcp, which answers 200. Claude-Session: https://claude.ai/code/session_01HFaeL83iEL5gqQXhHweH6u Co-authored-by: Bryan Fawcett <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The bug
Two deployed worker configs pointed their WorkOS OAuth issuer at a hostname that does not exist:
site/wrangler.toml→WORKOS_ISSUER = "https://identity.nyuchi.com"nyuchi-docs-mcp-worker/wrangler.toml→ sameReproduction:
Impact today:
site/src/worker/gate.tsbuilds${WORKOS_ISSUER}/oauth2/authorize,/oauth2/tokenand/oauth2/jwksfrom this var, so every page whose frontmatter saysvisibility: internalwas gated behind a login against a host with no DNS — internal docs pages could not be signed into at all. The docs MCP worker's bearer-token verification (src/auth.ts) was broken the same way.The AuthKit domain moved to
accounts.mukoko.comin the Aug 2026 migration. Verified via the WorkOS admin API that there is exactly one WorkOS project (Mukoko Account), whose Production environment is the oneaccounts.mukoko.comserves — andsite/wrangler.toml'sclient_01KVTX0V2K1VM3PSC0DJ9VZWTVis a live Connect app in it. Same environment, same app, working issuer.Changes
site/wrangler.tomlaccounts.mukoko.com, plus a "what this host is / is NOT / do not restore" commentnyuchi-docs-mcp-worker/wrangler.tomlsite/src/content/docs/identity/overview.mdxsite/src/content/docs/index.mdxsite/src/content/docs/deployment/agentgateway.mdxWORKOS_ISSUERsecret table rowREADME.mdidentity/section blurbNo variable was renamed — only values and prose.
shamwari-docs-ai/tests/worker.test.tsdeliberately untouched. Its three mentions are fixture strings standing in for AI-returned prose, asserted verbatim to prove SSE pass-through. Editing them would be pure grep-satisfaction and would risk breaking a passing test.Gates
All from the repo root, all passing:
pnpm install— lockfile up to datepnpm build— 58 pages built, completepnpm -r --if-present run test— 5 + 9 + 9 + 12 = 35 tests passed, 0 failedpnpm skills:validate—✓ skills validnpx wrangler deploy --dry-runin both touched packages — configs parse, both now showenv.WORKOS_ISSUER ("https://accounts.mukoko.com"). Not deployed.Not touched (flagged for a follow-up)
site/src/content/docs/deployment/agentgateway.mdxsays the Connect app was created in the "Nyuchi Identity" WorkOS project. No such project exists — the admin API reports onlyMukoko Account. Stale prose, but renaming a project reference is a separate factual claim; left for owner confirmation.site/src/content/docs/api/overview.mdx+api/security.mdxlistapi.mukoko.comas a "Legacy host" / "Legacy production host" for the gateway. It has no DNS record and per the ecosystem docs is a separate gateway still being built, not a legacy alias ofapi.nyuchi.com. Out of scope here, but it is wrong in the same family of way.Generated by Claude Code