Overview
Every product-identifying string, path, colour, and endpoint in DPAI is data,
not source. The whitelabel pipeline takes a single brand.json file and produces
a fully independent CLI package: its own npm name, binary name, config directory, environment
variable prefix, README, and colour theme.
1. Scaffold
Generate a starter brand file for your organization:
dpai brand init acme-msp --out acme.brand.json
This writes a JSON file with sensible defaults for every required field, ready to edit.
2. Validate
Check that the brand file is well-formed and every required field is present before building:
dpai brand validate acme.brand.json
Validation catches missing fields, malformed URLs, and reserved names early — before you spend time building an artifact you can't ship.
3. Build
Produce the rebranded CLI in a new output directory:
bun run whitelabel acme.brand.json --out ../acme-cli --install-script
The --install-script flag also generates a one-line curl installer for your
own domain, matching the pattern used by the upstream install script.
Gateway lock
Setting gateway.locked to true pins the built CLI to your gateway
endpoint. End users cannot repoint it elsewhere, which means every request from
every seat you distribute transits infrastructure you audit and control.
| Field | Effect |
|---|---|
gateway.baseUrl | The only endpoint the built binary will call |
gateway.locked | Prevents overriding the base URL at runtime |
models.allow | Restricts which models a seat may request |
brand.json reference
{
"id": "acme-msp",
"productName": "Acme",
"binName": "acme",
"configDirName": ".acme",
"envPrefix": "ACME",
"gateway": {
"baseUrl": "https://gateway.acme.com/v1",
"locked": true
},
"models": { "allow": ["claude-sonnet-5"] },
"theme": { "accent": "#ff5500" }
}
id— internal identifier used in generated file headers and logs.productName— the display name shown in the TUI and README.binName— the executable name installed on the user's PATH.configDirName— where local config and session state live, e.g.~/.acme.envPrefix— prefix for environment variables, e.g.ACME_API_KEY.gateway— the backend the built CLI talks to, optionally locked.models.allow— an allow-list restricting selectable models.theme.accent— the accent colour used across the TUI.
Shipping to clients
The output directory from bun run whitelabel is a standalone package. Publish
it under your own npm scope, host the generated install script on your own domain, and
distribute the binary name you chose. Clients see your brand from the first prompt to the
last line of output — nothing to configure, nothing pointing back at DPAI.
Need help with a specific rollout? See Support.