Why production isn't a copy of the local setup In production there is no dev server to forward requests, and the extension can't go into the public zrok repo. Four constraints follow from the code. 1. The extension is compiled in at build time. There is no runtime plugin loading, so the deployed console must be built with the extension already installed. 2. The console ships inside the controller binary. ui/embed.go compiles ui/dist into zrok2 controller. Changing the console means rebuilding the controller, unless the controller is built with -tags no_zrok_ui and the console is hosted on its own. 3. The extension is private and zrok is public. Committing the dependency and registration to zrok main would break the open-source build, because outsiders can't install @netfoundry/myzrok-extension. 4. The controller doesn't know about /myzrok-orchestration. ui/middleware.go sends /api/v2 and /health to the API and answers every other path with the console's index.html. So the Billing page's API calls would get HTML back, unless a proxy or ingress in front of the controller routes them to the orchestration service.