Installation
The CLI is included in the Cal.com monorepo:Commands
create
Create a new app in the app store.Interactive Mode
Run without flags to use the interactive wizard:- App name
- Description
- Category
- Publisher name
- Publisher email
- Template selection
Non-Interactive Mode
Provide all options as flags for automation:Options
App display name. The slug is automatically generated from this.
Short description (recommended max 10 words). Longer descriptions go in
DESCRIPTION.md.App category. Options:
analytics- Analytics and trackingautomation- AI & Automationcalendar- Calendar integrationsconferencing- Video conferencingcrm- CRM integrationsmessaging- Messaging servicespayment- Payment processingother- Other apps
Publisher name or company
Publisher contact email
Template to use. Options:
basic- Minimal installable appevent-type-app-card- Event type configuration cardbooking-pages-tag- Booking page tags/scriptsevent-type-location-video-static- Static video locationgeneral-app-settings- App settings interfacelink-as-an-app- External link redirect
Required when using
link-as-an-app template. The external URL to redirect to.Example
create-template
Create a new app template (for Cal.com core developers).packages/app-store/templates/ and used as scaffolds for new apps.
Most developers should use
create, not create-template. Templates are for creating reusable scaffolds.edit
Edit an existing app’s configuration.Options
The slug of the app to edit (matches the directory name)
Example
- App name
- Description
- Category
- Publisher
- Template
edit-template
Edit an existing template.delete
Delete an app from the app store.Options
The slug of the app to delete
Example
delete-template
Delete a template.Build Commands
The CLI includes build commands for generating app registry files.build
Generate app registry files once:apps.metadata.generated.tsapps.schemas.generated.tsapps.server.generated.tsapps.browser.generated.tsxcalendar.services.generated.tscrm.apps.generated.tspayment.services.generated.tsvideo.adapters.generated.tsanalytics.services.generated.tsredirect-apps.generated.ts
watch
Watch for changes and regenerate files automatically:- New app directories
- Changes to
config.jsonfiles - Deleted app directories
Package.json Scripts
The CLI package defines these scripts:yarn build- Generate registry filesyarn cli <command>- Run CLI commandsyarn watch- Watch modeyarn generate- Alias for build
Slug Generation
The CLI automatically generates slugs from app names:- Converts to lowercase
- Replaces non-alphanumeric characters with hyphens
- Example: “My Custom App” → “my-custom-app”
- Directory name in
packages/app-store/ - App URL path:
/apps/<slug> - Package name:
@calcom/<slug> - App identifier in the database
File Generation
The build process scans all app directories and generates registry files that:- Import app metadata from
config.jsonor_metadata.ts - Export app schemas from
zod.ts - Register API handlers from
api/index.ts - Map UI components from
components/ - Register services from
lib/(Calendar, CRM, Payment, Video, Analytics)
Generation Process
E2E Mode
In E2E test mode (NEXT_PUBLIC_IS_E2E=1), calendar, video, and analytics services are disabled:
Validation
The CLI validates:- Category must be one of the valid categories
- Template must exist in
packages/app-store/templates/ - External link URL required for
link-as-an-apptemplate - Config.json must be valid JSON and match
AppMetaSchema
Templates
Templates are located inpackages/app-store/templates/:
config.json- Template metadatapackage.json- Dependenciesindex.ts- Exportszod.ts- Schemasapi/- API handlerscomponents/- UI components (if applicable)static/icon.svg- Placeholder icon
Cross-Platform Support
The CLI supports Windows, macOS, and Linux:- Windows: Uses
xcopy,move,mkdir,rdcommands - Unix: Uses
cp,mv,mkdir,rmcommands
os.platform().
Troubleshooting
Command Not Found
Ensure you’re in the correct directory:Invalid Template
List available templates:Invalid Category
Valid categories:- analytics
- automation
- calendar
- conferencing
- crm
- messaging
- payment
- other
App Not Appearing
After creating an app:- Run
yarn buildto regenerate registry files - Restart the dev server
- Enable the app in
/settings/admin/apps
Directory Already Exists
The CLI won’t overwrite existing apps. Useedit to modify an existing app or delete to remove it first.
Advanced Usage
CI/CD Integration
Use non-interactive mode in CI pipelines:Scripting
Create multiple apps with a script:Custom Templates
Create your own templates:- Use
yarn cli create-templateto create a template - Customize the scaffold files
- Use it with
--template your-template-name
Next Steps
Build an App
Complete guide to building your first app
App Types
Learn about different app service types
Source Code
View the CLI source code