Files
id/apps/web/public/config.json
zeekayandHanzo Dev c031f3d2b9 The identity portal publishes as a site
Every id host renders the same SPA, and the only thing the pod adds is
/config.json, which it writes at boot from two SPA_* env values: the per-host
org catalog and the ingest keyring, both public (the browser reads them). That
file now ships in the export, and the site lane publishes it to
s3://hanzo-sites/hanzo/id, so the edge can serve hanzo.id and its brand hosts
with no pod. The image keeps its SPA_* env until the pod is retired, and that
env still wins inside the pod.

Checked in headless Chromium with /v1 and /.well-known left to cloud: the export
renders what the pods render on hanzo.id, iam.hanzo.ai, lux.id, id.lux.network,
zoolabs.id and pars.id.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-19 10:17:21 -07:00

2 lines
3.0 KiB
JSON

{"iamTenantConfigJson":"{\n \"hanzo.id\": {\"orgId\":\"hanzo\",\"canonical\":true,\"clientId\":\"hanzo-console\",\"appName\":\"hanzo-console\",\"brandUrl\":\"https://cdn.jsdelivr.net/npm/@hanzo/[email protected]/brand.json\"},\n \"iam.hanzo.ai\": {\"orgId\":\"hanzo\",\"clientId\":\"hanzo-console\",\"appName\":\"hanzo-console\",\"iamUrl\":\"https://iam.hanzo.ai\",\"publicOrigin\":\"https://iam.hanzo.ai\",\"brandUrl\":\"https://cdn.jsdelivr.net/npm/@hanzo/[email protected]/brand.json\"},\n \"auth.hanzo.ai\": {\"orgId\":\"hanzo\",\"clientId\":\"hanzo-console\",\"appName\":\"hanzo-console\",\"iamUrl\":\"https://auth.hanzo.ai\",\"publicOrigin\":\"https://auth.hanzo.ai\",\"brandUrl\":\"https://cdn.jsdelivr.net/npm/@hanzo/[email protected]/brand.json\"},\n \"lux.id\": {\"orgId\":\"lux\", \"canonical\":true,\"payUrl\":\"https://pay.lux.cloud\",\"clientId\":\"lux-cloud\", \"appName\":\"lux-cloud\", \"brandUrl\":\"https://cdn.jsdelivr.net/npm/@luxfi/[email protected]/brand.json\"},\n \"id.lux.network\": {\"orgId\":\"lux\", \"payUrl\":\"https://pay.lux.cloud\",\"clientId\":\"lux-cloud\", \"appName\":\"lux-cloud\", \"brandUrl\":\"https://cdn.jsdelivr.net/npm/@luxfi/[email protected]/brand.json\"},\n \"zoolabs.id\": {\"orgId\":\"zoo\", \"canonical\":true,\"payUrl\":\"https://pay.zoo.cloud\",\"clientId\":\"zoo-console\", \"appName\":\"zoo-console\", \"brandUrl\":\"https://cdn.jsdelivr.net/npm/@zooai/[email protected]/brand.json\"},\n \"www.zoolabs.id\": {\"orgId\":\"zoo\", \"payUrl\":\"https://pay.zoo.cloud\",\"clientId\":\"zoo-console\", \"appName\":\"zoo-console\", \"brandUrl\":\"https://cdn.jsdelivr.net/npm/@zooai/[email protected]/brand.json\"},\n \"id.zoo.network\": {\"orgId\":\"zoo\", \"payUrl\":\"https://pay.zoo.cloud\",\"clientId\":\"zoo-console\", \"appName\":\"zoo-console\", \"brandUrl\":\"https://cdn.jsdelivr.net/npm/@zooai/[email protected]/brand.json\"},\n \"pars.id\": {\"orgId\":\"pars\", \"canonical\":true,\"clientId\":\"pars-console\", \"appName\":\"pars-console\", \"brandUrl\":\"https://cdn.jsdelivr.net/npm/@parsdao/[email protected]/brand.json\"},\n \"id.pars.network\": {\"orgId\":\"pars\", \"clientId\":\"pars-console\", \"appName\":\"pars-console\", \"brandUrl\":\"https://cdn.jsdelivr.net/npm/@parsdao/[email protected]/brand.json\"},\n \"osage.id\": {\"orgId\":\"osage\",\"canonical\":true,\"clientId\":\"osage-id-portal\",\"appName\":\"osage-id\"},\n \"www.osage.id\": {\"orgId\":\"osage\",\"clientId\":\"osage-id-portal\",\"appName\":\"osage-id\"},\n \"id.bootno.de\": {\"orgId\":\"bootnode\",\"canonical\":true,\"clientId\":\"bootnode-platform\",\"appName\":\"bootnode-platform\"},\n \"id.adnexus.dev\": {\"orgId\":\"adnexus\",\"canonical\":true,\"clientId\":\"adnexus-app\",\"appName\":\"adnexus-app\"}\n}\n","ingestKeyring":"{\n \"hanzo\": \"pk-rM_CdaF2MQckGCrla113SrR1oH4zvqN8xh2I95Z9tY8\",\n \"lux\": \"pk-gUZp6ZVfhJzSwK-rb4oLbVkpCnMBx5uSCpxf_5yEhQk\",\n \"zoo\": \"pk-3TKpKnERV9AQSsBUERWkZejC1O1mUxc1jRzsP3MPbs4\"\n}\n","v":1}