Found while fixing #8356. Filed rather than fixed: that card's file surface is packages/cloud-connection, and this is a change to the CLI wiring block in packages/cli/src/commands/serve.ts.
Serve's marketplace wiring has two arms. The cloud arm mounts the proxy, install-local, cloud-connection and RuntimeConfigPlugin. The offlineInstallLocal arm (added by #8343, OS_CLOUD_URL=off) mounts install-local alone:
}elseif(wiring.offlineInstallLocal){// Cloud explicitly disabled -> mount the OFFLINE half only.awaitkernel.use(newMarketplaceInstallLocalPlugin({controlPlaneUrl: Serve.OFFLINE_CONTROL_PLANE}));trackPlugin('MarketplaceInstallLocal');}So an air-gapped runtime now has a working/api/v1/marketplace/install-local route and serves no/api/v1/runtime/config at all — the Console has no way to learn the route is there, and renders no install affordance for a capability that works. #8343 calls this out directly: "a cloud-less framework runtime currently has a working install-local route that the Console cannot discover."
Why it was left that way, and why that reason is now gone
#8343 could not mount RuntimeConfigPlugin in this arm because the plugin hardcoded features.marketplace: true: reporting install-local truthfully would have cost a false browse claim, "trading the reported bug for its mirror image" (#8356's words).
#8356 removes that constraint. features.marketplace is now derived from the route table of the app serving the response, so mounting RuntimeConfigPlugin on a runtime with no proxy reports marketplace: false on its own — no knob, nothing for the wiring to remember. Mounting it in this arm is now safe and is what completes #8343's user-visible outcome.
Suggested change
Mount RuntimeConfigPlugin in the offlineInstallLocal arm with the same shape the cloud arm uses (controlPlaneUrl: '', singleEnvironment: true, installLocal: true), and pin it: an OS_CLOUD_URL=off boot serves /api/v1/runtime/config reporting installLocal: trueandmarketplace: false.
Worth checking while there: the cloud arm's RuntimeConfigPlugin and this one would be two kernel.use calls keyed by the same plugin name, so the same "a host that wires its own keeps it" presence reasoning the install-local mount already documents in this block should apply here too.
Blocked-by: #8356 (the derivation must land first, or this arm re-introduces the false browse claim on exactly the deployment #8343 was filed against).
Backlink: #8343, #8356.
Found while fixing #8356. Filed rather than fixed: that card's file surface is
packages/cloud-connection, and this is a change to the CLI wiring block inpackages/cli/src/commands/serve.ts.Serve's marketplace wiring has two arms. The cloud arm mounts the proxy, install-local, cloud-connection andRuntimeConfigPlugin. TheofflineInstallLocalarm (added by #8343,OS_CLOUD_URL=off) mounts install-local alone:So an air-gapped runtime now has a working
/api/v1/marketplace/install-localroute and serves no/api/v1/runtime/configat all — the Console has no way to learn the route is there, and renders no install affordance for a capability that works. #8343 calls this out directly: "a cloud-less framework runtime currently has a working install-local route that the Console cannot discover."Why it was left that way, and why that reason is now gone
#8343 could not mount
RuntimeConfigPluginin this arm because the plugin hardcodedfeatures.marketplace: true: reporting install-local truthfully would have cost a false browse claim, "trading the reported bug for its mirror image" (#8356's words).#8356 removes that constraint.
features.marketplaceis now derived from the route table of the app serving the response, so mountingRuntimeConfigPluginon a runtime with no proxy reportsmarketplace: falseon its own — no knob, nothing for the wiring to remember. Mounting it in this arm is now safe and is what completes #8343's user-visible outcome.Suggested change
Mount
RuntimeConfigPluginin theofflineInstallLocalarm with the same shape the cloud arm uses (controlPlaneUrl: '',singleEnvironment: true,installLocal: true), and pin it: anOS_CLOUD_URL=offboot serves/api/v1/runtime/configreportinginstallLocal: trueandmarketplace: false.Worth checking while there: the cloud arm's
RuntimeConfigPluginand this one would be twokernel.usecalls keyed by the same plugin name, so the same "a host that wires its own keeps it" presence reasoning the install-local mount already documents in this block should apply here too.Blocked-by: #8356 (the derivation must land first, or this arm re-introduces the false browse claim on exactly the deployment #8343 was filed against).
Backlink: #8343, #8356.