Publication boundary
A Startup's Customers meet its Publication, a branded package of addresses, packages, keys and docs, and never the platform.
A Startup's Customers meet its Publication, never the platform. Every address, package, key, header and error a Customer sees carries the Startup's own Brand.
What a Publication holds
One record holds everything a Customer touches, all on the Startup's Domain.
| What | Property | For openhours.dev |
|---|---|---|
| API | api | https: |
| MCP server | mcp | https: |
Docs, with llms.txt | docs | https: |
| Status page | statusPage | https: |
| Portal | portal | https: |
| SDK, CLI and MCP packages | packages | openhours in each package registry |
| API key prefix | keyPrefix | openhours_sk_live_ |
| Key variable | keyEnv | OPENHOURS_API_KEY |
| Webhook signature header | webhookHeader | Openhours-Signature |
| Error namespace | errorNamespace | https: |
How it compiles
A Publication compiles from the Brand and one Version. Deploying a Version compiles a new Publication. A restyle compiles one too and leaves the API version alone.
Everything a Customer uses compiles into it: the buy links the publish gate emits, the Components a Customer embeds, and the generated docs.
The boundary
Nothing inside a Publication names the platform: no api.sb address, no STARTUP_BUILDER_ variable, no startup-builder package. The verifier fails any page written for a Startup's Customers that shows one.
The Startup's own Workers still call api.sb with the platform SDK. Only the Customer's side differs.
Self-host
StartupBuilder is the Studio's own Publication. Every tool a founder gets here, from keys and logs to usage and the test environment, exists in every Startup's Publication for its own Customers.