Build a reusable OpenClaw-managed scheduling platform that standardizes self-hosted booking infrastructure for client brands.
This repository is the scheduling counterpart to the shared chatbot platform. It exists so booking can be provisioned, configured, updated, and audited once through OpenClaw, while each client gets an isolated deployment bundle.
The operating model in this repository is:
- separate from the chatbot runtime repo
- built around self-hosted Cal.com as an upstream service
- templated for per-client deployments from one control-plane repo
- OpenClaw-managed for provisioning, rollout, and lifecycle
- Postgres-backed with one isolated Cal.com deployment per client
- client-configurable for brand, email owner, booking event, and public URL
Critical design choice:
- this repo does not try to make the open-source edition of Cal.com multi-tenant
- instead, OpenClaw uses one reusable template and provisions one isolated instance per client
- that keeps us compatible with the open-source path and avoids feature/licensing drift
- Lock the repository architecture and templating model.
- Define the tenant config contract and deployment bundle format.
- Create the first reusable client bundle for Wellness by Madeline.
- Deploy the first self-hosted Cal.com instance on its own subdomain.
- Wire the booking URL back into the chatbot platform and OpenClaw lane memory.
- Reuse the same provisioning path for future clients.
config/templates: reusable client template contractsconfig/clients: concrete client scheduling configsdeployment/templates: rendered Docker and env templates for upstream Cal.comdeployments/generated: generated per-client deployment bundlesopenclaw: operator memory for the OpenClaw control planedocsandarchitecture: decision records and operating guidancesrc/scripts: repeatable client bootstrap and bundle-render scripts
npm install
npm run check
npm run client:init -- wellness-by-madeline
npm run client:render -- wellness-by-madelineThe render command will generate a deployment bundle at:
deployments/generated/<client-slug>/That bundle includes:
.env.templatedocker-compose.override.yamlINSTANCE_README.md
The first live client target is Wellness by Madeline:
- public scheduler label:
Wellness by Madeline - public scheduler subdomain target:
book.wellnessbymadeline.com - owner email:
wellnessbymadeline@gmail.com - booking purpose: 1:1 consultation handoff from The Wellness Companion