Skip to content

Multi-client configs

Agencies deploying Claudius for several clients keep one JSON config per client in clients/, validated against clients/_schema.json.

Terminal window
pnpm claudius init acme # scaffold clients/acme.json
pnpm claudius validate acme # validate against the schema
pnpm claudius snippet acme # generate the embed snippet(s)
{
"$schema": "./_schema.json",
"name": "Acme Corp",
"slug": "acme",
"apiUrl": "https://acme-chat.example.workers.dev/api/chat",
"allowedDomains": ["acme.example"],
"widget": {
"title": "Acme Support",
"theme": "auto",
"accentColor": "#aa0000",
"position": "bottom-right"
},
"worker": {
"model": "claude-haiku-4-5-20251001",
"maxTokens": 1024,
"rateLimitMinute": 10,
"rateLimitHour": 50,
"systemPrompt": "acme-system-prompt.md"
}
}
FieldRequiredDescription
nameYesHuman-readable client name
slugYesURL-safe identifier; must match the filename
apiUrlYesThe client’s worker chat endpoint
allowedDomainsYesDomains where the widget may be embedded
widgetNoAppearance: title, subtitle, welcomeMessage, placeholder, theme, position, accentColor
workerNomodel, maxTokens (1–8192), rateLimitMinute, rateLimitHour, systemPrompt (path to a markdown file)

See clients/example.json and clients/example-system-prompt.md in the repo for a complete worked example. Referencing _schema.json from $schema gives IDE autocomplete and inline validation.