# CLI Documentation ## v1 -------------------------------------------------------------------------------- title: "CLI Command Reference" description: "CLI Command Reference lists all commands available in Catalyst CLI that you can execute from your terminal." last_updated: "2026-03-18T07:41:08.535Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/cli-command-reference/" service: "All Services" -------------------------------------------------------------------------------- # CLI Command Reference You must have Catalyst CLI installed in your system to access the Catalyst commands. Refer to the {{%link href="/en/getting-started/installing-catalyst-cli/"%}}Installing Catalyst CLI help page{{%/link%}} for the steps. ### Options <table class="content-table"> <thead> <tr> <th>Command Syntax</th> <th>Usage</th> </tr> </thead> <tbody> <tr> <td>{{%link href="/en/cli/v1/cli-options/#version"%}} {{%badge%}}<strong>-v</strong>{{%/badge%}} | {{%badge%}}<strong>--version</strong>{{%/badge%}} {{%/link%}}</td> <td>Print the Catalyst CLI version number</td> </tr> <tr> <td>{{%link href="/en/cli/v1/cli-options/#-p----project-ltname_or_project_idgt---org-ltorg_idgt"%}}{{%badge%}}<strong>-p</strong>{{%/badge%}} | {{%badge%}}<strong>--project &lt;name_or_project_id&gt;</strong>{{%/badge%}}{{%/link%}}</td> <td>Specify the Catalyst project to be used for a command</td> </tr> <tr> <td>{{%link href="/en/cli/v1/cli-options/#-p----project-ltname_or_project_idgt---org-ltorg_idgt"%}}{{%badge%}}<strong>--org &lt;org id&gt;</strong>{{%/badge%}}{{%/link%}}</td> <td>Specify the Catalyst organization to be used for a command. Used with the {{%badge%}}-p{{%/badge%}} option.</td> </tr> <tr> <td>{{%link href="/en/cli/v1/cli-options/#--token-lttokengt"%}}{{%badge%}}<strong>--token &lt;token&gt;</strong>{{%/badge%}}{{%/link%}}</td> <td>Supply an authentication token for a command</td> </tr> <tr> <td>{{%link href="/en/cli/v1/cli-options/#token"%}}{{%badge%}}<strong>--dc &lt;us|eu|in|jp|sa|au|ca&gt;</strong>{{%/badge%}}{{%/link%}}</td> <td>Supply a data center for a command</td> </tr> <tr> <td>{{%link href="/en/cli/v1/cli-options/#--verbose"%}}{{%badge%}}<strong>--verbose</strong>{{%/badge%}}{{%/link%}}</td> <td>Change the log level to verbose for debugging purposes</td> </tr> <tr> <td>{{%link href="/en/cli/v1/cli-options/#-h----help"%}}{{%badge%}}<strong>-h</strong>{{%/badge%}} | {{%badge%}}<strong>--help</strong>{{%/badge%}}{{%/link%}}</td> <td>Display help for a Catalyst command</td> </tr> </tbody> </table> <br> ### Commands <table class="content-table"> <thead> <tr> <th>Command Syntax</th> <th>Usage</th> </tr> </thead> <tbody> <tr> <td>{{%link href="/en/cli/v1/login/login-from-cli/"%}}{{%badge%}}<strong>login [options]</strong>{{%/badge%}}{{%/link%}}</td> <td>Log the CLI in to your Catalyst account</td> </tr> <tr> <td>{{%link href="/en/cli/v1/working-with-tokens/introduction/"%}}{{%badge%}}<strong><strong>token:generate [options]</strong></strong>{{%/badge%}}{{%/link%}}</td> <td>Generate a token to authenticate accessing the CLI from a remote system</td> </tr> <tr> <td>{{%link href="/en/cli/v1/working-with-tokens/list-tokens/"%}}{{%badge%}}<strong>token:list</strong>{{%/badge%}}{{%/link%}}</td> <td>List all the available tokens generated in this CLI</td> </tr> <tr> <td>{{%link href="/en/cli/v1/working-with-tokens/revoke-token/"%}}{{%badge%}}<strong>token:revoke &lt;id&gt;</strong>{{%/badge%}}{{%/link%}}</td> <td>Revoke a token generated in this CLI</td> </tr> <tr> <td>{{%link href="/en/cli/v1/identify-loggedin-user/"%}}{{%badge%}}<strong><strong>whoami</strong></strong>{{%/badge%}}{{%/link%}}</td> <td>Print the email address of the user currently logged in</td> </tr> <tr> <td>{{%link href="/en/cli/v1/initialize-resources/introduction/"%}}{{%badge%}}<strong>init [feature] [options]</strong>{{%/badge%}}{{%/link%}}</td> <td>Initialize a Catalyst project, function, AppSail, and client resources in the local directory</td> </tr> <tr> <td>{{%link href="/en/cli/v1/working-with-projects/list-catalyst-projects/"%}}{{%badge%}}<strong><strong>project:list</strong></strong>{{%/badge%}}{{%/link%}}</td> <td>List all the Catalyst projects you have access to</td> </tr> <tr> <td>{{%link href="/en/cli/v1/working-with-projects/use-catalyst-project/"%}}{{%badge%}}<strong>project:use [name_or_project_id] </strong>{{%/badge%}}{{%/link%}}</td> <td>Set an active Catalyst project for your working directory</td> </tr> <tr> <td>{{%link href="/en/cli/v1/working-with-projects/reset-active-project/"%}}{{%badge%}}<strong>project:reset</strong>{{%/badge%}}{{%/link%}}</td> <td>Clear an active project selection and reset to the base project</td> </tr> <tr> <td>{{%link href="/en/cli/v1/pull-resources/introduction/"%}}{{%badge%}}<strong>pull [feature]</strong>{{%/badge%}}{{%/link%}}</td> <td>Pull resources of your project from the remote console to the local directory</td> </tr> <tr> <td>{{%link href="/en/cli/v1/export-and-import-projects/introduction/"%}}{{%badge%}}<strong>iac:export [options]</strong>{{%/badge%}}{{%/link%}}</td> <td>Export a project's code and configurations as a ZIP file</td> </tr> <tr> <td>{{%link href="/en/cli/v1/export-and-import-projects/import-project/"%}}{{%badge%}}<strong>iac:import [options][file_path]</strong>{{%/badge%}}{{%/link%}}</td> <td>Import a project's ZIP file and create a new project in the console</td> </tr> <tr> <td>{{%link href="/en/cli/v1/export-and-import-projects/generate-zip-file/"%}}{{%badge%}}<strong>iac:pack [zip_name]</strong>{{%/badge%}}{{%/link%}}</td> <td>Generate an import-ready ZIP file of a project in the standard format</td> </tr> <tr> <td>{{%link href="/en/cli/v1/export-and-import-projects/export-import-job-status/"%}}{{%badge%}}<strong>iac:status [options]&lt;operation&gt;</strong>{{%/badge%}}{{%/link%}}</td> <td>Obtain the current status of a scheduled import or export job</td> </tr> <tr> <td>{{%link href="/en/cli/v1/working-with-functions/set-up-functions/"%}}{{%badge%}}<strong>functions:setup</strong>{{%/badge%}}{{%/link%}}</td> <td>Set up and configure the function directory in your project directory</td> </tr> <tr> <td>{{%link href="/en/cli/v1/working-with-functions/add-functions/"%}}{{%badge%}}<strong>functions:add</strong>{{%/badge%}}{{%/link%}}</td> <td>Add a function of the required stack to the function directory</td> </tr> <tr> <td>{{%link href="/en/cli/v1/working-with-functions/configure-function-memory/"%}}{{%badge%}}<strong>functions:config [function_name_or_id] [options] </strong>{{%/badge%}}{{%/link%}}</td> <td>Perform advanced configurations such as memory allocation on a function in your project</td> </tr> <tr> <td>{{%link href="/en/cli/v1/working-with-functions/functions-shell/"%}}{{%badge%}}<strong>functions:shell [options]</strong>{{%/badge%}}{{%/link%}}</td> <td>Launch a node shell to test emulated functions of any stack or type, other than Advanced I/O functions</td> </tr> <tr> <td>{{%link href="/en/cli/v1/working-with-functions/delete-functions/"%}}{{%badge%}}<strong>functions:delete [function_name_or_id] [options]</strong>{{%/badge%}}{{%/link%}}</td> <td>Delete a function from the remote console or the local directory</td> </tr> <tr> <td>{{%link href="/en/cli/v1/cli-config/"%}}{{%badge%}}<strong>config:set &lt;key=value&gt; </strong>{{%/badge%}}{{%/link%}}</td> <td>Set Catalyst configuration as a key value pair</td> </tr> <tr> <td>{{%link href="/en/cli/v1/cli-config/#get-the-value-of-a-specific-key"%}}{{%badge%}}<strong>config:get &lt;key&gt;</strong>{{%/badge%}}{{%/link%}}</td> <td> Get Catalyst config value for the specified key</td> </tr> <tr> <td>{{%link href="/en/cli/v1/cli-config/#list-configurations"%}}{{%badge%}}<strong>config:list</strong>{{%/badge%}}{{%/link%}}</td> <td> List all Catalyst configurations</td> </tr> <tr> <td>{{%link href="/en/cli/v1/cli-config/#delete-key"%}}{{%badge%}}<strong>config:delete &lt;key&gt; </strong>{{%/badge%}}{{%/link%}}</td> <td>Delete a key from Catalyst config</td> </tr> <tr> <td>{{%link href="/en/cli/v1/add-appsail/"%}}{{%badge%}}<strong>appsail:add</strong>{{%/badge%}}{{%/link%}}</td> <td>Associate an existing Catalyst project directory with an AppSail service</td> </tr> <tr> <td>{{%link href="/en/cli/v1/working-with-the-client/introduction/"%}}{{%badge%}}<strong>client:setup</strong>{{%/badge%}}{{%/link%}}</td> <td>Set up and configure the client directory in your project directory</td> </tr> <tr> <td>{{%link href="/en/cli/v1/working-with-the-client/delete-client/"%}}{{%badge%}}<strong>client:delete [client_version] [options]</strong>{{%/badge%}}{{%/link%}}</td> <td>Delete a version of the client from the remote console or the local directory</td> </tr> <tr> <td>{{%link href="/en/cli/v1/data-store-import-and-export/introduction/"%}}{{%badge%}}<strong>ds:import [~CSV_file_path] [options]</strong>{{%/badge%}}{{%/link%}}</td> <td>Bulk write records to a table in the Catalyst Data Store</td> </tr> <tr> <td>{{%link href="/en/cli/v1/data-store-import-and-export/export-operation/"%}}{{%badge%}}<strong>ds:export [options]</strong>{{%/badge%}}{{%/link%}}</td> <td>Bulk read records from a table in the Catalyst Data Store</td> </tr> <tr> <td>{{%link href="/en/cli/v1/data-store-import-and-export/check-import-export-status/"%}}{{%badge%}}<strong>ds:status &lt;operation&gt; [job_id] [options]</strong>{{%/badge%}}{{%/link%}}</td> <td>Display the job status of a Data Store import or export operation</td> </tr> <tr> <td>{{%link href="/en/cli/v1/working-with-api-gateway/introduction/"%}}{{%badge%}}<strong>apig:enable</strong>{{%/badge%}}{{%/link%}}</td> <td>Enable API Gateway for your project</td> </tr> <tr> <td>{{%link href="/en/cli/v1/working-with-api-gateway/disable-api-gateway/"%}}{{%badge%}}<strong>apig:disable</strong>{{%/badge%}}{{%/link%}}</td> <td>Disable API Gateway for your project</td> </tr> <tr> <td>{{%link href="/en/cli/v1/working-with-api-gateway/obtain-api-gateway-status/"%}}{{%badge%}}<strong>apig:status [options]</strong>{{%/badge%}}{{%/link%}}</td> <td>Obtain the current status of API Gateway for your project and the schedule progress</td> </tr> <tr> <td>{{%link href="/en/cli/v1/event-generate/introduction/"%}}{{%badge%}}<strong>event:generate</strong>{{%/badge%}} | {{%badge%}}<strong>generate:event &lt;source&gt; &lt;action&gt; [options]</strong>{{%/badge%}}{{%/link%}}</td> <td>Generate sample payloads from different components or custom event sources to test Event functions</td> </tr> <tr> <td>{{%link href="/en/cli/v1/event-generate/sample-payload-integration-functions/"%}}{{%badge%}}<strong>event:generate:integ &lt;service&gt; [options]</strong>{{%/badge%}}{{%/link%}}</td> <td>Generate sample payloads for the required integration service to test Integration functions</td> </tr> <tr> <td>{{%link href="/en/serverless/help/functions/job-functions/#testing-job-functions-using-catalyst-cli"%}}{{%badge%}}<strong>event:generate:job</strong>{{%/badge%}}{{%/link%}}</td><td>Generate sample payloads to test Job functions</td> </tr> <tr> <td>{{%link href="/en/cli/v1/scripts/introduction/"%}}{{%badge%}}<strong>run-script</strong>{{%/badge%}} | {{%badge%}}<strong>run [command]</strong>{{%/badge%}}{{%/link%}}</td> <td>Run a particular command script defined in {{%badge%}}catalyst.json{{%/badge%}}</td> </tr> <tr> <td>{{%link href="/en/cli/v1/serve-resources/introduction/"%}}{{%badge%}}<strong>serve [options]</strong>{{%/badge%}}{{%/link%}}</td> <td>Serve Basic I/O, Advanced I/O, BrowserLogic functions, AppSail, and the client, to test them locally</td> </tr> <tr> <td>{{%link href="/en/cli/v1/deploy-resources/introduction/"%}}{{%badge%}}<strong>deploy [options] [feature] </strong>{{%/badge%}}{{%/link%}}</td> <td>Deploy the Catalyst project and project resources to the remote console from the local directory</td> </tr> <tr> <td>{{%link href="/en/cli/v1/cli-help/command-reference-help/"%}}{{%badge%}}<strong>help [command]</strong>{{%/badge%}}{{%/link%}}</td> <td>Display the command reference or help for a specific command</td> </tr> <tr> <td>{{%link href="/en/cli/v1/logout/"%}}{{%badge%}}<strong>logout</strong>{{%/badge%}}{{%/link%}}</td> <td>Log the CLI out of your Catalyst account</td> </tr> <tr> <td>{{%link href="/en/codelib/install-a-codelib-solution/"%}}{{%badge%}}<strong>codelib:install</strong>{{%/badge%}}{{%/link%}}</td><td>Install the pre-configured Catalyst CodeLib components into your project</td> </tr> </tbody> </table> {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the Catalyst Tools extension, and perform these CLI operations using your IDE in place of the CLI. You can find more details about the Catalyst VS Code extension from this {{%link href="/en/catalyst-extensions/vs-code-extension/introduction/" %}}help section{{%/link%}}.{{%/note%}} -------------------------------------------------------------------------------- title: "CLI Options" description: "Catalyst provides several CLI options that you can use with any of the CLI commands for various purposes." last_updated: "2026-03-18T07:41:08.535Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/cli-options/" service: "All Services" -------------------------------------------------------------------------------- # CLI Options Catalyst provides the following CLI options that you can use with any of the CLI commands: ### -v | -\-version This option prints the version number of the Catalyst CLI that you are currently using. You can type {{%badge%}}-v{{%/badge%}} or <br> {{%badge%}}-\\-version{{%/badge%}} with the {{%badge%}}catalyst{{%/badge%}} command in the following way: {{%cli%}} catalyst --version{{%/cli%}} <br /> <br /> ### -p | -\-project &lt;name\_or\_project\_id&gt; -\-org &lt;org\_id&gt; The {{%badge%}}\-p{{%/badge%}} or {{%badge%}}-\\-project{{%/badge%}} option is used to provide the name or the {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/" %}}ID of the Catalyst project{{%/link%}} the CLI command must be executed for. This option is highly beneficial when you have not initialized or made a project active for your working directory in the CLI. You can also use this option if you are executing Catalyst CLI commands from a remote system, such as a remote code repository or CI system, without an active login session using a token. You can execute the Catalyst command by directly specifying the project the command is intended for, without having to initialize or enable a project in the CLI. The name or the ID of the project must be mentioned with the option. For example, to enable the API Gateway in a project called *ShipmentTracking*, you can execute the following CLI command with this option: {{%cli%}}catalyst apig:enable -p|--project ShipmentTracking{{%/cli%}} You can also optionally use the {{%badge%}}-\\-org{{%/badge%}} option to provide the ID of the {{%link href="/en/getting-started/catalyst-organizations/" %}}Catalyst organization{{%/link%}} the project belongs to, and for which the CLI command must be executed. For example, to deploy the web client of a project from the CLI, we execute the following CLI command with both these options: {{%cli%}}catalyst deploy --only client -p|--project Test --org 72760298{{%/cli%}} <br> {{%note%}} {{%bold%}}Note:{{%/bold%}}If you do not use the {{%badge%}}-\\-org{{%/badge%}} option following the {{%badge%}}\-p{{%/badge%}} or {{%badge%}}-\\-project{{%/badge%}} option, the default org will be considered for the command execution. {{%/note%}} <br /> <br /> ### -\-token &lt;token&gt; The {{%badge%}}-\\-token{{%/badge%}} option is used to authenticate the execution of a Catalyst CLI command. The Catalyst CLI tokens allow you to execute CLI commands from a remote system, such as a CI tool, without an active user session logged in. You can learn more about Catalyst CLI tokens from the {{%link href="/en/cli/v1/working-with-tokens/introduction/" %}}Working with Tokens help page{{%/link%}} . You must {{%link href="/en/cli/v1/working-with-tokens/generate-token/" %}}generate a token{{%/link%}} when you are logged in to a user account from the CLI. You can then use that token from any remote system to perform all CLI operations without an active login session. This is done by specifying the token as an option following the CLI command. This token acts as an authenticating factor for that user account, and continues to map your command executions to the project you specify. For example, you can initialize the functions component of a Catalyst project from a remote system to your project directory using the {{%badge%}}-\\-token{{%/badge%}} option as follows: {{%cli%}} catalyst init --only functions --token xxxxxxxxxxxxx {{%/cli%}} This will prompt Catalyst to verify the token, and begin the initialization process if the token is found to be valid. ### -\-dc&lt;us|eu|in|jp|sa|au|ca&gt; The {{%badge%}}-\\-dc<us|eu|in|au|ca>{{%/badge%}} option enables you to execute a command from a specific DC login. Catalyst is currently available in seven data centers: {{%bold%}}US{{%/bold%}} , {{%bold%}}EU{{%/bold%}}, {{%bold%}}IN{{%/bold%}}, {{%bold%}}JP{{%/bold%}}, {{%bold%}}SA{{%/bold%}}, {{%bold%}}AU{{%/bold%}}, and {{%bold%}}CA{{%/bold%}}. You can generally select the data center that you will be accessing Catalyst from while logging in to the CLI. Catalyst enables you to {{%link href="/en/cli/v1/login/options/#--force" %}}maintain different logins{{%/link%}} from each data center simultaneously. That is, you can have one valid token in both data centers each, to authenticate your command executions. You can then choose to execute a command from any one of the data centers, by specifying it using this option. For example, if you have a valid login in both EU and US DC simultaneously, you can initialize a project and its resources in your directory for the user account associated with the US data center by executing the command in the following way: {{%cli%}} catalyst init --dc us {{%/cli%}} This will enable Catalyst to initialize a project, after verifying the credentials in the data center that you specify. <br> {{%note%}} {{%bold%}}Note:{{%/bold%}} If you have different logins maintained in both data centers and you don't use this option to specify the data center to execute this command from, then the most recent login will be used by default.{{%/note%}} ### -\-verbose The {{%badge%}}-\\-verbose{{%/badge%}} option is used to display detailed information about the actions taking place when a CLI command is executed. Information including the details of the HTTP request sent to the server when the command is executed, details of the responses received, details about the CLI environment, the authorization tokens used to contact the server, and the cookies set are displayed. The {{%badge%}}-\\-verbose{{%/badge%}} option helps you debug and troubleshoot the CLI command executions and enables you to identify the source of an error. You can execute any CLI command with the {{%badge%}}-\\-verbose{{%/badge%}} option. For example, you can projects list command using the verbose option as follows: {{%cli%}} catalyst project:list --verbose {{%/cli%}} ### -h | -\-help The {{%badge%}}-h{{%/badge%}} or {{%badge%}}-\\-help{{%/badge%}} option is used to get help with a CLI command. This provides a brief description of the command's functionality and lists the options that are available for the command and their syntax. For example, if you require help with the {{%badge%}}catalyst functions:shell{{%/badge%}} command, you can execute the following command: {{%cli%}} catalyst functions:shell -h|--help {{%/cli%}} <br /> You can also get help for the command by executing {{%link href="/en/cli/v1/cli-help/command-reference-help/" %}}{{%badge%}}catalyst help functions:shell{{%/badge%}} {{%/link%}} . -------------------------------------------------------------------------------- title: "Identify Logged-In User" description: "You can find the identification of the user account that is currently logged in to the CLI with this command." last_updated: "2026-03-18T07:41:08.536Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/identify-loggedin-user/" service: "All Services" -------------------------------------------------------------------------------- # Identify Logged-In User ### Command Execution You can easily find the identification of the user account that is currently logged in to the CLI. To identify the user currently logged in to the CLI, execute the following command: {{%cli%}} catalyst whoami {{%/cli%}} This will print the email address of the logged-in user. <br> ### Execute with -\-dc Option If you execute this command with the {{%badge%}}-\\-dc{{%/badge%}} option and specify the data center, the command will return the email address of the user login of that data center. As explained in the {{%link href="/en/cli/v1/cli-options/#--dcltuseuinaucagt" %}}CLI Options help page{{%/link%}} , Catalyst enables you to maintain valid login tokens for multiple data centers simultaneously. Therefore, if you had logged in to one data center with a user account, and another data center with a different user account, the {{%badge%}}catalyst whoami{{%/badge%}} command will print the user login of that data center, when used with the {{%badge%}}-\\-dc{{%/badge%}} option. You can identify the user currently logged in to a specific data center, by executing the following command: {{%cli%}} catalyst whoami --dc &lt;us|eu|in|jp|sa|ca|au&gt; {{%/cli%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to perform the {{%badge%}}whoami{{%/badge%}} operation in Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/catalyst-tools-operations/#commands" %}}here{{%/link%}}.{{%/note%}} -------------------------------------------------------------------------------- title: "CLI Config" description: "Catalyst enables you to set and manage the location of Python downloaded in your local system in a specific configuration file." last_updated: "2026-03-18T07:41:08.536Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/cli-config/" service: "All Services" -------------------------------------------------------------------------------- # CLI Config File ### Introduction Configuration files in general are files that define parameters and values for any software or codebase settings. In this case, Catalyst provides CLI commands that enable you to set and manage the location of {{%link href="/en/sdk/python/v1/overview/" %}}Python{{%/link%}}, and certain versions of {{%link href="/en/sdk/java/v1/overview/" %}}Java{{%/link%}} downloaded in your local system, in a specific configuration file. This particular configuration file is a hidden local file maintained in your system in varied locations, based on the OS installed in your system. It controls the operations of various utilities in your system. It also contains the configurations that allow the system to communicate effectively with the CLI. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can only set the Python, Java 11, or Java 17 path information in this configuration file for now. Catalyst currently does not support adding any other information in this file through the CLI.{{%/note%}} ### Set a Key-Value Pair You can add an entry to the config file in your local machine specifying the path of Python, Java 11, or Java 17 stored in your system, by providing the inputs in the form of a key-value pair. To do so, execute the command mentioned below from your system’s terminal: {{%cli%}}catalyst config:set &lt;key=value&gt;{{%/cli%}} You can set the path information for the function stacks in the following manner: - **Python**: {{%cli%}}catalyst config:set python3_9.bin=/Users/amelia-426/Downloads/Python-3.9.16{{%/cli%}} - **Java 8**: {{%cli%}}catalyst config:set java8.bin=/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/bin{{%/cli%}} - **Java 11**: {{%cli%}}catalyst config:set java11.bin=/Library/Java/JavaVirtualMachines/jdk-11.0.17.jdk/Contents/Home/bin{{%/cli%}} - **Java 17**: {{%cli%}}catalyst config:set java17.bin=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home/bin{{%/cli%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} * Currently, you can only set the key as {{%badge%}}python3_9.bin{{%/badge%}}, {{%badge%}}java8.bin{{%/badge%}}, {{%badge%}}java11.bin{{%/badge%}}, or {{%badge%}}java17.bin{{%/badge%}} * Replace the path listed in the above commands with your JDK or Python path * If your local system is running on {{%bold%}}Windows OS{{%/bold%}}, kindly enclose the path in double-quotes. For example, you will set the Java 11 path in the following manner:<br /> {{%cli%}}catalyst config:set java11.bin="/Library/Java/JavaVirtualMachines/jdk-11.0.17.jdk/Contents/Home/bin"{{%/cli%}}{{%/note%}} <br> ### Get the Value of a Specific Key You can fetch the value of any specific key in this particular configuration file by executing the terminal command below with the key: {{%cli%}}catalyst config:get &lt;key&gt;{{%/cli%}} - **Python**: {{%cli%}}catalyst config:get python3_9.bin{{%/cli%}} - **Java 8**: {{%cli%}}catalyst config:get java8.bin{{%/cli%}} - **Java 11**: {{%cli%}}catalyst config:get java11.bin{{%/cli%}} - **Java 17**: {{%cli%}}catalyst config:get java17.bin{{%/cli%}} <br /> This will return the path or the value of the key stored in the config file. For example: - **Python**: /Users/amelia-426/Downloads/Python-3.9.16 - **Java 8**: /Library/Java/JavaVirtualMachines/jdk1.8.0_291 - **Java 11**: /Library/Java/JavaVirtualMachines/jdk-11.0.17 - **Java 17**: /Library/Java/JavaVirtualMachines/jdk-17 {{%note%}}{{%bold%}}Note:{{%/bold%}} * Currently, you can only retrieve the Python, Java 8, Java 11, or Java 17 path information from this file using this CLI command. * Replace the path listed in the above commands with your JDK or Python path * If your local system is running on {{%bold%}}Windows OS{{%/bold%}}, kindly enclose the path in double-quotes. For example, you will set the Java 11 path in the following manner:<br /> {{%cli%}}catalyst config:get java11.bin="/Library/Java/JavaVirtualMachines/jdk-11.0.17.jdk/Contents/Home/bin"{{%/cli%}}{{%/note%}} <br> ### List Configurations You can retrieve the list of all configurations (key-value pairs) that are present in the configuration file by executing the following command: {{%cli%}}catalyst config:list{{%/cli%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} Currently, this CLI command only retrieves the configuration information of the Python, Java 8, Java 11, or Java 17 path in your system.{{%/note%}} <br> ### Delete Key You can delete an entry in the configuration file by executing the CLI command mentioned below: {{%cli%}}catalyst config:delete &lt;key&gt;{{%/cli%}} <br /> You must specify the key name of the entry that you want to delete. * **Python**: {{%cli%}}catalyst config:delete python3_9.bin{{%/cli%}} * **Java 8**: {{%cli%}}catalyst config:delete java8.bin{{%/cli%}} * **Java 11**: {{%cli%}}catalyst config:delete java11.bin{{%/cli%}} * **Java 17**: {{%cli%}}catalyst config:delete java17.bin{{%/cli%}} This will delete the key-value pair from the file. <br /> -------------------------------------------------------------------------------- title: "Add an AppSail Service" description: "Add a Catalyst AppSail web service in a Catalyst-managed runtime of Java, Node.js, and Python, or in a custom runtime as an OCI images to your project directory and deploy it to the cloud." last_updated: "2026-03-18T07:41:08.536Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/add-appsail/" service: "All Services" -------------------------------------------------------------------------------- # Add an AppSail Service ### Introduction {{%link href="/en/serverless/help/appsail/introduction/" %}}AppSail{{%/link%}} is a serverless platform of Catalyst that you can use to deploy web services of any scale to the cloud and manage its platform instances. You can initialize an AppSail service in one of two ways: * {{%bold%}}As a Catalyst-managed runtime{{%/bold%}}: Initialize and deploy applications of specific Java, Node.js, and Python runtimes supported by Catalyst directly to the remote console * {{%bold%}}As a Container image{{%/bold%}}: Initialize and deploy an OCI image of your application of any runtime or framework from your local registry to the remote console {{%note%}}{{%bold%}}Note:{{%/bold%}} Catalyst only supports the deployment of {{%link href="https://github.com/opencontainers/image-spec" %}}OCI-compliant images{{%/link%}} built for the Linux AMD64 (x86-64) platform.{{%/note%}} In both cases, you can initialize an AppSail service for an app that is ready to be deployed, and associate it with a Catalyst project through this command. {{%info%}} {{%bold%}}Info:{{%/bold%}} You can use this command to add an AppSail service in an existing Catalyst project directory. This can be used if you didn't {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/#initialize-appsail-as-a-custom-runtime" %}}initialize AppSail{{%/link%}} when you initialized the project first, or to add additional AppSail services after your first one. If you did not initialize a project yet, you must first do so. You can also directly deploy an app without initialization through the {{%link href="/en/cli/v1/deploy-resources/deploy-appsail/" %}}standalone command{{%/link%}}.{{%/info%}} You can add an AppSail service in an existing Catalyst project directory by executing this CLI command: {{%cli%}}catalyst appsail:add{{%/cli%}} <br> ### Add AppSail as a Catalyst-Managed Runtime You can initialize an AppSail service for a Catalyst-managed runtime directly in your app's directory, or from a new directory. If you had selected AppSail during the project initialization, Catalyst will set it up after the client initialization. Catalyst creates an {{%bold%}}{{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/#the-app-configjson-file" %}}{{%badge%}}app-config.json{{%/link%}}{{%/badge%}}{{%/bold%}} file when an AppSail service is initialized in this method. 1. The CLI will prompt you to select the runtime type as **Catalyst-Managed Runtime** or **Docker Image**. Select the first option. 2. You can now choose to get started with a readymade sample project by entering "Y" and pressing **Enter**, then selecting a sample app from the list. The sample app will be downloaded to the directory. Provide a name for it when prompted. If you want to initialize your own app, enter "N" , then press **Enter**. 3. Select if this will be your {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/#source-directory-and-build-path" %}}source directory{{%/link%}} of your app by entering "Y". If you enter "N", the CLI will prompt you to type in the absolute path for your app's source in your directory. Press **Enter** after the entries. 4. Enter a name for your app. You can name the main file of your app's build anything you prefer. {{%note%}}{{%bold%}}Note:{{%/bold%}} When you build your app as a Java WAR file, you will need to name the main file {{%badge%}}root.war{{%/badge%}} or add specific controllers according to your code.{{%/note%}} 5. Enter the absolute {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/#source-directory-and-build-path" %}}build path{{%/link%}} for your app, then press **Enter**. 6. Select a stack and runtime for your app and press **Enter**. If you select Java, the CLI will further prompt you to pick either **Java SE** or the **Java WAR** as your app's deployable format. You can learn more about this {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/" %}}here{{%/link%}}. If you select any other stack, this will be skipped. AppSail is now added in the source directory you selected, and the app is now associated with the Catalyst project. The configurations will be updated in {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}{{%badge%}}catalyst.json{{%/badge%}}{{%/link%}} file accordingly. Catalyst creates am {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/#the-app-configjson-file" %}}{{%badge%}}app-config.json{{%/link%}}{{%/badge%}}file when an AppSail service is added in this method. This will be the only file that is specific to AppSail in your app's source directory. You can edit the values such as the startup command, environment variables, or memory in this file before deploying. <br> ### Add AppSail as a Custom Runtime You can initialize AppSail for a compliant OCI image of your app from a new directory. Catalyst supports two protocols that you can use to associate your app's image with AppSail. Each protocol has a distinct schema for identification and functioning. * {{%bold%}}Docker Image Protocol:{{%/bold%}} Use this to associate a pre-built image of your app present in the local docker registry. The image must be built and {{%link href="https://docs.docker.com/reference/cli/docker/image/tag/" %}}tagged{{%/link%}} to point to the local registry. Example: *docker://localhost/expres-hw:latest* * {{%bold%}}Docker Archive Protocol:{{%/bold%}} Use this to point to an archive file (.tar or .tar.gz) of a pre-built image of your app in your system's directory. Example: *docker-archive://test.tar* {{%note%}}{{%bold%}}Note:{{%/bold%}} The {{%badge%}}.tar{{%/badge%}} file can be typically generated with the {{%link href="https://docs.docker.com/reference/cli/docker/image/save/" %}}{{%badge%}}docker save{{%/badge%}} command{{%/link%}}.{{%/note%}} You need not provide any other details except the name for the AppSail for container images. The source or build path of the app, stack, and startup command are not required to be configured for OCI images, as they are already defined in the images. 1. The CLI will prompt you to select the runtime type as Catalyst-Managed Runtime or **Docker Image**. Select the second option. 2. Select the protocol as **Docker Image** or **Docker Archive**. 3. {{%bold%}}Docker Image Protocol:{{%/bold%}} If you select **Docker Image**, the CLI will list all the available images with tags in the local docker registry. Select the image you need. {{%bold%}}Docker Archive Protocol:{{%/bold%}} If you select **Docker Archive**, the CLI will prompt you to enter the absolute path to the TAR file image of your app in your local system. {{%note%}}{{%bold%}}Note:{{%/bold%}} When the AppSail configuration is stored in the {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}{{%badge%}}catalyst.json{{%/badge%}}{{%/link%}} file, the path will be stored relative to that file's location.{{%/note%}} 4. Provide a name for the AppSail service. You can name it anything you prefer. AppSail is now added in your local directory, and the app's image is now associated with the AppSail service. The configurations will be updated in {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}{{%badge%}}catalyst.json{{%/badge%}}{{%/link%}} file accordingly. {{%note%}}{{%bold%}}Note:{{%/bold%}} The {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/#the-app-configjson-file" %}}{{%badge%}}app-config.json{{%/link%}}{{%/badge%}} file will not be created when you add an AppSail with a container image. All the app specifications will be stored in the {{%badge%}}catalyst.json{{%/badge%}} file. You can add certain custom configurations of your app in this file. Refer {{%link href="/en/serverless/help/appsail/appsail-configurations/" %}}here{{%/link%}} for details.{{%/note%}} You can now code your business logic in your app, then {{%link href="/en/cli/v1/serve-resources/serve-all-resources/#serve-appsail-applications" %}}serve the AppSail service{{%/link%}} through a localhost to {{%link href="/en/serverless/help/appsail/debug-appsail/" %}}debug{{%/link%}} and test it, or {{%link href="/en/cli/v1/deploy-resources/deploy-appsail/" %}}deploy it{{%/link%}} to the remote console directly. -------------------------------------------------------------------------------- title: "Generate Payloads in Catalyst Signals" description: "Catalyst enables you to generate sample payloads from various event sources supported by Catalyst Publishers in Catalyst Signals using the CLI." last_updated: "2026-03-18T07:41:08.536Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/gen-payload-catalyst-publishers/" service: "All Services" related: - Catalyst Signals (/en/signals/help/events/) -------------------------------------------------------------------------------- # Sample Payload for Events in Catalyst Publishers For events sourced by {{%link href="/en/signals/help/publishers/key-aspects/" %}}Catalyst Publishers{{%/link%}} in the {{%link href="/en/signals/help/events/" %}}Catalyst Signal{{%/link%}} service, you can use the following CLI command to generate sample payloads. {{%cli%}}catalyst signals:generate &lt;publisher_service&gt; &lt;event_name&gt;{{%/cli%}} The sample payload generated by this CLI command, can be used to test the functionality of the event function as per your requirement. Sample payloads can only be generated for the following Catalyst CloudScale components: * {{%link href="/en/cloud-scale/help/data-store/introduction/" %}}DataStore{{%/link%}} * {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}Stratus{{%/link%}} * {{%link href="/en/cloud-scale/help/cache/introduction/" %}}Cache{{%/link%}} * {{%link href="/en/cloud-scale/help/authentication/introduction/" %}}Authentication{{%/link%}} The following table details the events for which sample payloads can be generated using the {{%badge%}}catalyst signals: generate{{%/badge%}} command. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th class="w25p">Publisher Service</th> <th class="w25p">Event Name</th> <th class="w40p">Event Action</th> </tr> </thead> <tbody> <tr> <td rowspan="3">DataStore</td> <td>{{%badge%}}row_inserted{{%/badge%}}</td> <td>When a row is inserted to the table</td> </tr> <tr> <td>{{%badge%}}row_updated{{%/badge%}}</td> <td>When a row is updated in a table</td> </tr> <tr> <td>{{%badge%}}row_deleted{{%/badge%}}</td> <td>When a row is deleted from the table</td> </tr> <tr> <td rowspan="4">Stratus</td> <td>{{%badge%}}stratus_object_uploaded{{%/badge%}}</td> <td>When an object is uploaded to a bucket in Stratus</td> </tr> <tr> <td>{{%badge%}}stratus_object_downloaded{{%/badge%}}</td> <td>When an object is downloaded from a bucket in Stratus</td> </tr> <tr> <td>{{%badge%}}stratus_object_updated{{%/badge%}}</td> <td>When an object is updated in Stratus</td> </tr> <tr> <td>{{%badge%}}stratus_object_deleted{{%/badge%}}</td> <td>When an object is deleted from Stratus</td> </tr> <tr> <td rowspan="2">Cache</td> <td>{{%badge%}}cache_item_created{{%/badge%}}</td> <td>When a cache item is created</td> </tr> <tr> <td>{{%badge%}}cache_item_updates{{%/badge%}}</td> <td>When the cache is updated</td> </tr> <tr> <td rowspan="3">Authentication</td> <td>{{%badge%}}user_signedup{{%/badge%}}</td> <td>When a user signs up for an application</td> </tr> <tr> <td>{{%badge%}}user_confirmed{{%/badge%}}</td> <td>When a user completes the verification process</td> </tr> <tr> <td>{{%badge%}}user_deleted{{%/badge%}}</td> <td>When a user is removed from the application.</td> </tr> </tbody> </table> Consider this example, if you are required to generate a sample payload to test the functionality of an event function that is triggered when an object is uploaded to a bucket in Stratus, then the CLI command will be: {{%cli%}}catalyst signals: generate stratus stratus_object_upload{{%/cli%}} **Example Output**: The following JSON snippet details an example of the output that can be expected. {{%panel_without_adjustment class="language-json line-numbers" header="Example Output.json" footer="button" scroll="set-scroll" %}}{ "rule_id": "534143331281450898", "target_id": "33038437", "version": 1, "attempt": 1, "account": { "org_id": "96858155", "project": { "environment": "Development", "name": "Project-Rainfall", "id": "11365000000016052" } }, "events": [ { "data": { "action_time": "7437648374832", "bucket_details": { "bucket_name": "sample-bucket", "project_details": { "id": "11365000000016052", "project_name": "Project-Rainfall", "project_type": "Live" }, "created_by": { "email_id": "emmy@zylker.com", "user_type": "Admin", "user_id": "193334093726081", "is_confirmed": true, "last_name": "66028", "first_name": "97b6bc29b3", "zuid": "2369563417" }, "created_time": "May 23, 2025 06:21 PM", "modified_by": { "email_id": "emmy@zylker.com", "user_type": "Admin", "user_id": "193334093726081", "is_confirmed": true, "last_name": "66028", "first_name": "97b6bc29b3", "zuid": "2369563417" }, "modified_time": "May 23, 2025 06:21 PM", "bucket_meta": { "versioning": false, "caching": { "status": "Disabled" }, "encryption": false, "audit_consent": false } }, "object_key": "path1/path2/myfile.png" }, "id": "7a66cb17-967b-5ccd-dad0-34c34e63e5a", "time_in_ms": "1748004702399", "source": "publisher_id:51607702502369250/service:cloudscalestratus/account:41005674", "event_config": { "api_name": "stratus_object_uploaded", "id": "57515236254614294" } } ] }{{%/panel_without_adjustment%}} ### Sample Payload for Custom Events To generate sample payloads for events that are sourced by custom applications or components, we can use the catalyst signals:generate CLI command in the following manner: {{%cli%}}catalyst signals:generate custom &lt;custom_event&gt;{{%/cli%}} To generate payloads for custom events, you need to define the custom events. That is, you need to have defined and configured the REST API key for the required event within your custom publisher. {{%info%}}{{%bold%}}Learn More:{{%/bold%}}<br /> * {{%link href="/en/signals/help/events/#custom-events" %}}Custom Events{{%/link%}} * {{%link href="/en/signals/help/publishers/create-publisher/custom-publishers/" %}}Custom Publishers{{%/link%}} * {{%link href="/en/signals/help/publishers/create-publisher/custom-publishers/#add-schema-to-custom-events" %}}Add schema to custom events{{%/link%}}{{%/info%}} Consider the following example, you have another application that tracks end-users' diet and provides them with nutrition recommendation. You have a requirement where, in the event an end-user registers their diet plan, you have an appropriate logic that needs to be triggered. In this case, provided you have defined and configured the event schema and the required REST API key, then you can generate a sample payload for this event using the Catalyst CLI in the following manner: {{%cli%}}catalyst signals:generate custom diet_profile_registered{{%/cli%}} **Example Output**: The following JSON snippet details an example of the output that can be expected. {{%panel_without_adjustment class="language-json line-numbers" header="Example Output.json" footer="button" scroll="set-scroll" %}}{ "rule_id": "382913648739323890", "target_id": "70141764", "version": 1, "attempt": 1, "account": { "org_id": "60047207190", "project": { "environment": "Development", "name": "Project-Rainfall", "id": "21256000000010040" } }, "events": [ { "data": {}, "id": "53aea689-77ac-fd4b-560d-82fd532bd1a", "time_in_ms": "1760089550627", "source": "publisher_id:90216327659515060/service:custom", "event_config": { "api_name": "diet_profile_registered", "id": "97690672393764451" } } ] } {{%/panel_without_adjustment%}} -------------------------------------------------------------------------------- title: "CLI Logout" description: "You can log out from your active account in the CLI by executing the logout command." last_updated: "2026-03-18T07:41:08.536Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/logout/" service: "All Services" -------------------------------------------------------------------------------- # CLI Logout ### Command Execution You can log out from your CLI before terminating the terminal's execution. The authentication token containing your credentials of your logged-in user account will be revoked when you log out. When you log back in again, a fresh token will be generated for the session. To log out from the CLI, execute the following command: {{%cli%}} catalyst logout {{%/cli%}} <br> The CLI will prompt you for a confirmation. Press {{%bold%}}Y{{%/bold%}} and press {{%bold%}}Enter{{%/bold%}} . <br> Your user account will be logged out from the CLI. The CLI will display a message confirming that you are logged out. You can log back in to the CLI using the {{%badge%}} {{%link href="/en/cli/v1/login/login-from-cli/" %}}catalyst login{{%/link%}} {{%/badge%}} command. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to logout from Catalyst using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/catalyst-tools-explorer/#log-out-from-your-catalyst-account" %}}here{{%/link%}}.{{%/note%}} ### CLI Help -------------------------------------------------------------------------------- title: "Command Reference Help" description: "Catalyst provides a variety of help options for your CLI command executions such as the command reference, command syntax help, the help option, and context-sensitive help." last_updated: "2026-03-18T07:41:08.537Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/cli-help/command-reference-help/" service: "All Services" -------------------------------------------------------------------------------- # Command Reference Help ### View Command Reference Catalyst provides a variety of help options for your CLI command executions. You can use these options any time you require help with your CLI operations, such as for fetching the command reference or the list of options available for a particular command. You can easily obtain the command reference that lists all the available CLI commands with their syntax, along with brief descriptions of the commands and the actions they perform. This will also list the general {{%link href="/en/cli/v1/cli-options/" %}}CLI options{{%/link%}} that can be used with any CLI command, with their descriptions. <br> To view the command reference, you can execute the following command from any directory: {{%cli%}} catalyst help {{%/cli%}} <br> This will display all the commands and options available in the CLI version that you have installed. -------------------------------------------------------------------------------- title: "Command Syntax and Options Help" description: "Catalyst provides a variety of help options for your CLI command executions such as the command reference, command syntax help, the help option, and context-sensitive help." last_updated: "2026-03-18T07:41:08.537Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/cli-help/command-syntax-and-options-help/" service: "All Services" -------------------------------------------------------------------------------- # Command Syntax and Options Help You can also get help with a specific command. This provides a brief usage description of the command's purpose, and lists the options that are available for the command and their syntaxes. You can access this help by specifying the command after {{%badge%}}catalyst help{{%/badge%}} . <br> For example, if you require help with {{%badge%}}catalyst serve{{%/badge%}} , you can execute the following command: {{%cli%}} catalyst help serve {{%/cli%}} <br> This will provide a brief description of the command, and list the options that it supports. -------------------------------------------------------------------------------- title: "The Help Option" description: "Catalyst provides a variety of help options for your CLI command executions such as the command reference, command syntax help, the help option, and context-sensitive help." last_updated: "2026-03-18T07:41:08.537Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/cli-help/help-option/" service: "All Services" -------------------------------------------------------------------------------- # The Help Option You can also obtain help for a specific command by typing in the command and following it with a {{%badge%}}-h{{%/badge%}} or <br> {{%badge%}}-\\-help{{%/badge%}} option. This performs the same functionality as the command syntax and options help mentioned in the previous section. For example, if you require help with the {{%badge%}}catalyst functions:shell{{%/badge%}} command, you can execute the following command: {{%cli%}} catalyst functions:shell --help|-h {{%/cli%}} This is discussed in the {{%link href="/en/cli/v1/cli-options/#-h----help" %}}CLI options{{%/link%}} document in detail. -------------------------------------------------------------------------------- title: "Context Sensitive Help" description: "Catalyst provides a variety of help options for your CLI command executions such as the command reference, command syntax help, the help option, and context-sensitive help." last_updated: "2026-03-18T07:41:08.537Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/cli-help/context-sensitive-help/" service: "All Services" -------------------------------------------------------------------------------- # Context Sensitive Help Catalyst also provides context sensitive help when you encounter an error during a CLI command execution. Catalyst will not only specify the reason behind the error, but it will also provide you help with the actions you can take to rectify or prevent the error, as well as a help link to the documentation of the particular action. This is discussed in the {{%link href="/en/cli/v1/context-sensitive-help/introduction/" %}}CLI Context Sensitive Help page{{%/link%}} in detail, which also includes a list of possible errors that you could encounter during each of your command executions. ### CLI Login -------------------------------------------------------------------------------- title: "Log in from Catalyst CLI" description: "Learn about logging in to Catalyst CLI before you execute a CLI command from your terminal." last_updated: "2026-03-18T07:41:08.537Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/login/login-from-cli/" service: "All Services" -------------------------------------------------------------------------------- # Log in from Catalyst CLI ### Introduction Before you begin using Catalyst CLI, you need to log in to your Catalyst account in your CLI. This will connect your CLI with your online Zoho account. Once you are logged in from your CLI, you can work on your Catalyst project directly from your system's terminal. The changes you make in the CLI will be reflected and synchronized in your online Catalyst account when you deploy them. ### Steps to Log In To login to your online Zoho account from the CLI: 1. Execute the following command in your terminal: {{%cli%}} catalyst login {{%/cli%}} 2. You will be prompted to allow Catalyst to collect CLI error reporting information. Press {{%bold%}}Y{{%/bold%}} to allow Catalyst to collect CLI error reporting information and press {{%bold%}}Enter{{%/bold%}} . To deny permission, press {{%bold%}}N{{%/bold%}} , then press {{%bold%}}Enter{{%/bold%}}. 3. The CLI will then prompt you to select the data center that you will be accessing Catalyst from. Select the {{%bold%}}US{{%/bold%}} , {{%bold%}}EU{{%/bold%}}, {{%bold%}}IN{{%/bold%}}, {{%bold%}}JP{{%/bold%}}, {{%bold%}}SA{{%/bold%}}, {{%bold%}}AU{{%/bold%}}, or {{%bold%}}CA{{%/bold%}} DC based on the DC your account belongs to, then press {{%bold%}}Enter{{%/bold%}} . You will be automatically redirected to your browser window, where the Zoho Accounts login page is opened. If you are not automatically redirected, visit the URL displayed under 'Visit this URL on this device to login'.<br /> {{%note%}} {{%bold%}}Note:{{%/bold%}} Other than error reporting information, Catalyst also collects information about the performance and behaviour of the CLI, command logs, and other essentials. These are beneficial during bug fixes, if you approach Catalyst support for troubleshoot. If you deny the permission now, you will have to logout and login again, or perform a force login, to allow this permission again. The data is pushed to the Catalyst server only after you have authenticated your CLI. {{%/note%}} 4. If you aren't logged into to your Zoho account, sign in using your credentials in the Zoho Accounts login page. 5. You will be redirected to a page where Catalyst CLI requests permission to access the data in your Zoho account. Click {{%bold%}}Accept{{%/bold%}} to provide these permissions to Catalyst CLI.<br /> <br> 6. If your login attempt is successful, you will be redirected to a screen displaying a successful Catalyst CLI login message.<br /> 7. Close the window and continue using the CLI in your terminal. The CLI also displays a successful login message.<br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform these CLI operations using your IDE in place of the CLI. Steps to login to Catalyst through your Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/implementation/#log-in-to-catalyst" %}}here{{%/link%}}.{{%/note%}} -------------------------------------------------------------------------------- title: "Login Options" description: "Learn about logging in to Catalyst CLI before you execute a CLI command from your terminal." last_updated: "2026-03-18T07:41:08.538Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/login/options/" service: "All Services" -------------------------------------------------------------------------------- # Login Options Catalyst CLI enables you to use the following options with the {{%badge%}}catalyst login{{%/badge%}} command. ### -\-no-localhost Catalyst provides you the convenience of using a different device to log in to the CLI. After providing your credentials and logging in from another device, you can continue using the CLI in your current device. This is highly beneficial when you are unable to access your server or use a browser on your current device. You can also use this option when you have to provide access to your user account's CLI to another collaborator. To log in to your CLI without using a browser, run the {{%badge%}}catalyst login{{%/badge%}} command with the {{%badge%}}-\\-no-localhost{{%/badge%}} option as follows: {{%cli%}} catalyst login --no-localhost {{%/cli%}} When you execute this command, you will be prompted to allow Catalyst to collect CLI error reporting information. Press {{%bold%}}Y{{%/bold%}} to allow Catalyst to collect CLI error reporting information and press {{%bold%}}Enter{{%/bold%}} . To deny permission, press {{%bold%}}N{{%/bold%}} and press {{%bold%}}Enter{{%/bold%}} . <br> The CLI will then prompt you to select the data center that you will be accessing Catalyst from. Select the {{%bold%}}US{{%/bold%}} , {{%bold%}}EU{{%/bold%}}, {{%bold%}}AU{{%/bold%}}, {{%bold%}}JP{{%/bold%}}, {{%bold%}}SA{{%/bold%}}, {{%bold%}}IN{{%/bold%}}, or {{%bold%}}CA{{%/bold%}} data center based on your location, then press {{%bold%}}Enter{{%/bold%}} . Catalyst then provides you a URL and a verification code for your device. You can visit the URL from any device that can connect to the Zoho Accounts page. <br> Enter the verification code provided by Catalyst in that page and click {{%bold%}}Verify{{%/bold%}} . <br> You will then be redirected to a sign-in page, where you can log in using your account credentials. If your account is already logged in, your CLI will be associated with that account automatically. You will be asked to provide permissions to Catalyst CLI to access the data in your Zoho account. After you provide the permissions, the browser window will display a message confirming that your device has been approved. <br> You can now begin using the CLI from the current device. <br> ### -\-force If you encounter issues with user authentication, and the terminal prompts you for re-authentication, you can use the force login option, instead of logging out and logging in again. Force login discards the current authentication credentials for that data center, such as the grant token and the access token, and logs in the user to catalyst account all over again. You can also use this option to maintain different logins from different data centers simultaneously. That is, you can have one valid token in a single data center to authenticate your command executions. If you have already logged in to a data center with an account, and if you force log in again to another data center, both authentication tokens will be valid. You can then choose to execute a command from either one of the data centers, by {{%link href="/en/cli/v1/cli-options/#--dcltuseuinjpsaaucagt" %}}specifying it as an option{{%/link%}} with the command. {{%note%}} {{%bold%}}Note:{{%/bold%}} * You can have only one account logged in per data center. You will not be able to maintain multiple logins from the same data center. * If you have different logins maintained in different data centers and you don't use this option to specify the data center to execute this command from, then the most recent login will be used by default. {{%/note%}} To perform a force login in your CLI, run the {{%badge%}}catalyst login{{%/badge%}} command with the {{%badge%}}\--force{{%/badge%}} option as follows: {{%cli%}} catalyst login --force {{%/cli%}} After executing the command, follow the same steps as for {{%badge%}}catalyst login{{%/badge%}} to log in to your online Zoho account from the CLI. ### Context-Sensitive Help -------------------------------------------------------------------------------- title: "Introduction" description: "Catalyst provides context-sensitive help when you encounter an error during a CLI command execution." last_updated: "2026-03-18T07:41:08.538Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/context-sensitive-help/introduction/" service: "All Services" -------------------------------------------------------------------------------- # CLI Context-Sensitive Help ### Introduction Catalyst provides context-sensitive help when you encounter an error during a CLI command execution. For example, if there is an unexpected error in the usage of a command or while fetching a resource during a command execution, Catalyst will provide you help for the particular context of the error. Contextual help involves understanding the purpose or usage of a command by the user, and the reason for the error occurrence. Catalyst will analyze the situation dynamically to learn the reason behind not obtaining the expected result, and provide you customized help accordingly. When you run into an unexpected error during a command execution, Catalyst will not only specify the reason behind the error, but it will also provide you help with the actions you can take to rectify or prevent the error. Catalyst will also display a help link to the documentation of the particular command or action. You can simply open the help link URL in a browser and access the help documentation. <br> #### Examples of Contextual Help * If you execute the {{%badge%}}catalyst client:delete \[options\] \[client\_version\]{{%/badge%}} command to delete a live version of the client, the CLI will inform you that a currently live client cannot be deleted. It will also suggest that you could make a different version live or deploy a new version of the client before attempting the deletion operation again. It will also provide you a help link to the specific section in the CLI documentation that contains a detailed explanation.<br /> <br> * If you execute a CLI command while being logged out from your Catalyst remote account, the CLI will inform you that it was unable to authenticate your command execution. It will suggest that you log in to your account or execute the command with a valid auth token, and provide a help link.<br /> <br> * If you deploy a resource with a required configuration file missing, the CLI will inform you about the particular absent file and suggest you to include it in the directory. You can learn about the project directory structure from the help link provided, and rectify the errors.<br /> -------------------------------------------------------------------------------- title: "Possible Errors in Command Executions" description: "Catalyst provides context-sensitive help when you encounter an error during a CLI command execution." last_updated: "2026-03-18T07:41:08.538Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/context-sensitive-help/possible-errors/" service: "All Services" -------------------------------------------------------------------------------- # List of Possible Errors in Command Executions Here are some common possible errors that you could encounter in your CLI during command executions, and the actions you can take to resolve them: <br> <div class="mobile-h-scroll"> <table class="content-table"> <thead> <tr> <th class="right">Command/Component</th> <th class="middle-right">Errors</th> <th class="middle-right">Fixes</th> </tr> </thead> <tbody> <tr> <td rowspan="7" class="left pos-re">Authentication</td> <td class="middle-right">Empty Token Basket</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-tokens/generate-token/" %}}Generate a new token{{%/link%}}</td> </tr> <tr> <td class="middle-right">Token Retrieval Failure</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-tokens/list-tokens/" %}}Use a valid token from the list{{%/link%}}</td> </tr> <tr> <td class="middle-right">Logged out of CLI</td> <td class="middle-right">{{%link href="/en/cli/v1/login/login-from-cli/" %}}Log in to the CLI{{%/link%}}</td> </tr> <tr> <td class="middle-right">Refresh Token or Access Token Retrieval Failure</td> <td class="middle-right">{{%link href="/en/cli/v1/login/options" %}}Log in to the CLI using {{%badge%}}--no-localhost{{%/badge%}}{{%/link%}}</td> </tr> <tr> <td class="middle-right">Token Generation Failure</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-tokens/generate-token/" %}}Generate a new token{{%/link%}}</td> </tr> <tr> <td class="middle-right">Invalid Token Provided with {{%badge%}}--token{{%/badge%}} option</td> <td class="middle-right">{{%link href="/en/cli/v1/cli-options/#--token-lttokengt" %}}Provide a valid token with the option{{%/link%}}</td> </tr> <tr> <td class="middle-right">Authentication Failure</td> <td class="middle-right">{{%link href="/en/cli/v1/login/options/#--force" %}}Re-login with the {{%badge%}}--force{{%/badge%}} option{{%/link%}}</td> </tr> <tr> <td class="left pos-re">Data Center</td> <td class="middle-right">Invalid Input for the {{%badge%}}--dc{{%/badge%}} Option</td> <td class="middle-right">{{%link href="/en/cli/v1/cli-options/#--dcuseuin" %}}Specify a valid input and try again{{%/link%}}</td> </tr> <tr> <td rowspan="7" class="left pos-re">Project</td> <td class="middle-right">First Catalyst Project Not Created</td> <td class="middle-right">{{%link href="/en/getting-started/catalyst-projects/" %}}Create a new project{{%/link%}}</td> </tr> <tr> <td class="middle-right">Project Provided with {{%badge%}}-p{{%/badge%}} option Not Found</td> <td class="middle-right">{{%link href="/en/cli/v1/cli-options/#-p----project-name_or_project_id" %}}Select an existing project from the list{{%/link%}}</td> </tr> <tr> <td class="middle-right">File Missing in Project Directory</td> <td class="middle-right">{{%link href="/en/cli/v1/initialize-resources/introduction/" %}}Initialize the project{{%/link%}} or set up the {{%link href="/en/cli/v1/project-directory-structure/introduction/" %}}missing component{{%/link%}} </td> </tr> <tr> <td class="middle-right">Resource Not Found in Project Directory</td> <td class="middle-right">{{%link href="/en/cli/v1/initialize-resources/introduction/" %}}Initialize the project{{%/link%}} or set up the {{%link href="/en/cli/v1/project-directory-structure/introduction/" %}}missing component{{%/link%}}</td> </tr> <tr> <td class="middle-right">Project Not Found in the Remote Console</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-projects/use-catalyst-project/" %}}Use an available project from the list{{%/link%}}</td> </tr> <tr> <td class="middle-right">File Corrupted in Project Directory</td> <td class="middle-right">Delete the corrupted file and {{%link href="/en/cli/v1/initialize-resources/initialize-options/" %}}initialize the project again{{%/link%}}</td> </tr> <tr> <td class="middle-right">Active Project Not Found in the Remote Console</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-projects/use-catalyst-project/" %}}Change the existing active project to an available one{{%/link%}}</td> </tr> <tr> <td rowspan="14" class="left pos-re">API Gateway</td> <td class="middle-right">Enable APIG Failure- APIG Scheduler in Progress</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-api-gateway/obtain-api-gateway-status/" %}}Check the status of the scheduled job{{%/link%}} and try again after some time</td> </tr> <tr> <td class="middle-right">APIG Reports Not Found</td> <td class="middle-right">{{%link href="/en/cli/v1/deploy-resources/deploy-api-gateway/" %}}Deploy APIG rules from the CLI{{%/link%}}</td> </tr> <tr> <td class="middle-right">Disable APIG Failure- APIG Scheduler in Progress</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-api-gateway/obtain-api-gateway-status/" %}}Check the status of the scheduled job{{%/link%}} and try again after some time</td> </tr> <tr> <td class="middle-right">Unable to Read APIG Rules File</td> <td class="middle-right">Rectify the specified errors and try again</td> </tr> <tr> <td class="middle-right">APIG Rules File Missing</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-api-gateway/api-gateway-json-file/" %}}Create the missing file or specify a valid file name{{%/link%}}</td> </tr> <tr> <td class="middle-right">Name Missing in APIG Rule</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-api-gateway/api-gateway-json-file/" %}}Provide a name for the APIG rule{{%/link%}}</td> </tr> <tr> <td class="middle-right">Duplicate APIG Rule Name</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-api-gateway/api-gateway-json-file/" %}}Change the name or delete the APIG rule{{%/link%}}</td> </tr> <tr> <td class="middle-right">Mandatory Values Missing in APIG Rule</td> <td class="middle-right">{{%link href="/en/cloud-scale/help/api-gateway/key-concepts/#routing" %}}Add the specified mandatory values to the APIG rule{{%/link%}}</td> </tr> <tr> <td class="middle-right">Duplicate Values in APIG Rule</td> <td class="middle-right">{{%link href="/en/cloud-scale/help/api-gateway/key-concepts/#routing" %}}Modify the APIG rule and resolve the conflict{{%/link%}}</td> </tr> <tr> <td class="middle-right">Invalid Client Specified in APIG Rule</td> <td class="middle-right">Rectify the specified errors in the client and try again</td> </tr> <tr> <td class="middle-right">Cannot Authenticate APIG Rule with Client Target</td> <td class="middle-right">{{%link href="/en/cloud-scale/help/api-gateway/key-concepts/#authentication-request-processor" %}}Remove the specified key from the APIG rule{{%/link%}}</td> </tr> <tr> <td class="middle-right">Invalid RegEx in APIG Rule</td> <td class="middle-right">{{%link href="/en/cloud-scale/help/api-gateway/key-concepts/#routing" %}}Rectify the specified RegEx error{{%/link%}}</td> </tr> <tr> <td class="middle-right">Invalid Parameters in APIG Rule</td> <td class="middle-right">{{%link href="/en/cloud-scale/help/api-gateway/key-concepts/#routing" %}}Rectify the specified error to continue{{%/link%}}</td> </tr> <tr> <td class="middle-right">Invalid Request or Target URL in APIG Rule</td> <td class="middle-right">{{%link href="/en/cloud-scale/help/api-gateway/key-concepts/#routing" %}}Provide a valid target URL in the APIG rule{{%/link%}}</td> </tr> <tr> <td rowspan="3" class="left pos-re">Data Store</td> <td class="middle-right">Table Identifier Missing in Export/Import Operation</td> <td class="middle-right">{{%link href="/en/cli/v1/data-store-import-and-export/introduction/" %}}Provide the table identifier in the command or configuration file{{%/link%}}</td> </tr> <tr> <td class="middle-right">Source File Missing in Import Operation</td> <td class="middle-right">{{%link href="/en/cli/v1/data-store-import-and-export/import-operation/#input-csv-file" %}}Provide the path of the CSV file in the local machine with the command, or the File ID of the file uploaded in File Store in the config JSON{{%/link%}}</td> </tr> <tr> <td class="middle-right">No Folders Present in File Store to Upload CSV File for Import</td> <td class="middle-right">{{%link href="/en/cloud-scale/help/file-store/implementation/#create-a-folder" %}}Create atleast one folder in the File Store{{%/link%}}</td> </tr> <tr> <td rowspan="8" class="left pos-re">Client</td> <td class="middle-right">Web Client Not Found in the Local Machine</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-the-client/set-up-client/" %}}Create a new web client{{%/link%}}</td> </tr> <tr> <td class="middle-right">Web Client Not Found in the Remote Console</td> <td class="middle-right">{{%link href="/en/cli/v1/deploy-resources/deploy-client/" %}}Deploy a web client from the CLI{{%/link%}}</td> </tr> <tr> <td class="middle-right">Web Client Version Not Found in Local Machine/Remote Console to Delete</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-the-client/delete-client/" %}}Delete a version from the list of versions available{{%/link%}} </td> </tr> <tr> <td class="middle-right">Web Client Version is Live and Cannot be Deleted</td> <td class="middle-right">{{%link href="/en/cloud-scale/help/web-client-hosting/implementation/#deploy-an-older-version-of-a-web-application" %}}Change the live version to a different one{{%/link%}} or {{%link href="/en/cli/v1/deploy-resources/deploy-client/" %}}deploy a new version of the web client{{%/link%}}</td> </tr> <tr> <td class="middle-right">Cannot Use {{%badge%}}--local{{%/badge%}} and {{%badge%}}--remote{{%/badge%}} Options Simultaneously to Delete</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-the-client/delete-client/#delete-client-options" %}}Use either one of the options at a time{{%/link%}}</td> </tr> <tr> <td class="middle-right">Client File Cannot be Parsed</td> <td class="middle-right">Rectify the specified error and try again</td> </tr> <tr> <td class="middle-right">File Missing in Client Directory</td> <td class="middle-right">{{%link href="/en/cli/v1/project-directory-structure/client-directory/" %}}Create the specified file in the client source directory{{%/link%}}</td> </tr> <tr> <td class="middle-right">File Corrupted in Client Directory</td> <td class="middle-right">{{%link href="/en/cli/v1/project-directory-structure/client-directory/" %}}Rectify the specified error or provide valid targets{{%/link%}}</td> </tr> <tr> <td rowspan="8" class="left pos-re">Functions</td> <td class="middle-right">No Functions in the Remote Console to Configure or Use Feature for</td> <td class="middle-right">{{%link href="/en/serverless/help/functions/implementation/" %}}Create a new function in the console{{%/link%}} or {{%link href="/en/cli/v1/deploy-resources/deploy-functions/" %}}deploy a function to the console{{%/link%}}</td> </tr> <tr> <td class="middle-right">Invalid Value with {{%badge%}}--memory{{%/badge%}} Option while Configuring</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-functions/configure-function-memory/" %}}Provide a valid number with the option{{%/link%}}</td> </tr> <tr> <td class="middle-right">Function Not Found in the Local Machine to Delete</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-functions/delete-functions/" %}}Select an available function from the list to delete{{%/link%}}</td> </tr> <tr> <td class="middle-right">No Functions in the Local Machine to Delete</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-functions/add-functions/" %}}Create a new function in the project directory{{%/link%}}</td> </tr> <tr> <td class="middle-right">Function Not Found in the Remote Console to Delete</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-functions/delete-functions/" %}}Select an available function from the list to delete{{%/link%}}</td> </tr> <tr> <td class="middle-right">No Functions in the Remote Console to Delete</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-functions/add-functions/" %}}Create a new function in the console{{%/link%}} or {{%link href="/en/cli/v1/deploy-resources/deploy-functions/" %}}deploy a function to the console{{%/link%}}</td> </tr> <tr> <td class="middle-right">Cannot Use Function ID in the Local Machine to Delete</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-functions/delete-functions/" %}}Use the function name or execute the command without specifying any function identifiers{{%/link%}}</td> </tr> <tr> <td class="middle-right">Cannot Use {{%badge%}}--local{{%/badge%}} and {{%badge%}}--remote{{%/badge%}} Options Simultaneously to Delete</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-functions/delete-functions/#delete-functions-options" %}}Use either one of the options at a time{{%/link%}}</td> </tr> <tr> <td rowspan="5" class="left pos-re">Configuration Files</td> <td class="middle-right">Functions Specified in Config File Not Found</td> <td class="middle-right">{{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}Specify valid function names under the {{%badge%}}functions{{%/badge%}} key{{%/link%}}</td> </tr> <tr> <td class="middle-right">Client Specified in Config File Not Found</td> <td class="middle-right">{{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}Specify a valid client source directory under the {{%badge%}}client{{%/badge%}} key{{%/link%}}</td> </tr> <tr> <td class="middle-right">Directory Specified in Config File Not Found</td> <td class="middle-right">{{%link href="/en/cli/v1/project-directory-structure/introduction/" %}}Specify a valid directory name that is available in the project directory{{%/link%}}</td> </tr> <tr> <td class="middle-right">Invalid Targets in Config File</td> <td class="middle-right">{{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}Specify valid values as {{%badge%}}targets{{%/badge%}} in the config file{{%/link%}}</td> </tr> <tr> <td class="middle-right">File Missing in Project Root Directory</td> <td class="middle-right">{{%link href="/en/cli/v1/initialize-resources/introduction/" %}}Initialize the project again{{%/link%}}</td> </tr> <tr> <td rowspan="4" class="left pos-re">Scripts</td> <td class="middle-right">Invalid Script Command</td> <td class="middle-right">{{%link href="/en/cli/v1/scripts/introduction/" %}}Specify the command in a valid format{{%/link%}}</td> </tr> <tr> <td class="middle-right">Invalid Feature Specified</td> <td class="middle-right">{{%link href="/en/cli/v1/scripts/run-script/" %}}Specify a valid feature to execute the script{{%/link%}}</td> </tr> <tr> <td class="middle-right">Script Unavailable in File</td> <td class="middle-right">{{%link href="/en/cli/v1/scripts/run-script/" %}}Run an available script{{%/link%}}</td> </tr> <tr> <td class="middle-right">Script Exited with Error</td> <td class="middle-right">{{%link href="/en/cli/v1/scripts/run-script/" %}}Rectify the error and try again{{%/link%}}</td> </tr> <tr> <td rowspan="8" class="left pos-re">Event Generate</td> <td class="middle-right">Options Provided Not in Pairs</td> <td class="middle-right">{{%link href="/en/cli/v1/event-generate/introduction/" %}}Provide the options as pairs in the right format{{%/link%}}</td> </tr> <tr> <td class="middle-right">Source Invalid</td> <td class="middle-right">{{%link href="/en/cli/v1/event-generate/introduction/" %}}Provide an available source{{%/link%}}<br></td> </tr> <tr> <td class="middle-right">Options in Invalid Format</td> <td class="middle-right">{{%link href="/en/cli/v1/event-generate/introduction/" %}}Provide the options in a valid format{{%/link%}}</td> </tr> <tr> <td class="middle-right">Event Bus Name Missing in Custom Event</td> <td class="middle-right">{{%link href="/en/cli/v1/event-generate/sample-payload-custom-event/" %}}Provide the Event Bus name{{%/link%}}</td> </tr> <tr> <td class="middle-right">Rule Identifier Missing in Custom Event</td> <td class="middle-right">{{%link href="/en/cli/v1/event-generate/sample-payload-custom-event/" %}}Provide the Rule Identifier{{%/link%}}</td> </tr> <tr> <td class="middle-right">Event Bus Not Found in the Remote Console</td> <td class="middle-right">{{%link href="/en/cli/v1/event-generate/sample-payload-custom-event/" %}}Provide an available Event Bus name{{%/link%}}</td> </tr> <tr> <td class="middle-right">Action Not Compatible with Source</td> <td class="middle-right">{{%link href="/en/cli/v1/event-generate/introduction/" %}}Provide an action compatible with the source{{%/link%}}</td> </tr> <tr> <td class="middle-right">Incorrect Segment/Table/Folder Identifier</td> <td class="middle-right">{{%link href="/en/cli/v1/event-generate/sample-payload-component-event/" %}}Provide a valid identifier with the option{{%/link%}}</td> </tr> <tr> <td rowspan="3" class="left pos-re">Event Generate: Integration Functions</td> <td class="middle-right">Incorrect Input Value for Cliq Integration Event</td> <td class="middle-right">{{%link href="/en/cli/v1/event-generate/sample-payload-integration-functions/" %}}Provide the input in the right format{{%/link%}}</td> </tr> <tr> <td class="middle-right">Unknown Combination of Cliq Component</td> <td class="middle-right">{{%link href="/en/cli/v1/event-generate/sample-payload-integration-functions/" %}}Choose the appropriate combination of Cliq components from the list {{%/link%}}</td> </tr> <tr> <td class="middle-right">Integration Service Unavailable</td> <td class="middle-right">{{%link href="/en/cli/v1/event-generate/sample-payload-integration-functions/" %}}Provide an available integration service{{%/link%}}</td> </tr> <tr> <td class="left pos-re">Pull</td> <td class="middle-right">Invalid Value with Command</td> <td class="middle-right">{{%link href="/en/cli/v1/pull-resources/pull-all-resources/" %}}Provide the values {{%badge%}}client{{%/badge%}}, {{%badge%}}functions{{%/badge%}}, or {{%badge%}}apig{{%/badge%}} with the command{{%/link%}}</td> </tr> <tr> <td rowspan="2" class="left pos-re">Serve</td> <td class="middle-right">No Valid Components to Serve</td> <td class="middle-right">{{%link href="/en/cli/v1/serve-resources/introduction/" %}}Rectify the errors and try again{{%/link%}}</td> </tr> <tr> <td class="middle-right">Ports in the Given Range Unavailable</td> <td class="middle-right">{{%link href="/en/cli/v1/serve-resources/serve-options/" %}}Specify a port out of the given range{{%/link%}}</td> </tr> <tr> <td class="left pos-re">Shell</td> <td class="middle-right">No Valid Functions to Serve</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-functions/functions-shell/" %}}Rectify the errors and try again{{%/link%}}</td> </tr> <tr> <td rowspan="2" class="left pos-re">Deploy</td> <td class="middle-right">No Functions Ready for Deploy</td> <td class="middle-right">{{%link href="/en/cli/v1/deploy-resources/deploy-options/" %}}Execute the deploy command with an appropriate option{{%/link%}}</td> </tr> <tr> <td class="middle-right">APIG Deploy Skipped</td> <td class="middle-right">{{%link href="/en/cli/v1/working-with-api-gateway/enable-api-gateway/" %}}Enable API Gateway locally{{%/link%}} and {{%link href="/en/cli/v1/deploy-resources/introduction/" %}}deploy it once again{{%/link%}}</td> </tr> <tr> <td rowspan="7" class="left pos-re">Java Functions Configuration</td> <td class="middle-right">JAR File Missing in the Path Specified in Config File</td> <td class="middle-right">{{%link href="/en/cli/v1/project-directory-structure/functions-directory/" %}}Specify a valid path to the JAR file{{%/link%}}</td> </tr> <tr> <td class="middle-right">File Corrupted in Function Directory</td> <td class="middle-right">{{%link href="/en/cli/v1/project-directory-structure/functions-directory/" %}}Delete the corrupted file and execute the command again{{%/link%}}</td> </tr> <tr> <td class="middle-right">Project Name Mismatch in Config File</td> <td class="middle-right">{{%link href="/en/cli/v1/project-directory-structure/introduction/" %}}Change the project name to an appropriate value{{%/link%}}</td> </tr> <tr> <td class="middle-right">Java Compiler Version Check Failure</td> <td class="middle-right">{{%link href="/en/getting-started/installing-catalyst-cli/#pre-requisities" %}}Ensure that Java Compiler is installed{{%/link%}} and execute the command again</td> </tr> <tr> <td class="middle-right">Java Compiler Above Compatible Version</td> <td class="middle-right">{{%link href="/en/getting-started/installing-catalyst-cli/#pre-requisities" %}}Downgrade Java Compiler to a supported version{{%/link%}}</td> </tr> <tr> <td class="middle-right">Main File Missing in Function Directory</td> <td class="middle-right">{{%link href="/en/cli/v1/project-directory-structure/functions-directory/" %}}Specify a valid main file in the config file{{%/link%}}</td> </tr> <tr> <td class="middle-right">Java Compilation Error</td> <td class="middle-right">Rectify the specified errors to continue</td> </tr> <tr> <td class="left pos-re">Node.js Functions Configuration</td> <td class="middle-right">Main File Missing in Function Directory</td> <td class="middle-right">{{%link href="/en/cli/v1/project-directory-structure/functions-directory/" %}}Specify a valid main file in the config file{{%/link%}}</td> </tr> <tr> <td rowspan="8" class="left pos-re">Options Usage</td> <td class="middle-right">Duplicate Targets Specified for Option</td> <td class="middle-right">Remove the duplicate value and try again</td> </tr> <tr> <td class="middle-right">Invalid Target Specified with Option</td> <td class="middle-right">Provide a valid target as specified</td> </tr> <tr> <td class="middle-right">Target Specified With and Without Filter</td> <td class="middle-right">Provide the target in a valid format</td> </tr> <tr> <td class="middle-right">Unable to Debug Client Target</td> <td class="middle-right">Remove the client as a target in {{%badge%}}-\-debug{{%/badge%}} and try again</td> </tr> <tr> <td class="middle-right">Conflict in Option Usage</td> <td class="middle-right">Use only one of the options at a time</td> </tr> <tr> <td class="middle-right">Invalid Input for Option</td> <td class="middle-right">Provided a valid input as specified and try again</td> </tr> <tr> <td class="middle-right">APIG Cannot Be Served Separately</td> <td class="middle-right">{{%link href="/en/cli/v1/serve-resources/introduction/" %}}Include atleast one other component like functions or client{{%/link%}}</td> </tr> <tr> <td class="middle-right">Org Option is needed when Project Option is Supplied</td> <td class="middle-right">Provide org ID of the organization the project belongs to using {{%badge%}}-\-org{{%/badge%}}when you refer to a specific project using {{%link href="/en/cli/v1/cli-options/#-p----project-ltname_or_project_idgt---org-ltorg_idgt" %}}{{%badge%}}-\-project{{%/badge%}} or {{%badge%}}-p{{%/badge%}}{{%/link%}}</td> </tr> <tr> <td rowspan="4" class="left pos-re">General</td> <td class="middle-right">Not in Catalyst App Directory during Command Execution</td> <td class="middle-right">{{%link href="/en/cli/v1/project-directory-structure/introduction/" %}}Run the command from a valid Catalyst directory{{%/link%}} or {{%link href="/en/cli/v1/initialize-resources/introduction/" %}}initialize a project to make this a Catalyst app directory{{%/link%}}</td> </tr> <tr> <td class="middle-right">Incorrect Usage of Command</td> <td class="middle-right">{{%link href="/en/cli/v1/cli-help/command-reference-help/" %}}Use {{%badge%}}catalyst help{{%/badge%}} or execute the command with the {{%badge%}}--help{{%/badge%}} option to get usage instructions{{%/link%}}</td> </tr> <tr> <td class="middle-right">Unable to Load File</td> <td class="middle-right">Rectify the specified errors to continue</td> </tr> <tr> <td class="middle-right">Requested Port Unavailable</td> <td class="middle-right">Provide a different port with the command</td> </tr> </tbody> </table> </div> ### Data Store Import and Export -------------------------------------------------------------------------------- title: "Introduction" description: "Catalyst enables you to perform bulk read and bulk write operations on the tables in the Data Store using the CLI." last_updated: "2026-03-18T07:41:08.539Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/data-store-import-and-export/introduction/" service: "All Services" -------------------------------------------------------------------------------- # Data Store Import and Export ### Introduction Catalyst enables you to perform bulk read and bulk write operations on the tables in the {{%link href="/en/cloud-scale/help/data-store/introduction/" %}}Catalyst Data Store{{%/link%}} using the CLI. * {{%bold%}}Data Store Import:{{%/bold%}} The import operation can fetch thousands of records from a CSV file uploaded in a Bucket in {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}Stratus{{%/link%}} and bulk write them to a specific table in the Data Store. After the import operation has executed successfully, a CSV report file containing the details of the job execution will be generated at a download URL. * {{%bold%}}Data Store Export:{{%/bold%}} The export operation can bulk read thousands of records from a specific table in the Data Store, and generate a CSV file containing the results of the read operation if the job is successful. The specific requirements for both import and export operations can be defined in an optional input JSON configuration file, which you can pass along with your CLI commands. If you do not pass a configuration file, you must specify the mandatory information in the options of the command executions. You can configure a callback URL in both the operations, to enable automatic posting of the job status responses in it. You can also {{%link href="/en/cli/v1/data-store-import-and-export/check-import-export-status/" %}}manually check the job execution status{{%/link%}} whenever you need. {{%note%}} {{%bold%}}Note:{{%/bold%}} Catalyst also provides APIs for Data Store import and export operations. You can create the jobs, check their statuses, and download the results using individual APIs for both operations. Refer to the {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-read-rows/create-bulk-read-job/#CreateBulkReadJob" %}}Bulk Read API{{%/link%}} and {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-write-rows/create-bulk-write-job/#CreateBulkWriteJob" %}}Bulk Write API{{%/link%}} documentations for more information.{{%/note%}} -------------------------------------------------------------------------------- title: "Import Operation" description: "Catalyst enables you to perform bulk read and bulk write operations on the tables in the Data Store using the CLI." last_updated: "2026-03-18T07:41:08.539Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/data-store-import-and-export/import-operation/" service: "All Services" -------------------------------------------------------------------------------- # Data Store Import The general syntax of the Data Store import command is: {{%cli%}} catalyst ds:import [CSV_file_path] [options] {{%/cli%}} Before we discuss the command execution, let us look at the operations and configurations available for this command in detail. ### Operations There are three operations that can be performed using the Data Store import command: * {{%bold%}}Insert:{{%/bold%}} Inserts new rows of data into the table from the CSV file * {{%bold%}}Update:{{%/bold%}} Updates existing rows of data in the table * {{%bold%}}Upsert:{{%/bold%}} Enables both insert and update operations at the same time. If the record already exists, the row is updated. If the record does not exist, a new row with the data is inserted. You can specify the operation to be executed in the input {{%link href="/en/cli/v1/data-store-import-and-export/import-operation/#json-configuration-file-structure"%}}JSON configuration file{{%/link%}}. ### Input CSV File As mentioned earlier, the import operation bulk writes records from a CSV file to a table. You can provide the CSV file in two ways: 1. You can {{%link href="/en/cloud-scale/help/file-store/implementation/#upload-a-file-into-a-folder" %}}upload the CSV file{{%/link%}} containing the records to a Bucket in Stratus before you begin executing this operation. In this case, you must specify the unique {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} generated for the file in Stratus, in the JSON configuration file that you pass during the command execution. 2. If you do not pass any JSON configuration file with the command, you must specify the path of the CSV file in your system in your command execution, as shown in the general syntax above. Catalyst will then upload the CSV file you provide to your project's Bucket and automatically obtain it's Object URL for execution. You can select the path to save the file in Stratus. Catalyst will consider the CSV file specified with the command as the higher priority, over the Object URL specified in the JSON file. If the CSV file is not specified in either places, the CLI will display an error message during command execution. {{%note%}} {{%bold%}}Note:{{%/bold%}} 1. The CSV file's first row must be the header row. In other words, the column names must be present as the header row. 2. The CSV file must contain data in the format that adheres to CSV file standards. If the file is not in the standard format, the data written to the table may be corrupted. 3. You will be able to insert 5000 records in each table per project in the {{%link href="/en/deployment-and-billing/environments/introduction/" %}}development environment{{%/link%}} . If the CSV file contains records more than that, the first 5000 records will be written to the table. The others will be skipped in the development environment. There are no upper limits for data insertion in the production environment. {{%/note%}} <br> ### JSON Configuration File Structure A sample JSON configuration file specifying the requirements of the import operation, that you can optionally pass during the command execution, is shown below: {{%code class="language-json"%}}{ "table_identifier" : "ZylkerEmpDatabase", "operation" : "upsert", "object_url" : "https://bucket-name-development.zohostratus.com/object-name", "callback" : { "url" : "https://hr.zylker.com/en/EmpRecords/_callback.php.com", "headers" : { "src" : "ZCatalyst", "operation" : "bulkwriteAPI" } }, "find_by" : "EmpID", "fk_mapping" : [ { "local_column" : "EmpID", "reference_column" : "EmployeeID" }, { "local_column" : "DeptID", "reference_column" : "DepartmentID" } ] } {{%/code%}} The parameters supported by the JSON configuration file are defined below: <table class="content-table"> <thead> <tr> <th class="w30p">Attributes</th> <th class="w70p">Description</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}<strong>table_identifier</strong>{{%/badge%}} <br> (String, Mandatory) </td> <td>The {{%link href="/en/cloud-scale/help/data-store/tables/"%}}unique ID of the table{{%/link%}} or the table name where data must be imported to. You can also pass the table identifier using the {{%badge%}}{{%link href="/en/cli/v1/data-store-import-and-export/import-operation/#import-options"%}}-\-table{{%/link%}}{{%/badge%}} option.</td> </tr> <tr> <td>{{%badge%}}<strong>operation</strong>{{%/badge%}}<br> (String, Optional)</td> <td>Specifies the operation to be executed.<br /> <br /> <strong>Allowed values:</strong>{{%badge%}}insert{{%/badge%}}, {{%badge%}}update{{%/badge%}}, {{%badge%}}upsert{{%/badge%}}<br /> <br /> <strong>Default operation:</strong> {{%badge%}}insert{{%/badge%}}</td> </tr> <tr> <td>{{%badge%}}<strong>object_url</strong>{{%/badge%}}<br> (String, Mandatory)</td> <td>The {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url"%}}unique ID of the CSV file{{%/link%}} in Stratus. <br> You can also specify the CSV file path with the command.</td> </tr> <tr> <td>{{%badge%}}<strong>find_by</strong>{{%/badge%}}<br><br> (String, Mandatory for {{%badge%}}update{{%/badge%}} and {{%badge%}}upsert{{%/badge%}} operations. Not mandatory for {{%badge%}}insert{{%/badge%}} operation)</td> <td>The unique column using which the records are identified.<br /> <br /> For example, if you specify a unique column called 'EmployeeID' as the {{%badge%}}find_by{{%/badge%}} value, Catalyst will search the records in the Data Store table using the <em>EmployeeID</em> value. For the update operation, Catalyst will update the rows that match the <em>EmployeeID</em> value from the CSV file. For the upsert operation, Catalyst will update existing rows, and insert new rows if there are no records with matching EmployeeID values.<br /> <br /> <strong>Update:</strong> This can be a column with unique values as configured in the Data Store, or the {{%link href="/en/cloud-scale/help/data-store/columns/#default-columns"%}}ROWID{{%/link%}} generated by Catalyst for the records.<br /> <br /> <strong>Upsert:</strong> You can only specify a column with unique values as configured in the Data Store. You will not be able to specify the ROWID as the {{%badge%}}find_by{{%/badge%}} value. This is because, upsert will insert new rows if matching ones are not found, and the ROWID values will not be available for rows not existing in the Data Store.<br /> <br /> <strong>Insert:</strong> If you specify a {{%badge%}}find_by{{%/badge%}} column for an insert operation, any records matching the column values from the CSV file will be skipped and not inserted into the Data Store table. This is because, insert cannot update if a given record already exists.</td> </tr> <tr> <td>{{%badge%}}<strong>fk_mapping</strong>{{%/badge%}}<br> (JSON, Optional)</td> <td>Foreign key mapping for the columns that are primary keys in other tables. This is specified if any columns imported from the CSV file should be configured as foreign keys.<br /> <br /> You must map foreign keys in the following format:<br> {{%badge%}} {<br> "local_column" :<br> "local_column_name_1",<br> "reference_column" : "reference_column_name_1"<br> }{{%/badge%}}<br> <br> where {{%badge%}}local_column{{%/badge%}} is the name of the column in the table where the bulk write operation is processed, and {{%badge%}}reference_column{{%/badge%}} is the name of the column in the table in which it is a primary key.<br /> </td> </tr> <tr> <td>{{%badge%}}<strong>callback</strong>{{%/badge%}}<br> (JSON, Optional)</td> <td>The section where you can define the properties of the callback URL, where automatic JSON responses of the job statuses will be sent to. The properties to be included in this section are given in the table below. </td> </tr> </tbody> </table> #### Callback Properties <table class="content-table"> <thead> <tr> <th class="w30p">Attribute</th> <th class="w70p">Description</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}<strong>url</strong>{{%/badge%}}<br><br> (String, Mandatory if you want to specify the callback URL)</td> <td>The URL where the automatic responses will be sent to using the HTTP {{%badge%}}POST{{%/badge%}} method, each time the job status changes. Information about the job details will be contained in the body of the JSON response.<br /><br /> The CLI will also display a live stream of the execution, and the final job status.</td> </tr> <tr> <td>{{%badge%}}<strong>headers</strong>{{%/badge%}}<br> (String, Optional) <td>Headers that you require to be passed in the JSON response to the callback URL<br /> <br /> You must specify the headers as:<br> {{%badge%}} {<br> "{header_name_1}" : "{header_value_1}",<br> "{header_name_2}" : "{header_value_2}"<br> }{{%/badge%}}<br> <br> and so on.</td> </tr> <tr> <td>{{%badge%}}<strong>params</strong>{{%/badge%}}<br> (String, Optional)</td> <td>Parameters that you require to be appended to the callback URL<br /> <br /> You must specify the parameters as:<br /> {{%badge%}} {<br> "{param_name_1}" : "{param_value_1}",<br> "{param_name_2}" : "{param_value_2}"<br> }{{%/badge%}}<br> <br> and so on.</td> </tr> </tbody> </table> {{%note%}} {{%bold%}}Note:{{%/bold%}} If you don't specify the mandatory CSV file params and table identifier parameters in the JSON file, or if you don't pass a JSON file during the command execution, you must specify the CSV file path and the table identifier as {{%link href="#import-options" %}}import options{{%/link%}} .{{%/note%}} <br> ### Import Job Processing States There are three job processing states for the import operation: * {{%bold%}}In-Progress:{{%/bold%}} The job enters this state as soon as you execute the import command. The CLI will display a {{%badge%}} {{%bold%}}job\_id{{%/bold%}} {{%/badge%}} parameter that you can use to {{%link href="/en/cli/v1/data-store-import-and-export/check-import-export-status/" %}}check the status of the job execution{{%/link%}} for subsequent responses manually, if you have not configured a callback URL in the JSON.<br /> <br /> If you have configured a callback URL, a state response with the {{%badge%}}job\_id{{%/badge%}} will also be posted to the URL in the format you defined. * {{%bold%}}Success:{{%/bold%}} If the import operation is successful, Catalyst will provide a download URL where you can download a CSV report file that contains the details of the job execution. Catalyst also enables you to download the report file directly to your system through the CLI. If you have configured a callback URL, this response will be posted to it as well. * {{%bold%}}Failed:{{%/bold%}} If the import operation fails, the CLI will display the details of the errors that occurred. If you have configured a callback URL, this response will be posted to it as well. <br> ### Import Options The import command execution process is described in detail in this section, for each option. The Data Store import command supports the following options: <br> #### -\-config &lt;path&gt; The {{%badge%}}config{{%/badge%}} option enables you to define the path of the JSON configuration file in your system.<br /> <br /> For example, you can execute the import operation and pass the JSON file path as shown below:<br /> <br /> The CLI will then automatically schedule the job execution and mark it as "in-progress". It will display a live stream of the execution process, along with the {{%badge%}} {{%link href="/en/cli/v1/data-store-import-and-export/import-operation/#import-job-processing-states"%}}job_id{{%/link%}} {{%/badge%}} .<br /> <br /> If the job executes successfully, the CLI will prompt you to download the report file to your system. Type '{{%bold%}}y{{%/bold%}} ', then press {{%bold%}}Enter{{%/bold%}} to download.<br /> <br /> The ZIP file containing the report file will be downloaded to your project directory.<br /> <br /> You can use the download URL provided by Catalyst to download the report even when you are not working in your CLI. You must execute it as an {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-write-rows/download-bulk-write-result/#DownloadBulkWriteResult" %}}API command{{%/link%}} .<br /> {{%note%}} {{%bold%}}Note:{{%/bold%}} The download URL will be valid for 1 day since its generation.{{%/note%}} The CSV report file will list all the records that were skipped from being written, along with the reasons for it.<br /> <br> <br> #### -\-table &lt;name|id&gt; <br /> The {{%badge%}}-\\-table{{%/badge%}} option enables you to specify the table name or Table ID of the table, to which the records must be written.<br /> <br /> As mentioned earlier, if you don't specify the table identifier in the JSON file, or if you don't pass a JSON file during the command execution, you must specify it using this option.<br /> <br /> Catalyst will consider the table specified in the option as the higher priority, over the one specified in the JSON file. If the table is not specified in either places, the CLI will display an error message during command execution.<br /> <br /> For example, you can specify the table identifier along with the CSV file path in the following way:<br /> <br /> If you specify the CSV file path, the CLI will then execute the import operation, bulk write the records to the specified table, and provide the report file in the same way.<br /> {{%note%}} {{%bold%}}Note:{{%/bold%}} Your bucket's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}} cannot be empty.{{%/note%}} #### -\-production <br /> The {{%badge%}}\--production{{%/badge%}} option enables you to directly execute the import operation in the {{%link href="/en/deployment-and-billing/environments/production-environment/" %}}production environment{{%/link%}} of your Catalyst project. If you use this option, the records from the input CSV file will be bulk written to the specified table directly in production.<br /> {{%note%}} {{%bold%}}Note:{{%/bold%}} You can only use this option if the production environment is already enabled for your project.{{%/note%}} -------------------------------------------------------------------------------- title: "Export Operation" description: "Catalyst enables you to perform bulk read and bulk write operations on the tables in the Data Store using the CLI." last_updated: "2026-03-18T07:41:08.539Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/data-store-import-and-export/export-operation/" service: "All Services" -------------------------------------------------------------------------------- # Data Store Export ### Introduction The general syntax of the Data Store export command is: {{%cli%}} catalyst ds:export [options] {{%/cli%}} ### JSON Configuration File Structure The Data Store Export command will obtain records from the table you specify, which match the criteria you define in the input JSON configuration file. If you don't pass the JSON file with the command, or if you don't specify any criteria, all records from the table will be read by default. A sample JSON configuration file specifying the requirements of the export operation, that you can optionally pass during the command execution, is shown below: The parameters supported by the JSON configuration file are defined below: <table class="content-table"> <thead> <tr> <th class="w30p">Attributes</th> <th class="w70p">Description</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}<strong>table_identifier</strong>{{%/badge%}}<br> (String, Mandatory)</td> <td>The {{%link href="/en/cloud-scale/help/data-store/tables/" %}}unique ID{{%/link%}} of the table or the table name where data must be exported from. You can also pass the table identifier using the {{%link href="#export-options"%}}{{%badge%}}--table{{%/badge%}} option{{%/link%}} .</td> </tr> <tr> <th>{{%badge%}}<strong>query</strong>{{%/badge%}}<br> (JSON, Optional)</th> <th>The section where you can define the conditions and criteria for the export job</th> </tr> <tr> <td>{{%badge%}}<strong>page</strong>{{%/badge%}}<br> (Numerical, Optional)</td> <td>The CSV file generated as the result of the bulk read process contains two hundred thousand/two lakh records in one page.<br /> <br /> Page value '1' indicates that the first two hundred thousand records matching your query will get exported. You can fetch subsequent records by increasing the page value.<br /> <br /> For example, if you want to fetch records from the range 200,001 to 400,000, then you must specify the page value as '2'.<br /> <br /> Default value: 1<br><br> You can also specify the page value using the<br> {{%link href="#export-options"%}}{{%badge%}}--page{{%/badge%}} option{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}<strong>select_columns</strong>{{%/badge%}}<br> (Array, Optional)</td> <td>Specific columns in the records that need to be fetched from the table. If you do not specify the columns, all columns will be selected and fetched.<br /> <br /> You can include multiple columns in an array.</td> </tr> <tr> <th>{{%badge%}}<strong>callback</strong>{{%/badge%}}<br> (JSON, Optional)</th> <th>The section where you can define the properties of the callback URL, where automatic JSON responses of the job statuses will be sent to</th> </tr> <tr> <td>{{%badge%}}<strong>url</strong>{{%/badge%}}<br> (String, Mandatory if you want to specify the callback URL</td> <td>The URL where the automatic responses will be sent to using the HTTP {{%badge%}}POST{{%/badge%}} method, each time the job status changes. Information about the job details will be contained in the body of the JSON response.<br /> <br /> The CLI will also display a live stream of the execution, and the final job status.</td> </tr> <tr> <td>{{%badge%}}<strong>headers</strong>{{%/badge%}}<br> (String, Optional)</td> <td>Headers that you require to be passed in the JSON response to the callback URL<br /> <br /> You must specify the headers as:<br>{{%badge%}} {<br> "{header_name_1}" : "{header_value_1}",<br> "{header_name_2}" : "{header_value_2}"<br> }{{%/badge%}}<br> <br /> and so on.</td> </tr> <tr> <td>{{%badge%}}<strong>params</strong>{{%/badge%}}<br> (String, Optional)</td> <td>Parameters that you require to be appended to the callback URL<br /> <br /> You must specify the parameters as:<br>{{%badge%}} {<br> "{param_name_1}" : "{param_value_1}",<br> "{param_name_2}" : "{param_value_2}"<br> }{{%/badge%}}<br> <br /> and so on.</td> </tr> <tr> <th>{{%badge%}}<strong>criteria</strong>{{%/badge%}}<br> (JSON, Optional)</th> <th>A set of conditions based on which the records will be fetched. The properties to be included in this section are given in the table below.</th> </tr> </tbody> </table> <br> #### Criteria Properties <table class="content-table"> <thead> <tr> <th class="w30p">Attributes</th> <th class="w70p">Description</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}<strong>group_operator</strong>{{%/badge%}}<br> (String, Mandatory if you want to specify the criteria</td> <td>The operator that will bind the criteria groups together.<br /> <br /> Supported Operators: {{%badge%}}AND{{%/badge%}}, {{%badge%}}OR{{%/badge%}}<br /> <br /> If you define two or more criteria groups, you can use the {{%badge%}}AND{{%/badge%}} or the {{%badge%}}OR{{%/badge%}} operator. For example, you can specify a criteria like "column1 equal value 1 AND column2 contains value 2" in the format specified in the previous section.<br /> <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} You will not be able to use combinations of both the operators. You can either use {{%badge%}}AND{{%/badge%}} or {{%badge%}}OR{{%/badge%}} in a single command execution.{{%/note%}}</td> </tr> <tr> <td>{{%badge%}}<strong>group</strong>{{%/badge%}}<br> (JSON, Mandatory if you want to specify the criteria)</td> <td>You can include upto 25 criteria sets in this section. The sample JSON file shows 2 criteria sets.<br /> <br /> <strong>Note:</strong> You can include only one overall group with one group operator in a single execution.</td> </tr> <tr> <td>{{%badge%}}<strong>column_name</strong>{{%/badge%}}<br> (String, Mandatory if you want to specify the criteria)</td> <td>Name of the specific column from the table that the criteria should be defined for</td> </tr> <tr> <td>{{%badge%}}<strong>comparator</strong>{{%/badge%}}<br> (String, Mandatory if you want to specify the criteria)</td> <td>The comparison operator that matches the column name with the criteria value<br /> <br /> <strong>Supported Comparators:</strong> {{%badge%}}equal{{%/badge%}}, {{%badge%}}not_equal{{%/badge%}}, {{%badge%}}greater_than{{%/badge%}}, {{%badge%}}greater_equal{{%/badge%}}, {{%badge%}}less_than{{%/badge%}}, {{%badge%}}less_equal{{%/badge%}}, {{%badge%}}starts_with{{%/badge%}}, {{%badge%}}ends_with{{%/badge%}}, {{%badge%}}contains{{%/badge%}}, {{%badge%}}not_contains{{%/badge%}}, {{%badge%}}in{{%/badge%}}, {{%badge%}}not_in{{%/badge%}}, {{%badge%}}between{{%/badge%}}, {{%badge%}}not_between{{%/badge%}}<br /> <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}}<br> * You can specify multiple values for {{%badge%}}in{{%/badge%}} and {{%badge%}}not_in{{%/badge%}} comparators, separated by commas. * Catalyst supports only the {{%badge%}}equal{{%/badge%}} comparator for an encrypted column. You will not be able to use other comparators as the criteria for an encrypted column.{{%/note%}}</td> </tr> <tr> <td>{{%badge%}}<strong>value</strong>{{%/badge%}}<br> (String, Mandatory if you want to specify the criteria)</td> <td>The value for the specific column in the record that you require to be defined as a criteria</td> </tr> </tbody> </table> {{%note%}} {{%bold%}}Note:{{%/bold%}} If you don't specify the mandatory table identifier parameter in the JSON file, or if you don't pass a JSON file during the command execution, you must specify it through the {{%link href="#export-options" %}}export option{{%/link%}} .{{%/note%}} ### Export Job Processing States There are three job processing states for the export operation: * {{%bold%}}In-Progress:{{%/bold%}} The job enters this state as soon as you execute the import command. The CLI will display a {{%badge%}}job_id {{%/badge%}} parameter which you can use to {{%link href="/en/cli/v1/data-store-import-and-export/check-import-export-status/" %}}check the status of the job execution{{%/link%}} for subsequent responses manually, if you have not configured a callback URL in the JSON.<br /> <br /> If you have configured a callback URL, a state response with the {{%badge%}}job_id{{%/badge%}} will also be posted to the URL in the format you defined. * {{%bold%}}Success:{{%/bold%}} If the export operation is successful, Catalyst will provide a download URL where you can download the CSV file that contains the records matching your query. Catalyst also enables you to download the result file directly to your system through the CLI. If you have configured a callback URL, this response will be posted to it as well. * {{%bold%}}Failed:{{%/bold%}} If the export operation fails, the CLI will display the details of the errors that occurred. If you have configured a callback URL, this response will be posted to it as well. ### Export Options The export command execution process is described in detail in this section, for each option. The Data Store export command supports the following options: <br> #### -\-config &lt;path&gt; The {{%badge%}}\--config{{%/badge%}} option enables you to define the path of the JSON configuration file in your system. For example, you can execute the export operation and pass the JSON file path as shown below: The CLI will then automatically schedule the job execution and mark it as "in-progress". It will display a live stream of the execution process, along with the {{%badge%}} {{%link href="/en/cli/v1/data-store-import-and-export/export-operation/#export-job-processing-states"%}}job_id{{%/link%}}{{%/badge%}}. <br> If the job executes successfully, the CLI will prompt you to download the result file to your system. Type '{{%bold%}}y{{%/bold%}} ', then press {{%bold%}}Enter{{%/bold%}} to download. <br> The ZIP file containing the result file will be downloaded to your project directory. <br> You can use the download URL provided by Catalyst to download the result file even when you are not working in your CLI. You must execute it as an {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-read-rows/download-bulk-read-result/#DownloadBulkReadResult" %}}API command{{%/link%}}. {{%note%}} {{%bold%}}Note:{{%/bold%}} The download URL will be valid for 1 day after its generation.{{%/note%}} <br> The CSV result file will contain a list of all the records matching your export job query. <br> <br> #### -\-table &lt;name|id&gt; <br /> The {{%badge%}}-\\-table{{%/badge%}} option enables you to specify the table name or Table ID of the table, where the records must be read from. As mentioned earlier, if you don't specify the table identifier in the JSON file, or if you don't pass a JSON file during the command execution, you must specify it using this option. Catalyst will consider the table specified in the option as the higher priority, over the one specified in the JSON file. If the table is not specified in either places, the CLI will display an error message during command execution. For example, you can specify the table identifier in the following way: {{%cli%}}catalyst ds:export --table EmpDetails{{%/cli%}} The CLI will then execute the export operation, bulk read the records from the specified table, and provide the results in the same way. <br> <br> #### -\-page &lt;page&gt; As discussed in the JSON parameters section, you can specify a page value to indicate the range of records to fetch from the table. For example, you can fetch records from the range 200,001 to 400,000 by executing the following command: {{%cli%}}catalyst ds:export --page 2{{%/cli%}} <br> <br> #### -\-production The {{%badge%}}-\\-production{{%/badge%}} option enables you to directly execute the export operation in the {{%link href="/en/deployment-and-billing/environments/introduction/" %}}production environment{{%/link%}} of your Catalyst project. If you use this option, If you use this option, the records from the table in the production environment will be bulk read. {{%note%}} {{%bold%}}Note:{{%/bold%}} You can only use this option if the production environment is already enabled for your project.{{%/note%}} -------------------------------------------------------------------------------- title: "Check Import/Export Status" description: "Catalyst enables you to perform bulk read and bulk write operations on the tables in the Data Store using the CLI." last_updated: "2026-03-18T07:41:08.540Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/data-store-import-and-export/check-import-export-status/" service: "All Services" -------------------------------------------------------------------------------- # Check the Status of an Import or Export Operation ### Introduction You can manually check the status of a Data Store import or export operation that you initiated previously any time you need. If you had not configured a callback URL in your JSON file, or if you had terminated the CLI import or export command execution, you can check the job status using this command. The CLI will inform you if the import or export job is in progress, has successfully executed, or failed. You must use the {{%badge%}} {{%bold%}}job_id{{%/bold%}} {{%/badge%}} that was assigned to the import or export job when you initiated the operation, in this command. <br> ### Check Status Command The general syntax of the import or export job status check command is: {{%cli%}} ds:status [options] &lt;operation&gt; [job_id] {{%/cli%}} The value for {{%bold%}}&lt;operation&gt;{{%/bold%}} must be either import or export, and you must specify it mandatorily. The {{%badge%}}job\_id{{%/badge%}} is optional. If you don't specify the {{%badge%}}job\_id{{%/badge%}} , all jobs of the specified operation executed in the last 24 hours will be listed. For example, if you specify the export operation without providing a {{%badge%}}job\_id{{%/badge%}} , the CLI will display a list of all export jobs executed as shown below. You can then select a specific job id from the list and press {{%bold%}}Enter{{%/bold%}} , to view its detailed status. The CLI will follow the same process of providing a download URL and enabling you to download the response file if the job executed successfully, as discussed in the previous sections. If you provide the {{%badge%}}job\_id{{%/badge%}} with the command, the CLI will directly fetch and display the status of that particular job. <br> ### The -\-production Option The import/export status check command supports one option: {{%badge%}}-\\-production{{%/badge%}} This option enables you to check the status of an operation that was executed in the {{%link href="/en/deployment-and-billing/environments/introduction/" %}}production environment{{%/link%}} of your Catalyst project. If you used the {{%badge%}}-\\-production{{%/badge%}} option in an import or export command execution, you must use the option for checking its status as well. {{%note%}} {{%bold%}}Note:{{%/bold%}} You can only use this option if the production environment is already enabled for your project.{{%/note%}} ### Deploy Resources -------------------------------------------------------------------------------- title: "Introduction" description: "Catalyst enables you to easily deploy your project and its resources like Functions, web client, AppSail, API Gateway, Slate apps to the cloud using the CLI." last_updated: "2026-03-18T07:41:08.540Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/deploy-resources/introduction/" service: "All Services" -------------------------------------------------------------------------------- # Deploy Resources ### Introduction You can deploy the resources of your project from the CLI to the remote console, after you have developed and tested them. This will update the project in the console with the latest code. The components that you can deploy from the CLI are: {{%bold%}}Client{{%/bold%}}, {{%bold%}}Functions{{%/bold%}}, {{%bold%}}AppSail{{%/bold%}}, {{%bold%}}API Gateway rules{{%/bold%}}, and {{%bold%}}Slate apps{{%/bold%}} that you developed in your local Catalyst project directory. You can deploy web client applications of all three types: {{%bold%}}Basic web apps, Angular apps, and React apps{{%/bold%}}. When you deploy resources from the CLI, they will only be available in the {{%link href="/en/deployment-and-billing/environments/introduction/" %}}development environment{{%/link%}} of your Catalyst project. They will not affect the production environment of your application. To make the resources available in the production environment, you must {{%link href="/en/deployment-and-billing/environments/deployment-types/" %}}deploy the project to production{{%/link%}} from the console. You can also directly {{%link href="/en/cloud-scale/help/web-client-hosting/introduction/" %}}host your web client application{{%/link%}} from the Catalyst console, and {{%link href="/en/serverless/help/functions/implementation/" %}}create or upload functions{{%/link%}} directly in the console. You can also configure APIs in {{%link href="/en/cloud-scale/help/api-gateway/introduction/" %}}API Gateway{{%/link%}} directly in the console. Catalyst also supports a {{%link href="/en/cli/v1/deploy-resources/deploy-appsail/" %}}standalone deploy option{{%/link%}} for deploying your AppSail resource without initializing it in prior, in addition to the regular deployment. {{%note%}} {{%bold%}}Note:{{%/bold%}} You cannot deploy resources of your mobile applications using the Catalyst CLI. You can host mobile apps using {{%link href="/en/cloud-scale/help/mobile-device-management/introduction/" %}}Mobile Device Management{{%/link%}}.{{%/note%}} <br> ### Deploy Command Execution To deploy your Catalyst project and all its resources from the CLI to the remote console, execute the following command in your terminal from your project directory: {{%cli%}} catalyst deploy {{%/cli%}} When you execute this command, it will deploy all deployable resources in your project directory by default. The CLI will consider the project that is active in your working directory. If any project other than the {{%link href="/en/cli/v1/initialize-resources/introduction/" %}}directory's base project{{%/link%}} is active in it, the CLI will display a warning informing you of it. After the deployment is complete, your project will be synchronized with your project in the cloud console. You will be able to access the functions, web client, AppSail, Slate apps, and updated API Gateway definitions that were deployed from the console. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to deploy your Catalyst resources using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/implementation/#manage-your-project" %}}here{{%/link%}}.{{%/note%}} <br> ### Points to Remember: * A project can only be deployed successfully if its directory includes the client and the functions packages in the standard structure. The functions and client directories must contain the required configuration files in the standard format. For more information, refer to the {{%link href="/en/cli/v1/project-directory-structure/introduction/" %}}Project Directory Structure help{{%/link%}}. * The {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}} {{%badge%}}catalyst.json{{%/badge%}} {{%/link%}} file must be present in the project directory when the project is deployed using the CLI. It is not necessary to include this file when you are directly hosting the web client from the console. * The {{%badge%}} {{%link href="/en/cli/v1/working-with-api-gateway/api-gateway-json-file/" %}}catalyst-user-rules.json{{%/link%}} {{%/badge%}} file that contains the definitions of the API Gateway rules must be present in the project's home directory, if you require it to be deployed. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to deploy your Catalyst resources using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/implementation/#manage-your-project" %}}here{{%/link%}}.{{%/note%}} -------------------------------------------------------------------------------- title: "Deploy Functions" description: "Catalyst enables you to easily deploy your project and its resources like Functions, web client, AppSail, API Gateway, Slate apps to the cloud using the CLI." last_updated: "2026-03-18T07:41:08.540Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/deploy-resources/deploy-functions/" service: "All Services" -------------------------------------------------------------------------------- # Deploy Functions The CLI will compile all the Java functions in your project directory before deploying them. The compiled Java class files available in their respective directories. The Node.js and Python functions are deployed directly. The CLI deploys each function individually. The CLI will display the status of each resource's deployment individually, indicating if it was successful or a failure. The {{%link href="/en/serverless/help/functions/basic-io/" %}}Basic I/O{{%/link%}} and {{%link href="/en/serverless/help/functions/advanced-io/" %}}Advanced I/O{{%/link%}} functions are deployed to the URLs displayed in the terminal, and you can access their endpoints from their URLs. The endpoints of the {{%link href="/en/serverless/help/functions/cron-functions/" %}}Cron{{%/link%}}, {{%link href="/en/serverless/help/functions/event-functions/" %}}Event{{%/link%}}, {{%link href="/en/smartbrowz/help/browser-logic/introduction/" %}}Browser Logic{{%/link%}}, and {{%link href="/en/serverless/help/functions/integration-functions/" %}}Integration{{%/link%}} functions are not accessible through URLs, as they are associated with cron jobs, event listeners, or external integrations respectively. The CLI will just display their deployment status. <br> {{%note%}} {{%bold%}}Note:{{%/bold%}} The {{%badge%}}/server/{{%/badge%}} part in the URL of a Catalyst application indicates a function. A Basic I/O function's URL contains an {{%badge%}}/execute{{%/badge%}} after the function's name, whereas an Advanced I/O function's URL does not contain that keyword.{{%/note%}} <br> -------------------------------------------------------------------------------- title: "Deploy Client" description: "Catalyst enables you to easily deploy your project and its resources like Functions, web client, AppSail, API Gateway, Slate apps to the cloud using the CLI." last_updated: "2026-03-18T07:41:08.540Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/deploy-resources/deploy-client/" service: "All Services" -------------------------------------------------------------------------------- # Deploy Client The deployment of a web client will generate the URL endpoint of the {{%link href="/en/cloud-scale/help/web-client-hosting/implementation/" %}}hosted web client{{%/link%}}, where you can access the application. ### Deploy Basic Client Applications The Basic web client will be deployed straight away. <br> ### Deploy Angular Applications When you deploy an Angular app, the Catalyst plugin for your Angular app, {{%link href="/en/cli/v1/initialize-resources/initialize-client/#angular-applications" %}} {{%badge%}}zcatalyst-cli-plugin-angular{{%/badge%}} {{%/link%}} , which is installed when the Angular app is initialized, will handle the deployment. The chunk files representing your Angular components and services, such as the polyfills and runtime files, are generated. The build is generated after the chunk files are generated. Angular applications are compiled and built into an output directory {{%badge%}}dist/{{%/badge%}} . This folder will contain all the compiled files of your app, such as the entry point file, stylesheets, and templates of the HTML, CSS, JS or TS types in your app's source folder, {{%badge%}}src{{%/badge%}} . The deployment details will be updated in the workspace configuration file {{%badge%}}angular.json{{%/badge%}} . These fall under the {{%link href="https://angular.io/guide/deployment" %}}standard deployment procedure{{%/link%}} of Angular applications. The CLI will display the deployment details of your Angular app. The URL endpoint of the deployed web client will be generated and displayed. You can open the application with this URL. <br> ### Deploy React Applications When you deploy a React app, the Catalyst plugin for your React app, {{%link href="/en/cli/v1/initialize-resources/initialize-client/#react-applications" %}} {{%badge%}}zcatalyst-cli-plugin-react{{%/badge%}} {{%/link%}} , which is installed when the React app is initialized, will handle the deployment. The plugin will enable the compilation of the React app. React applications are compiled and built into an output directory {{%badge%}}build/{{%/badge%}} . This folder will contain all the compiled files your app, such as the HTML, stylesheet, JS and other files in your app's source folder {{%badge%}}src{{%/badge%}} . The production-ready build is generated after the compilation. If you had developed your React app in TypeScript, the code will be transpiled to JavaScript during the compilation. These fall under the {{%link href="https://create-react-app.dev/docs/deployment/" %}}standard deployment procedure{{%/link%}} of React applications. The CLI will display the deployment details of your React app. The URL endpoint of the deployed web client will be generated and displayed. You can open the application with this URL. <br> {{%note%}} {{%bold%}}Note:{{%/bold%}} * The {{%badge%}}/app/{{%/badge%}} part in the URL of a Catalyst application indicates the client component. You can view the URLs of your application of both environments from the {{%link href="/en/getting-started/set-up-a-catalyst-project/environment-settings/" %}}Environments settings section{{%/link%}}. * If you enter the application's URL in this format: {{%bold%}} https://_project\_domain\_name_.development.catalystserverless.com{{%/bold%}}, it will automatically redirect you to the application's homepage that you have configured in the {{%link href="/en/cli/v1/project-directory-structure/client-directory" %}} {{%badge%}}client-package.json{{%/badge%}} {{%/link%}} file, in the {{%link href="/en/deployment-and-billing/environments/development-environment/" %}}development environment{{%/link%}}. {{%/note%}} <br> -------------------------------------------------------------------------------- title: "Deploy AppSail" description: "Catalyst enables you to easily deploy your project and its resources like Functions, web client, AppSail, API Gateway, Slate apps to the cloud using the CLI." last_updated: "2026-03-18T07:41:08.540Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/deploy-resources/deploy-appsail/" service: "All Services" -------------------------------------------------------------------------------- # Deploy AppSail ### Introduction Catalyst enables you to deploy {{%link href="/en/serverless/help/appsail/introduction/" %}}AppSail services{{%/link%}} in two different ways: * {{%bold%}}Regular Deploy:{{%/bold%}} The regular deploy execution applies when you have already initialized an AppSail resource either during the {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}project initialization{{%/link%}} or by {{%link href="/en/cli/v1/add-appsail/" %}}adding it in an existing project directory{{%/link%}}. * {{%bold%}}Standalone Deploy:{{%/bold%}} You can do a standalone deploy of an app directly without initializing it as an AppSail service in prior. You can deploy the apps initialized as {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/" %}}Catalyst-managed runtimes{{%/link%}} or {{%link href="/en/serverless/help/appsail/custom-runtimes/overview/" %}}custom runtimes{{%/link%}} through both these deployment methods. Given below are some important points for AppSail initialized or added in two different ways: * {{%bold%}}Catalyst-Managed Runtimes:{{%/bold%}} Catalyst deploys all the executable files of your app present in the build path that you specified during the app initialization, in this case along with project configurations. {{%note%}}{{%bold%}}Note:{{%/bold%}} You need not bundle or zip all the build files together, as AppSail will automatically bundle them during the application serve or deployment from the {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/#source-directory-and-build-path" %}}build path{{%/link%}} specified.{{%/note%}} * {{%bold%}}Container Images:{{%/bold%}} The OCI image of your app that is associated with Appsail is deployed, along with the configuration file of your project. {{%note%}}{{%bold%}}Note:{{%/bold%}} Catalyst only supports the deployment of {{%link href="https://github.com/opencontainers/image-spec" %}}OCI-compliant images{{%/link%}} built for the Linux AMD64 (x86-64) platform.{{%/note%}} <br> ### Regular Deploy If the AppSail app is already initialized in the project directory, the CLI will automatically deploy the app with the rest of the project resources when you execute the {{%badge%}}catalyst deploy{{%/badge%}} command. The CLI will display the endpoint URL of the app after it is deployed, that you can open it with. <br> If you have multiple AppSail apps in your project directory, you can access all of their URL endpoints from the CLI. You can also execute the following command to deploy the AppSail service alone from your app's source directory. {{%cli%}}catalyst deploy appsail{{%/cli%}} The deployment process is the same. <br> <br> ### Standalone Deploy You must execute the standalone deploy command from a Catalyst project directory's root. That is, {{%badge%}}catalyst.json{{%/badge%}} and other {{%link href="/en/cli/v1/project-directory-structure/introduction/" %}}project dependency files{{%/link%}} must be present in the directory. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you execute the standalone deploy command without any of the [options specific to deploying container images](#standalone-deploy-appsail-options), the CLI will prompt you for inputs related to Catalyst-managed runtime apps only by default. {{%/note%}} You must remember the following points about the standalone deployment. {{%bold%}}Catalyst-managed runtime apps:{{%/bold%}} * You must ensure your app's deployable build files are present in the directory you execute the command from. This is because that directory will be considered the {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/#source-directory-and-build-path" %}}build directory{{%/link%}} automatically. * The {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/#the-app-configjson-file"%}}{{%badge%}}app-config.json{{%/badge%}}{{%/link%}} file is not created when you do a standalone deploy to deploy an app without initializing it. The information that this file carries is fetched as input from you in the CLI during the deployment. {{%bold%}}Container images:{{%/bold%}} * You can use the standalone deploy command with these options to deploy apps as container images: {{%badge%}}--name &lt;name&gt;{{%/badge%}}, {{%badge%}}--source &lt;image&gt;{{%/badge%}}, {{%badge%}}--command &lt;command&gt;{{%/badge%}}, {{%badge%}}--port &lt;port&gt;{{%/badge%}}. The first two are mandatory, while the last two are optional and can be used to override any startup commands or ports already configured in the container image definition. The options are explained in detail below. <br> You can do the standalone deploy of an AppSail app in the following way: 1. Navigate to the directory the app's deployable files are present in, and executing the following command: {{%cli%}}catalyst deploy appsail{{%/cli%}} 2. Enter a name for your app. You can name the main file of your app’s build anything you prefer. <br> {{%note%}}{{%bold%}}Note:{{%/bold%}} However, when you build your app as a Java WAR file, you will need to name the main file root.war or add specific controllers according to your code.{{%/note%}} 3. Select the build path for your app from the list and press **Enter**. <br> 4. Select a stack for your app and press **Enter**. <br> If you select Java, the CLI will further prompt you to pick either {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/"%}}Java SE or the Java WAR{{%/link%}} as your app's deployable format. <br> If you select any other stack, this will be skipped. 5. You must additionally specify the startup command for your app based on the stack, framework, and web server used. This information will be directly deployed and will be available in the Configurations section of your console after the app deployment. <br> Your app is now directly deployed to the associated remote project without requiring you to initialize it as an AppSail resource. You can now access it with its endpoint URL displayed in the CLI. <br> <br> ### Standalone Deploy AppSail Options The catalyst deploy appsail standalone command supports the following options. Some of these are applicable to both Catalyst-managed runtime and container images apps, while some are specific to only one of them. {{%bold%}}--name &lt;name&gt;{{%/bold%}} Use this to specify the name of your app. This is applicable to both Catalyst-managed runtime and container image apps. Example: {{%cli%}}--name DemoApp{{%/cli%}} {{%bold%}}--build-path &lt;path&gt;{{%/bold%}} Use this to specify the {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/#source-directory-and-build-path" %}}build path{{%/link%}} of your app. Provide an absolute path value. This is applicable only to Catalyst-managed runtime apps. Example: {{%cli%}}--build-path /users/amelia/catalystapp/demoapp/{{%/cli%}} {{%bold%}}--stack &lt;stack&gt;{{%/bold%}} Use this to specify the stack or runtime of your app. You must only specify the runtimes that are supported by Catalyst. This is applicable only to Catalyst-managed runtime apps. Example: {{%cli%}}--stack NodeJS 20{{%/cli%}} {{%bold%}}--platform &lt;javase|war&gt;{{%/bold%}} Use this to specify the platform of the Java stack alone that are supported in Catalyst: {{%badge%}}javase{{%/badge%}} or {{%badge%}}war{{%/badge%}}. This is applicable only to Catalyst-managed runtime apps. Example: {{%cli%}}--platform javase{{%/cli%}} {{%bold%}}--command &lt;command&gt;{{%/bold%}} Use this to specify the {{%link href="/en/serverless/help/appsail/appsail-configurations/#startup-commands" %}}startup command{{%/link%}} for your app. This is applicable to both Catalyst-managed runtime and container image apps. This will override any values already configured in the container image definition. Example: {{%cli%}}--command npm start{{%/cli%}} {{%bold%}}--source &lt;image&gt;{{%/bold%}} Use this to specify the source of the docker image to be deployed. This is applicable only to container image apps. You must start with '*docker://*' for Docker image protocol and '*docker-archive://*' for Docker archive protocol. {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/#initialize-appsail-as-a-custom-runtime" %}}Refer here for details{{%/link%}}. Example: {{%cli%}}--source docker://example-voting-app-worker:latest{{%/cli%}} {{%bold%}}--port &lt;port&gt;{{%/bold%}} Use this to specify the port for the AppSail. This is applicable only to container image apps. This will override any values already configured in the container image definition. Example: {{%cli%}}--port 8000{{%/cli%}} -------------------------------------------------------------------------------- title: "Deploy API Gateway" description: "Catalyst enables you to easily deploy your project and its resources like Functions, web client, AppSail, API Gateway, Slate apps to the cloud using the CLI." last_updated: "2026-03-18T07:41:08.540Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/deploy-resources/deploy-api-gateway/" service: "All Services" -------------------------------------------------------------------------------- # Deploy API Gateway You can deploy the API Gateway's {{%link href="/en/cli/v1/working-with-api-gateway/api-gateway-json-file/" %}}JSON file{{%/link%}} for your project to the cloud. This will update the local API definitions in the remote console. {{%note%}} {{%bold%}}Note:{{%/bold%}} If API Gateway is disabled for your project, the deployment of the API Gateway rules will be skipped.{{%/note%}} -------------------------------------------------------------------------------- title: "Deploy to Slate" description: "Catalyst enables you to easily deploy your project and its resources like Functions, web client, AppSail, API Gateway, Slate apps to the cloud using the CLI." last_updated: "2026-03-18T07:41:08.540Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/deploy-resources/deploy-to-slate/" service: "All Services" -------------------------------------------------------------------------------- # Deploy to Slate You can deploy your front-end web application in Catalyst Slate using the below listed steps. Before you deploy any application in Slate, please make sure the project directory has been linked to the Slate service. For this, you can use the {{%link href="/en/cli/v1/working-with-slate/link-slate-app" %}}{{%badge%}}catalyst slate:link{{%/badge%}}{{%/link%}} command. Execute the following command in your terminal from the Slate service's project directory: {{%cli%}}catalyst deploy slate{{%/cli%}} This deploys all the Slate components present in your project directory to the {{%link href="/en/deployment-and-billing/environments/development-environment/" %}}Catalyst development environment{{%/link%}}. You can use the below option to provide a deployment message for the Slate deployment. {{%cli%}}catalyst deploy slate -m "deployment message"{{%/cli%}} To deploy a specific app alone from the project directory to Slate, you can directly use the below command: {{%cli%}}catalyst deploy --only slate:appname{{%/cli%}} If you wish to deploy the application to the production environment, please use the below command. Please ensure you have accessed the production environment in the console before initiating a production deployment. {{%cli%}} catalyst deploy slate --production {{%/cli%}} -------------------------------------------------------------------------------- title: "Deploy Options" description: "Catalyst enables you to easily deploy your project and its resources to the remote console using the CLI." last_updated: "2026-03-18T07:41:08.540Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/deploy-resources/deploy-options/" service: "All Services" -------------------------------------------------------------------------------- # Deploy Options Catalyst CLI enables you to deploy only specific resources, such as just the client package, specific functions, or an AppSail service, using two deploy options. The following options are available for the {{%badge%}}catalyst deploy{{%/badge%}} command. {{%note%}} {{%bold%}}Note:{{%/bold%}} Besides these deploy options, you can also deploy specific resources from your project by navigating to the target folder where the resources are located and executing the {{%badge%}}catalyst deploy{{%/badge%}} command from that folder. This can be used when the deployable resources are all located in the same directory. For example, if you want to deploy a particular function alone, you can navigate to the function's folder in the CLI and run the {{%badge%}}catalyst deploy{{%/badge%}} command.{{%/note%}} ### \--only &lt;targets&gt; The {{%badge%}}-\\-only{{%/badge%}} option allows you to define the specific resources to be deployed. You can use this with {{%badge%}}client{{%/badge%}}, {{%badge%}}functions{{%/badge%}}, {{%badge%}}appsail{{%/badge%}}, {{%badge%}}slate{{%/badge%}}, or {{%badge%}}apig{{%/badge%}} keywords. You can specify multiple resources separated by commas without any whitespace characters between them. For example, to deploy just the client directory, run the following command in your terminal: {{%cli%}} catalyst deploy --only client {{%/cli%}} This initiates the deployment of the client directory alone. The deployment process is the same as discussed in the previous section. <br> You can also deploy specific functions or AppSail services using the {{%badge%}}-\\-only{{%/badge%}} option. You must specify the names of the target functions or the AppSail services in the command separated by commas as shown below: {{%cli%}} catalyst deploy --only functions:InvoiceFetch,functions:CostAccounting {{%/cli%}} <br> You can also deploy the client and certain functions, or an AppSail service and certain functions, alone as shown below: {{%cli%}} catalyst deploy --only functions:InvoiceSync,functions:CostAccounting,functions:FreightTracking {{%/cli%}} <br> This will deploy only the specified resources from the project directory. <br > ### \--except &lt;targets&gt; The {{%badge%}}-\\-except{{%/badge%}} option allows you to define the resources to be excluded from deployment. It will deploy all the resources except for the ones that you specify. For example, if you use the {{%badge%}}-\\-except{{%/badge%}} option with {{%badge%}}client{{%/badge%}}, it will exclude the client package and deploy everything else. You can execute this command in the following way: {{%cli%}} catalyst deploy --except client {{%/cli%}} You can also use this option to exclude specific functions or AppSail services. For example: {{%cli%}} $ catalyst deploy --except appsail:customerapp,functions:CostAccounting {{%/cli%}} This will deploy all the other resources of the project. <br> ### \--ignore-scripts Catalyst enables you to automate the CLI and terminal command executions by defining scripts in the {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}} {{%badge%}}catalyst.json{{%/badge%}} {{%/link%}} file in your project directory. You can define two lifecycle scripts to execute before and after the {{%badge%}}catalyst deploy{{%/badge%}} command respectively: {{%badge%}}predeploy{{%/badge%}}, {{%badge%}}postdeploy{{%/badge%}}. You can learn more about the lifecycle and custom scripts from the {{%link href="/en/cli/v1/scripts/introduction/" %}}Scripts help page{{%/link%}} . If you use the {{%badge%}}-\\-ignore-scripts{{%/badge%}} option while executing the {{%badge%}}catalyst deploy{{%/badge%}} command, the CLI will ignore the actions configured for the {{%badge%}}predeploy{{%/badge%}} and {{%badge%}}postdeploy{{%/badge%}} scripts in the {{%badge%}}catalyst.json{{%/badge%}} file of your project directory. The deployment process will proceed without the execution of these lifecycle scripts. You can use the {{%badge%}}-\\-ignore-scripts{{%/badge%}} option as follows: {{%cli%}} catalyst deploy --ignore-scripts {{%/cli%}} The deployment process will be the same as discussed earlier. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to individually deploy Catalyst functions using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/implementation/#deploy-a-function" %}}here{{%/link%}}, and steps to deploy client resources can be found {{%link href="/en/catalyst-extensions/vs-code-extension/implementation/#deploy-operation" %}}here{{%/link%}}.{{%/note%}} ### Event Generate -------------------------------------------------------------------------------- title: "Introduction" description: "Catalyst enables you to generate sample payloads from various event sources supported by Catalyst Event Listeners using the CLI." last_updated: "2026-03-18T07:41:08.542Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/event-generate/introduction/" service: "All Services" -------------------------------------------------------------------------------- # Event Generate ### Introduction Catalyst enables you to generate sample payloads for events associated with {{%link href="/en/signals/help/publishers/create-publisher/catalyst-publishers/" %}}Catalyst Publishers{{%/link%}} in {{%link href="/en/signals/" %}}Catalyst Signals{{%/link%}} using the CLI. The {{%badge%}}catalyst event:generate{{%/badge%}} command generates sample payloads for Catalyst publihsers in the CLI. You can specify the particular publisher and the action that you require the payload for. You can use the generated payload to test the Event functions in your project from the local environment. In addition to Event functions, you can also generate sample payloads and test the {{%link href="/en/serverless/help/functions/integration-functions/" %}}Integration functions{{%/link%}} in your project. The {{%badge%}}catalyst event:generate:integ{{%/badge%}} command enables you to select the integration service, component source, and handler to generate the payload for. You can then {{%link href="/en/cli/v1/working-with-functions/functions-shell/" %}}launch a Node shell{{%/link%}} from the CLI to test and debug the Event or Integration function, by passing the generated sample payload data to the function. {{%note%}} {{%bold%}}Note:{{%/bold%}} * Both event generation commands in the CLI only generate sample payloads to help you test functions in the local environment. These actions will not be reflected in Signlas, {{%link href="/en/serverless/help/functions/introduction/" %}}Functions{{%/link%}}, or any components that you have configured in your project or in the remote console. They will remain unaffected. * Cliq Integration Functions is currently not available to Catalyst users accessing from the EU, AU, IN, or CA data centers. ConvoKraft Integration Functions are available to users accessing from all DCs. * If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to debug Event, Cron, and Integration functions using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/implementation/#run-or-debug-a-function" %}}here{{%/link%}}. {{%/note%}} -------------------------------------------------------------------------------- title: "Sample Payload for Component Events" description: "Catalyst enables you to generate sample payloads from various event sources supported by Catalyst Event Listeners using the CLI." last_updated: "2026-03-18T07:41:08.542Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/event-generate/sample-payload-component-event/" service: "All Services" -------------------------------------------------------------------------------- # Generate Sample Payload for a Component Event Source {{%note%}}{{%bold%}}Notes:{{%/bold%}} * The Event Listeners component is currently being deprecated. We strongly urge you to migrate to our newer, more robust event bus service, {{%bold%}}Catalyst Signals{{%/bold%}}. {{%link href="/en/signals/help/events/" %}}Learn more about Catalyst Signals{{%/link%}}. * {{%link href="/en/cli/v1/event-generate/sample-payload-catalyst-pub/" %}}Learn payload generation for events sourced by Catalyst Publishers{{%/link%}}.{{%/note%}} ### Payload Generation A {{%link href="/en/cloud-scale/help/event-listeners/component-event-listeners/" %}}component event listener{{%/link%}} listens for a specific event occurring in one of the Catalyst components, then triggers the associated target function and passes the component data to it. It is already created by default in a project. You can obtain sample data of the same pattern in the CLI, for the source and the action you require. The general command to generate a sample payload of an event in the CLI is: {{%cli%}} catalyst event:generate|generate:event [options] &lt;source&gt; &lt;action&gt; {{%/cli%}} <br> You can provide any of the sources and associated actions of a Catalyst component event, in the command shown in the table below: <table class="content-table"> <thead> <tr> <th class="w30p"><strong>Source</strong></th> <th class="w30p"><strong>Action</strong></th> <th class="w40p"><strong>Optional Inputs</strong></th> </tr> </thead> <tbody> <tr> <td><span class="badge">datastore</span></td> <td><span class="badge">Insert</span> <span class="badge">Update</span> <span class="badge">Delete</span></td> <td><span class="badge">--table &lt;table_name_or_id&gt;</span></td> </tr> <tr> <td><span class="badge">cache</span></td> <td><span class="badge">Put</span></td> <td><span class="badge">--segment &lt;segment_name_or_id&gt;</span></td> </tr> <tr> <td><span class="badge">user</span></td> <td><span class="badge">SignUp</span> <span class="badge">Delete</span></td> <td>NA</td> </tr> <tr> <td><span class="badge">filestore</span></td> <td><span class="badge">Upload</span></td> <td><span class="badge">--folder &lt;folder_name_or_id&gt;</span></td> </tr> <tr> <td><span class="badge">webapp</span></td> <td><span class="badge">Success</span></td> <td>NA</td> </tr> <tr> <td><span class="badge">github</span></td> <td><span class="badge">Success</span> <span class="badge">Failure</span></td> <td>NA</td> </tr> </tbody> </table> <br> For example, to generate a sample payload for a Data Store Insert event, execute the following command: {{%cli%}} catalyst event:generate|generate:event datastore Insert {{%/cli%}} <br> This will generate the following JSON payload for this source and action. The payload will contain the actual details of your project, the default event bus details, and sample entity details. You can pass this data to an event function through the functions shell, and test it as per your requirements. <br> You can also directly save the JSON payload into a file instead of displaying it in the CLI, by creating a file for it in the path you require like: {{%cli%}} catalyst event:generate|generate:event user Signup>>payload.json {{%/cli%}} <br> ### Optional Inputs In addition to the mandatory source and action pair, you can also supply optional inputs about the entity source, as shown in the table. For example, if you specify the table name or ID while generating the sample payload for a Data Store insert operation, Catalyst will check your remote project for a table with that name or ID. If the entity exists, the CLI will display the data of that table in the JSON payload. If you do not provide any optional inputs, or if there are no entities to be found matching your inputs, the CLI will generate the JSON payload with random sample data. <br> For example, to generate a sample payload for a cache put event in an existing segment configured in the remote console, the following command is executed: {{%cli%}} catalyst event:generate|generate:event cache Put --segment &lt;segment_name_or_id&gt; {{%/cli%}} <br> Catalyst checks for a segment of that name or ID. If it exists, it will generate the payload including that segment's data. The Segment ID that was passed is specified as the value for {{%badge%}}source\_entity\_id{{%/badge%}} in the example shown below. <br /> ### Component Event Generation Options The {{%badge%}}catalyst event:generate{{%/badge%}} command supports two options that you can use it with. However, only one of those options is applicable when you generate a sample payload of a component event source. <br> #### -e | -\-event-bus <event\_bus\_name> The {{%badge%}}-\\-event-bus{{%/badge%}} or {{%badge%}}\-e{{%/badge%}} option enables you to specify the name of the event bus that must be used in the sample payload. You can use this while generating the payload of any source or action. The {{%badge%}}event\_bus\_details{{%/badge%}} JSON will contain the name that you pass as the bus's name. If you do not specify the event bus name, the bus name will be 'Default' in a component event's payload. <br> For example, to generate the payload of a cache put event and to specify the event bus name with it, execute the following command: {{%cli%}} catalyst event:generate|generate:event cache Put --event-bus TrackerRequests {{%/cli%}} <br> This will generate the payload and include the event bus name in {{%badge%}}event\_bus\_details{{%/badge%}} . We will discuss the available options in the context of a custom event source in the next section. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to debug your event functions using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/implementation/#run-or-debug-a-function" %}}here{{%/link%}}.{{%/note%}} -------------------------------------------------------------------------------- title: "Sample Payload for Custom Events" description: "Catalyst enables you to generate sample payloads from various event sources supported by Catalyst Event Listeners using the CLI." last_updated: "2026-03-18T07:41:08.542Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/event-generate/sample-payload-custom-event/" service: "All Services" -------------------------------------------------------------------------------- # Generate Sample Payload for a Custom Event Source {{%note%}}{{%bold%}}Notes:{{%/bold%}} * The Event Listeners component is currently being deprecated. We strongly urge you to migrate to our newer, more robust event bus service, {{%bold%}}Catalyst Signals{{%/bold%}}. {{%link href="/en/signals/help/events/" %}}Learn more about Catalyst Signals{{%/link%}}. * {{%link href="/en/cli/v1/event-generate/sample-payload-catalyst-pub/" %}}Learn payload generation for events sourced by Catalyst Publishers{{%/link%}}.{{%/note%}} ### Payload Generation A {{%link href="/en/cloud-scale/help/event-listeners/custom-event-listeners/" %}}custom event listener{{%/link%}} is used to pass data to a target function whenever its URL is invoked by the end user. Custom event listeners can contain multiple rules, which can be associated with different target functions. All rules of a custom event listener have the same URL endpoint, but each rule will contain a unique {{%bold%}}rule identifier{{%/bold%}} variable that you can configure while creating it. This allows you to indicate the specific rule to invoke. {{%note%}} {{%bold%}}Note:{{%/bold%}} Custom event listeners do not exist in a project by default. You must therefore first create a custom event listener in your project from the remote console, to generate a sample payload for it. However, you don't need to create any rules in it for this purpose. You can create a rule in the CLI for testing purposes while generating the sample payload. This will not be reflected in the custom event listener configured in the console.{{%/note%}} <br> You can generate a sample payload for a custom event by executing this same command: {{%cli%}} catalyst event:generate|generate:event [options] &lt;source&gt; &lt;action&gt; {{%/cli%}} <br> However, Catalyst only accepts the following values for source and action for a custom event source: <table class="content-table"> <thead> <tr> <th><strong>Source</strong></th> <th><strong>Action</strong></th> </tr> </thead> <tbody> <tr> <td><span class="badge">custom</span></td> <td><span class="badge">Produce</span></td> </tr> </tbody> </table> <br> ### Mandatory Command Options You must also use these options {{%bold%}}mandatorily{{%/bold%}} while generating a sample payload for a custom event: <br> #### -e | -\-event-bus <event\_bus\_name> The {{%badge%}}\--event-bus{{%/badge%}} option performs the same action as discussed in the previous section. It enables you to specify the name of the event bus that must be used in the sample payload. The {{%badge%}}event\_bus\_details{{%/badge%}} JSON will contain the name that you pass as the bus's name. <br> #### -rid | -\-rule-id <rule\_identifier> The {{%badge%}}\--rule-id{{%/badge%}} option enables you to specify the rule identifier that must be used in the custom event payload. As mentioned earlier, a rule identifier uniquely identifies a rule in a custom event bus. The {{%badge%}}data{{%/badge%}} field in the JSON will contain the rule identifier. You can generate a sample payload for a custom event, and pass the event bus name and rule identifier by executing the following command: {{%cli%}} catalyst event:generate|generate:event custom Produce --event-bus TrackerRequests --rule-id DomesticTracking {{%/cli%}} <br> This will generate the following JSON payload. The payload will contain the details of your project, event bus, and rule identifier details you provided, as well as other sample data. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to debug your event functions using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/implementation/#run-or-debug-a-function" %}}here{{%/link%}}.{{%/note%}} -------------------------------------------------------------------------------- title: "Sample Payload for Integration Functions" description: "Catalyst enables you to generate sample payloads from various event sources supported by Catalyst Event Listeners using the CLI." last_updated: "2026-03-18T07:41:08.542Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/event-generate/sample-payload-integration-functions/" service: "All Services" -------------------------------------------------------------------------------- # Generate Sample Payload to Test Integration Functions ### Payload Generation {{%link href="/en/serverless/help/functions/integration-functions/" %}}Integration functions{{%/link%}} enable you to code and use a Catalyst function as the backend of other Zoho services, and establish an integration with them. Catalyst currently supports integration with {{%link href="https://www.zoho.com/in/cliq/" %}}Zoho Cliq{{%/link%}} and {{%link href="/en/convokraft/help/actions/bot-logic/catalyst-integration-functions/" %}}ConvoKraft Bot Logic{{%/link%}} through Integration functions. You can develop the backend of {{%link href="https://www.zoho.com/cliq/help/platform/getting-started-with-cliq-platform.html" %}}Cliq extensions{{%/link%}} that bundle bots, commands, message actions, widgets, and functions through Integration functions. The CLI enables you to generate sample payloads for various handlers in each of these tools. {{%note%}}{{%bold%}}Note:{{%/bold%}} Cliq Integration Functions is currently not available to Catalyst users accessing from the EU, AU, IN, or CA data centers. ConvoKraft Integration Functions are available to users accessing from all DCs.{{%/note%}} <br> The general command to generate a sample payload to test an Integration function in the CLI is: {{%cli%}} catalyst event:generate:integ [options] &lt;service&gt; {{%/cli%}} Because Catalyst only supports integrations with Cliq currently, you must provide the following value for as the service: {{%badge%}} {{%bold%}}ZohoCliq{{%/bold%}} {{%/badge%}}. <br> Catalyst supports the following Cliq components and handler classes that you can generate a sample payload for, in the CLI. <table class="content-table"> <thead> <tr> <th>Component</th> <th>Handler Classes</th> </tr> </thead> <tbody> <tr> <td><span class="badge">bot</span></td> <td><span class="badge">welcome_handler</span><br><span class="badge">message_handler</span> <br><span class="badge">context_handler</span> <br><span class="badge">mention_handler</span><br><span class="badge">action_handler</span><br> <span class="badge">incomingwebhook_handler</span><br> <span class="badge">participation_handler</span></td> </tr> <tr> <td><span class="badge">command</span></td> <td><span class="badge">execution_handler</span> <br><span class="badge">suggestion_handler</span></td> </tr> <tr> <td><span class="badge">messageaction</span></td> <td><span class="badge">execution_handler</span></td> </tr> <tr> <td><span class="badge">widget</span></td> <td><span class="badge">view_handler</span></td> </tr> <tr> <td><span class="badge">function</span></td> <td><span class="badge">button_handler</span> <br><span class="badge">form_handler</span> <br><span class="badge">form_change_handler</span> <br><span class="badge">form_values_handler</span> <br><span class="badge">widget_button_handler</span></td> </tr> <tr> <td><span class="badge">installation</span></td> <td><span class="badge">installation_handler installation_validator</span></td> </tr> </tbody> </table> <br> 1. Execute the following command to select the component and a handler class to generate the payload for: {{%cli%}} catalyst event:generate:integ ZohoCliq {{%/cli%}} <br> 2. Select a component from the list and press {{%bold%}}Enter{{%/bold%}} .<br /> <br> 3. Select a handler class from the list and press {{%bold%}}Enter{{%/bold%}} .<br /> <br> The CLI will generate a sample JSON payload for that component and handler source. Depending on the component, the payload will contain relevant data. You can also directly save the JSON payload into a file instead of displaying it in the CLI. <br> ### Integration Functions Event Generation Options <br> #### \--inputs &lt;inputs&gt; You can generate a sample payload to test Integration functions by directly specifying the component and the handler you require the data for. The inputs must be specified in the following format: {{%cli%}} catalyst event:generate:integ ZohoCliq --inputs component,handler {{%/cli%}} <br> For example, to generate a sample payload for a {{%badge%}}form\_handler{{%/badge%}} class for the {{%badge%}}function{{%/badge%}} component, execute the following command: {{%cli%}} catalyst event:generate:integ ZohoCliq --inputs function,form_handler {{%/cli%}} <br> This will generate the following JSON payload. Refer to the table shown above for a list of Cliq components and handler classes supported by Catalyst.<br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to debug your event functions using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/implementation/#run-or-debug-a-function" %}}here{{%/link%}}.{{%/note%}} ### Export and Import Projects -------------------------------------------------------------------------------- title: "Introduction" description: "Catalyst enables you to export a project including its configurations and code as a ZIP file, and import the ZIP file into any new project." last_updated: "2026-03-18T07:41:08.543Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/export-and-import-projects/introduction/" service: "All Services" -------------------------------------------------------------------------------- # Export and Import Projects ### Introduction Catalyst CLI provides the ability to perform IaC project export and import operations from the local environment. You can export a {{%link href="/en/getting-started/catalyst-projects/" %}}Catalyst project{{%/link%}}, including the configurations of its components and its code, as an external ZIP file. You can then import the ZIP file as a new project into any Catalyst account. A project export is done from its {{%link href="/en/cli/v1/project-directory-structure/introduction/" %}}active project directory{{%/link%}} in the local environment. When you export a project, the export ZIP file is created in a specific format in the same directory. You can only import a project if this ZIP file is in this standard format. The CLI also enables you to directly import any project from a local directory without having to export it first, through a pack command which generates an import-ready ZIP file. The project export and import feature enables easy transfers of projects between data centers or between Catalyst accounts. It also enables easy access and testing of a project from an external environment, such as a GitHub repository. You can simply clone a Git repo containing a Catalyst project's components, generate its ZIP file to import it, and easily test the project. You can also easily perform these actions through a remote system, such as a CI system, or write scripts to automate these tasks. Catalyst also provides you the option to import a project to just the Catalyst remote console, or to both the remote console and the local environment. {{%note%}} {{%bold%}}Note:{{%/bold%}} You can also perform the IaC project export and import operations from the {{%italics%}}General Settings{{%/italics%}} in the remote console. You can learn about it from the {{%bold class="primary"%}}{{%link href="/en/getting-started/set-up-a-catalyst-project/iac-settings/" %}} IaC Settings help page {{%/link%}}{{%/bold%}}.{{%/note%}} -------------------------------------------------------------------------------- title: "Export/Import ZIP File Format" description: "Catalyst enables you to export a project including its configurations and code as a ZIP file, and import the ZIP file into any new project." last_updated: "2026-03-18T07:41:08.543Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/export-and-import-projects/export-import-zip-file/" service: "All Services" -------------------------------------------------------------------------------- # Export/Import ZIP File Format ### Components of the ZIP File Catalyst enables you to export or import the schemas and configurations of a project, along with its {{%link href="/en/serverless/help/functions/introduction/" %}}functions{{%/link%}} and client code, without the data. Data, such as the records in the Data Store tables, the list of the application's users, or files from the File Store, will not be included in the ZIP file. The ZIP file that is created when a project is exported from its local directory contains the following components. * {{%bold%}}ZIP File of the Functions Directory:{{%/bold%}} The export ZIP will contain the {{%link href="/en/cli/v1/project-directory-structure/functions-directory/" %}} functions directory{{%/link%}} of the project in its standard structure. All functions that were initialized in the project directory will be present as individual ZIP files, with their configuration files and SDK components. * {{%bold%}}ZIP File of the Client Directory:{{%/bold%}} The export ZIP will also include the {{%link href="/en/cli/v1/project-directory-structure/client-directory/" %}} client directory{{%/link%}} of the project. The web client that was initialized in the project, with all the client files, will be present as a ZIP file in the {{%badge%}}webclient{{%/badge%}} folder. * {{%bold%}}Project-Template JSON File:{{%/bold%}} The configurations of the project's components will be present in a single JSON file in the export ZIP file. The JSON file contains the definitions of the project and component settings. These configurations include Data Store and File Store schemas and meta data, Cache segments, Cron jobs, Circuit configurations, Security rules, email domains and addresses, Event Listeners and rules, APIs in API Gateway, email templates, user profiles, and more.<br /> <br /> An extract from a sample project-template JSON is given below: {{%code class="language-json line-numbers"%}}{ "name" : "project-template", "version" : "1.0.0", "parameters" : { }, "components" : { "Circuits" : [ { "type" : "circuit", "name" : "InvoiceGen", "properties" : { "name" : "InvoiceGen", "states" : { "State1" : { "next" : "End", "start" : true, "type" : "pass" } } }, "dependsOn" : [ ] } ], "Functions" : [ { "type" : "function", "name" : "warehouseportal", "properties" : { "stack" : "node14", "code" : { "path" : "functions/warehouseportal.zip" }, "configuration" : { "memory" : 256 }, "type" : "basicio", "name" : "warehouseportal" }, "dependsOn" : [ ] } ], "WebClient" : [ { "type" : "client", "name" : "warehousePortal", "properties" : { "app_name" : "warehousePortal", "code" : { "path" : "webclient/warehousePortal.zip" } }, "dependsOn" : [ ] } ], "Cron" : [ { "type" : "cron", "name" : "dailyBackup", "properties" : { "cron_url_details" : { "headers" : { }, "request_body" : "", "request_method" : "POST", "params" : { }, "url" : "https://catalyst.zoho.com/help/index.html" }, "end_time" : -1, "description" : "", "cron_name" : "dailyBackup", "job_detail" : { "hour" : 1, "timezone" : "America/Los_Angeles", "minute" : 0, "second" : 0, "repetition_type" : "Daily" }, "cron_type" : "Calendar", "status" : true }, "dependsOn" : [ ] } ], "Datastore" : [ { "type" : "table", "name" : "InventoryDB", "properties" : { "table_name" : "InventoryDB" }, "dependsOn" : [ ] }, { "type" : "column", "name" : "InventoryDB-ProductID", "properties" : { "decimal_digits" : 2, "column_name" : "ProductID", "data_type" : "int", "is_unique" : false, "is_mandatory" : false, "search_index_enabled" : false, "table_id" : "InventoryDB", "table_name" : "InventoryDB", "max_length" : 10 }, "dependsOn" : [ "Datastore.table.InventoryDB" ] }, { "type" : "tableScope", "name" : "InventoryDB-App Administrator", "properties" : { "role_name" : "App Administrator", "table_scope" : "GLOBAL", "type" : "App Administrator", "table_name" : "InventoryDB" }, "dependsOn" : [ "Datastore.table.InventoryDB" ] }, { "type" : "tableScope", "name" : "InventoryDB-App User", "properties" : { "role_name" : "App User", "table_scope" : "GLOBAL", "type" : "App User", "table_name" : "InventoryDB" }, "dependsOn" : [ "Datastore.table.InventoryDB" ] }, { "type" : "tablePermission", "name" : "InventoryDB-App Administrator", "properties" : { "role_name" : "App Administrator", "type" : "App Administrator", "table_permissions" : [ "SELECT", "UPDATE", "INSERT", "DELETE" ], "table_name" : "InventoryDB" }, "dependsOn" : [ "Datastore.table.InventoryDB" ] }, { "type" : "tablePermission", "name" : "InventoryDB-App User", "properties" : { "role_name" : "App User", "type" : "App User", "table_permissions" : [ "SELECT" ], "table_name" : "InventoryDB" }, "dependsOn" : [ "Datastore.table.InventoryDB" ] }] } } {{%/code%}} {{%note%}} {{%bold%}}Note:{{%/bold%}} * Catalyst will not be able to import a project if the ZIP file does not contain the project-template JSON file. This is a mandatory file that defines the project's configurations. * Currently, the only way to generate the JSON file of a Catalyst project is by exporting it. You will not be able to generate it manually. The update to directly generate a project's JSON will be rolled out soon. {{%/note%}} -------------------------------------------------------------------------------- title: "Export Project" description: "Catalyst enables you to export a project including its configurations and code as a ZIP file, and import the ZIP file into any new project." last_updated: "2026-03-18T07:41:08.543Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/export-and-import-projects/export-project/" service: "All Services" -------------------------------------------------------------------------------- # Export Project ### Command Execution When you export a project present in the local directory, the CLI will fetch the project's component configurations from the remote console. If no components have been configured, the default configurations will be written to the project-template JSON file. {{%note%}} {{%bold%}}Note:{{%/bold%}} * The project must be mandatorily available in the remote console to be exported. * If the console contains updated functions or client code that are not present in the local directory, they will be fetched automatically. {{%/note%}} <br> 1. To export a project associated with a Catalyst project directory in your local system, execute the following command from the directory in your terminal: {{%cli%}} catalyst iac:export {{%/cli%}} This will initiate the export job. Catalyst will assign a unique {{%bold%}}Job ID{{%/bold%}} to the export operation. You can use this Job ID to {{%link href="/en/cli/v1/export-and-import-projects/export-import-job-status/" %}}check the status{{%/link%}} of the job at any time. <br> 2. After the export job is complete, the CLI will prompt you for the export ZIP file download. Press {{%bold%}}Y{{%/bold%}} , then press {{%bold%}}Enter{{%/bold%}} to download the ZIP into your project directory. The ZIP file will be available in the home directory of your project directory in the {{%link href="/en/cli/v1/export-and-import-projects/export-import-zip-file/" %}}standard format{{%/link%}} as discussed in the previous section, along with the {{%badge%}}functions{{%/badge%}} and {{%badge%}}client{{%/badge%}} directories, and the {{%badge%}} {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}catalyst.json{{%/link%}} {{%/badge%}} file. {{%note%}} {{%bold%}}Note:{{%/bold%}} You can export a project that is not associated with the current directory the command is being executed from, by using the {{%badge%}}{{%link href="/en/cli/v1/cli-options/#-p----project-name_or_project_id" %}}\--project <name\_or\_project\_id>{{%/link%}}{{%/badge%}} option.{{%/note%}} <br> ### Export Project Options #### \--production You can export the {{%link href="/en/deployment-and-billing/environments/introduction/" %}}production environment{{%/link%}} of a project directly, instead of its development environment which is the default for all CLI actions. This can be done by pointing to the production environment using the {{%badge%}}\--production{{%/badge%}} option while executing the command from the project directory like this: {{%cli%}} catalyst iac:export --production {{%/cli%}} This will export the configurations of the project from its production environment in the same manner as discussed in the previous section. -------------------------------------------------------------------------------- title: "Import Project" description: "Catalyst enables you to export a project including its configurations and code as a ZIP file, and import the ZIP file into any new project." last_updated: "2026-03-18T07:41:08.543Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/export-and-import-projects/import-project/" service: "All Services" -------------------------------------------------------------------------------- # Import Project ### Introduction The import project option allows you to import a new Catalyst project. Catalyst will create and configure the project based on the source ZIP file. It will configure each component based on the definitions specified in the project-template JSON, and the functions and client code will be populated in the project. As mentioned in the Introduction, you can import a project in two different ways: * {{%bold%}}IaC Import:{{%/bold%}} Executing the IaC import command will only import the project in the remote console. A new project will be created and configured in the console based on the source ZIP file. You will not be able to find this project in the local directory. * {{%bold%}}Import through Initialization:{{%/bold%}} You can also import a project while {{%link href="/en/cli/v1/initialize-resources/introduction/" %}}initializing a new project{{%/link%}} from the CLI. This will perform the same actions as a project initialization, i.e., the project will be imported in both the Catalyst remote console and in the local environment. You will find a new project created and configured in the console based on the ZIP file. The project-template JSON file, and the function and client code will be available in the local directory as well. Every other feature of the import operation will be the same in both cases. <br> Some important points to remember: * The source ZIP file containing the project definitions, and the functions and client code must be in the {{%link href="/en/cli/v1/export-and-import-projects/export-import-zip-file/" %}}standard format{{%/link%}} to be imported, as discussed earlier. * The project-template JSON file must be present in the root of the ZIP file. A project cannot be imported without this file. The {{%badge%}}functions{{%/badge%}} or {{%badge%}}client{{%/badge%}} directories, or the {{%badge%}} {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}catalyst.json{{%/link%}} {{%/badge%}} configuration file are not mandatory. * You can always pack any existing Catalyst project directory and generate an import-ready ZIP file using the {{%badge%}} {{%link href="/en/cli/v1/export-and-import-projects/generate-zip-file/" %}}catalyst iac:pack{{%/link%}} {{%/badge%}} command. {{%note%}} {{%bold%}}Note:{{%/bold%}} You will not be able to import a project directly into the production environment.{{%/note%}} <br> ### IaC Import 1. To import a new project through the IaC import method, create and navigate to a new directory for the Catalyst project in your terminal, then execute this command from the directory: {{%cli%}} catalyst iac:import {{%/cli%}} <br> 2. Provide a name for the new project, then press {{%bold%}}Enter{{%/bold%}} .<br /> <br> 3. Catalyst will check the directory you executed the command from for ZIP files, and will ask you to select a ZIP file from the available ones as the project source.<br /> If there are no ZIP files present in the directory, you can provide the path to the source ZIP file to be imported. <br> 4. The CLI will redirect you to a browser window to confirm the user login session briefly, and the import job will be initiated. You can close the browser window and return to the terminal.<br /> <br> Catalyst will assign a unique Job ID to the import operation. You can use this {{%bold%}}Job ID{{%/bold%}} to {{%link href="/en/cli/v1/export-and-import-projects/export-import-job-status/" %}}check the status{{%/link%}} of the job at any time. <br> After the import job is complete, the CLI will display its status. If the import is successful, you will find a new project created in your Catalyst remote console with the components, functions, and client configured based on the ZIP file. You can always {{%link href="/en/cli/v1/pull-resources/introduction/" %}}pull the resources{{%/link%}} to the local environment from the console, to fetch the project in the local environment. Pulling the project will only fetch the functions, client, and API Gateway rules. It will not fetch any component configurations. <br> ### Import Project Options #### \--name You can directly provide a name for the project while importing a project, using the {{%badge%}}-\\-name{{%/badge%}} option with the import command in the following way: {{%cli%}} catalyst iac:import --name &lt;project_name&gt; {{%/cli%}} Provide a name for the project to be created by the import job with the {{%badge%}}-\\-name{{%/badge%}} option. The CLI will then ask you to choose a ZIP file in the directory or provide a path to the source file, as discussed above. <br> ### Import through Initialization 1. To import a project during the project initialization, execute the {{%link href="/en/cli/v1/initialize-resources/initialize-new-project/" %}}project initialization{{%/link%}} command from a new directory created for the project: {{%cli%}} catalyst init {{%/cli%}} <br> 2. Select "{{%bold%}}Import an existing project{{%/bold%}} " from the list of projects to associate the directory with.<br /> <br> 3. Provide a name for the project, then select a source ZIP file or provide a path to it to import, as discussed in the {{%link href="/en/cli/v1/export-and-import-projects/import-project/#iac-import"%}}IaC project import section{{%/link%}}. The process will be the same.<br /> Catalyst will assign a unique {{%bold%}}Job ID{{%/bold%}} to the import operation after it is initiated. After the import job is complete, you can find the project created and configured in the remote console, as well as in the local directory. <br> Because this imports the project in the local directory, the {{%badge%}} {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}catalyst.json{{%/link%}} {{%/badge%}} and the {{%badge%}}.catalystrc{{%/badge%}} configuration files will be created with the project details. The project directory will also contain the {{%badge%}}functions{{%/badge%}} and the {{%badge%}}client{{%/badge%}} directories, if they were present in the ZIP file, and the project-template JSON file. -------------------------------------------------------------------------------- title: "Generate an Import-Ready ZIP File" description: "Catalyst enables you to export a project including its configurations and code as a ZIP file, and import the ZIP file into any new project." last_updated: "2026-03-18T07:41:08.543Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/export-and-import-projects/generate-zip-file/" service: "All Services" -------------------------------------------------------------------------------- # Generate an Import-Ready ZIP File ### Introduction Catalyst enables you to directly import any project from a local directory without having to export it first. This means that you need not have an import-ready ZIP file already present in your local system to import a project. You can generate an import-ready ZIP file in the {{%link href="/en/cli/v1/export-and-import-projects/export-import-zip-file/" %}}standard format{{%/link%}} in an existing Catalyst project directory automatically, by executing this command. You can then provide the path to this ZIP file while importing the project. This saves you the effort from verifying if all files and sub-directories are present in the required format, and compressing each function folder or the client directory manually to prepare a source ZIP file to import. {{%note%}} {{%bold%}}Note:{{%/bold%}} As the import operation requires the project-template JSON file, it must be mandatorily present in the directory the pack command is executed from. The functions or client directories, or the {{%badge%}} {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}catalyst.json{{%/link%}} {{%/badge%}} configuration file are not mandatory.{{%/note%}} <br> ### IaC Pack You can pack a Catalyst project and generate its ZIP file in the standard format, by executing the following command from the project directory: {{%cli%}} catalyst iac:pack {{%/cli%}} This will create the ZIP file in the same directory. You can also provide a name of your choice to the ZIP file by specifying the name following the command as shown below. <br /> -------------------------------------------------------------------------------- title: "Obtain an Export or Import Job Status" description: "Catalyst enables you to export a project including its configurations and code as a ZIP file, and import the ZIP file into any new project." last_updated: "2026-03-18T07:41:08.543Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/export-and-import-projects/export-import-job-status/" service: "All Services" -------------------------------------------------------------------------------- # Obtain an Export or Import Job Status ### Obtain Status If an export or an import job is being processed, or was recently processed, in a project directory, you can fetch the status of the job. To fetch the status of an export or import job, execute the following command from that directory: {{%cli%}} catalyst iac:status export|import {{%/cli%}} The CLI will display the status of the export or import job processed in that directory. <br> ### Job Status Options #### \--id &lt;id&gt; You can fetch the status of a specific import or export job executed in any directory, by specifying the unique Job ID that was generated automatically when the job was initiated. Both export and import operations generate Job IDs. To fetch the status of any export or import job, specify the Job ID with the command in the following way: {{%cli%}} catalyst iac:status export|import --id &lt;id&gt; {{%/cli%}} The CLI will display the job's status. ### Initialize Resources -------------------------------------------------------------------------------- title: "Introduction" description: "You can initialize a Catalyst project and project resources such as functions, client, and AppSail from the CLI" last_updated: "2026-03-18T07:41:08.543Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/initialize-resources/introduction/" service: "All Services" -------------------------------------------------------------------------------- # Initialize Resources ### Introduction The first step in working with the Catalyst CLI is initializing a {{%link href="/en/getting-started/catalyst-projects/" %}}Catalyst project{{%/link%}} in a directory in your local system and associating that directory with that project. You cannot perform any project-related operations in the CLI until you have initialized a Catalyst project. The directory that you initialize a project in is referred to as the project directory. The required configuration files for your project are created automatically when the project is initialized. You can initialize four basic components of a Catalyst project: {{%bold%}}{{%link href="/en/serverless/help/functions/introduction/"%}}Functions{{%/link%}}{{%/bold%}}, {{%bold%}}{{%link href="/en/cloud-scale/help/web-client-hosting/introduction/" %}}Client{{%/link%}}{{%/bold%}}, {{%bold%}}{{%link href="/en/serverless/help/appsail/introduction/"%}}AppSail{{%/link%}}{{%/bold%}}, and {{%bold%}}{{%link href="/en/slate/" %}}Slate{{%/link%}}{{%/bold%}}. The directories of the components that you initialize are created automatically, along with required configuration files and dependencies. For detailed information on the project directory structure and the code structures of the configuration files, refer to the {{%link href="/en/cli/v1/project-directory-structure/introduction/" %}} **Project Directory Structure help** {{%/link%}} page. {{%note%}} {{%bold%}}Note:{{%/bold%}} You can also pull a JSON file that contains the API definitions of API Gateway from the remote console, into your project directory. Refer to the {{%link href="/en/cli/v1/working-with-api-gateway/introduction/" %}}Working with API Gateway help page{{%/link%}} to learn more.{{%/note%}} <br> After the initialization process is complete, this directory will be permanently bound to that project. Although you can use the directory to work with other projects using the {{%badge%}} {{%link href="/en/cli/v1/working-with-projects/use-catalyst-project/" %}}catalyst project:use{{%/link%}} {{%/badge%}} command, this association will only be temporary. The project that you originally initialize in a directory will be considered to be the base project of that directory. {{%note%}} {{%bold%}}Note:{{%/bold%}} * You will not be able to initialize a project in a directory whose root is already bound to another project. When a project is initialized in a directory, the CLI performs a check for Catalyst components beginning with the directory's root. If any components are found in the root, the CLI will not initialize a new project in it. * The best way to initialize a new project is to create an individual folder for it in your local system, navigate to it, and execute the initialize command from that directory. * If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to initialize your Catalyst project using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/implementation/#initialize-your-catalyst-project" %}}here{{%/link%}} {{%/note%}} -------------------------------------------------------------------------------- title: "Initialize a new Project" description: "You can initialize a Catalyst project and project resources such as functions, client, and AppSail from the CLI" last_updated: "2026-03-18T07:41:08.543Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/initialize-resources/initialize-new-project/" service: "All Services" -------------------------------------------------------------------------------- # Initialize a New Project You can initialize a project, and then the functions, client, and an AppSail app as explained in these sections. To initialize a new project from the CLI: 1. Create a folder for the project on your local machine and navigate to it from the terminal. Initialize a project by executing the following command from that directory: {{%cli%}} catalyst init {{%/cli%}} 2. Select an organization for you to create the project in. You can create and work with {{%link href="/en/getting-started/catalyst-organizations/"%}}multiple organizations{{%/link%}} in Catalyst, and create projects in each. 3. You can associate the current project directory with an existing Catalyst project in this organization. You can also create your own new project directly from the CLI or {{%link href="/en/cli/v1/export-and-import-projects/introduction/" %}}import an existing project{{%/link%}} in this organization. <br /> * To select an existing Catalyst project from this org, select from the list of your projects using the arrows. Press {{%bold%}}Enter{{%/bold%}} to confirm. {{%note%}} {{%bold%}}Note:{{%/bold%}} You can run the command {{%badge%}} {{%link href="/en/cli/v1/working-with-projects/use-catalyst-project/" %}}catalyst project:use{{%/link%}} {{%/badge%}} to associate an existing project, that has previously been initialized in the CLI, with the working directory.{{%/note%}} * To create a new project, navigate to the {{%bold%}}Create a new project{{%/bold%}} option and press {{%bold%}}Enter{{%/bold%}}. You will be re-directed to the Catalyst console to create a new project. You can provide a name for the project and click **Create**. * To import an existing project, you must select {{%bold%}}Import an existing project{{%/bold%}} , then select the project source ZIP file. You can learn more about these steps from the {{%link href="/en/cli/v1/export-and-import-projects/import-project/#import-through-initialization" %}}Export and Import Project help page{{%/link%}}. {{%note%}} {{%bold%}}Note:{{%/bold%}} * You cannot create your first ever Catalyst project from the CLI. You can create the first project only {{%link href="/en/getting-started/catalyst-projects/#creating-a-catalyst-project" %}}using the Catalyst web console{{%/link%}}. You can create subsequent projects from the CLI. * You can create upto 50 projects in your account. You can request Catalyst for an increase in this limit by contacting our support at support@zohocatalyst.com. We will address each request on a case-by-case basis. {{%/note%}} <br> 4. Now, select the components that you need to set up for your Catalyst application by pressing {{%bold%}}Space{{%/bold%}} to select the features. Press {{%bold%}}Enter{{%/bold%}} to confirm your choices. You can initialize any of these components: Functions, Client, AppSail. <br /> <br> {{%note%}} {{%bold%}}Note:{{%/bold%}} * You can also initialize a project without selecting any components. Since the main purpose of a project initialization is to bind the directory to a particular project, it is not mandatory to initialize any of its components. In this case, a project folder will be created with just the {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}} {{%badge%}}catalyst.json{{%/badge%}}{{%/link%}} and {{%badge%}}.catalystrc{{%/badge%}} files in it. * If you do not initialize a particular component while initializing the project, you can always set it up later at any time after the project is initialized. To learn more, refer to the {{%link href="/en/cli/v1/working-with-the-client/introduction/" %}}client setup{{%/link%}}, {{%link href="/en/cli/v1/working-with-functions/introduction/" %}}functions setup{{%/link%}}, and {{%link href="/en/cli/v1/add-appsail/" %}}AppSail add{{%/link%}} help sections. {{%/note%}} <br> The project will be created with a unique {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/" %}}project ID{{%/link%}} . The {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}{{%badge%}}catalyst.json{{%/badge%}} {{%/link%}} file and the {{%badge%}}.catalystrc{{%/badge%}} hidden file containing your project details will be created in the project directory. The Catalyst project directory will include {{%link href="/en/cli/v1/project-directory-structure/introduction/" %}} directories, files, and dependencies{{%/link%}} based of all the components you initialized. The image below shows a sample project directory if a Java function and a basic client component were initialized in the project. {{%note%}} {{%bold%}}Note:{{%/bold%}} * If you're initializing resources in an existing project directory, the CLI will skip the steps to associate a project with the directory. * If you are initializing a component that is already present in the project directory, the CLI will display a message asking if the folder should be overwritten. You can press {{%bold%}}Y{{%/bold%}} to overwrite the existing directory or {{%bold%}}N{{%/bold%}} to skip the creation of the directory and then press {{%bold%}}Enter{{%/bold%}}. * You can auto-fill queries with the default values if you press {{%bold%}}Enter{{%/bold%}}. * If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to initialize your Catalyst project using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/implementation/#initialize-your-catalyst-project" %}}here{{%/link%}}. {{%/note%}} -------------------------------------------------------------------------------- title: "Initialize Functions" description: "You can initialize a Catalyst project and project resources such as functions, client, and AppSail from the CLI" last_updated: "2026-03-18T07:41:08.543Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/initialize-resources/initialize-functions/" service: "All Services" -------------------------------------------------------------------------------- # Initialize Functions ### Set up Function Type If you choose to initialize the Functions directory for your project, Catalyst will initiate its setup process. 1. Select the type of function you would like to develop. Make your selection and press {{%bold%}}Enter{{%/bold%}} .<br /> The six types of functions that you can develop in Catalyst are: Basic I/O, Advanced I/O, Event, Cron, Browser Logic, Integration, and Browser Logic functions. To learn more about the function types and their purposes, refer to the {{%link href="/en/serverless/help/functions/basic-io/" %}} **Functions help page.** {{%/link%}} <br> **Integration Functions:** <br> The CLI initialization process is the same for all the other function types, except the Integration functions. If you select _Integration_ from the list, you have to perform these two extra steps before moving on to the next step:<br /> **i.** Select the service that you want to integrate with. You can currently only select {{%bold%}}Cliq{{%/bold%}} integration. **ii.** Select the handlers that you require. You can learn more about this from the {{%link href="/en/serverless/help/functions/integration-functions/" %}}Integration Functions help page{{%/link%}} .<br /> The rest of the setup process is the same for all function types. The process only varies with the function stack. {{%note%}}{{%bold%}}Note:{{%/bold%}} Cliq Integration Functions is currently not available to Catalyst users accessing from the EU, AU, IN, or CA data centers. ConvoKraft Integration Functions are available to all DCs.{{%/note%}} <br> 2. Select a stack to develop the server side functions in and press {{%bold%}}Enter{{%/bold%}} . The list displays all supported runtimes. You can select the latest supported version of {{%bold%}}Java{{%/bold%}}, {{%bold%}}Node.js{{%/bold%}}, or {{%bold%}}Python{{%/bold%}} from the list. {{%note%}} {{%bold%}}Note:{{%/bold%}} You can create multiple Java, Node.js or Python functions within a single function directory using the {{%link href="/en/cli/v1/working-with-functions/add-functions/" %}} {{%badge%}}catalyst functions:add{{%/badge%}} {{%/link%}} command.{{%/note%}} <br> ### Initialize a Java Function of Any Type 1. If you initialize a Java function, select the required runtime from the supported runtimes: **Java 8**, **Java 11**, **Java 17**. <br> {{%note%}}{{%bold%}}Note:{{%/bold%}} Before choosing your version of Java function stack, ensure you have the relevant JDK installed in your system. You can also install the relevant JDKs from the following links: * {{%link href="https://www.oracle.com/technetwork/java/javase/downloads/index.html" %}}Java 8{{%/link%}} * {{%link href="https://www.oracle.com/in/java/technologies/javase/jdk11-archive-downloads.html" %}}Java 11{{%/link%}} * {{%link href="https://www.oracle.com/java/technologies/downloads/#java17" %}}Java 17{{%/link%}} {{%/note%}} 2. Enter the reference name of the Java function when prompted and press {{%bold%}}Enter{{%/bold%}} . This will also be the name of the function's folder.<br /> 3. Provide the main class name of the Java function and press {{%bold%}}Enter{{%/bold%}} . The CLI will then download the {{%link href="/en/sdk/java/v1/overview/" %}}Java SDK package{{%/link%}} and complete the function setup process. <br> 4. If it is your first time initializing **Java 11** or **Java 17** function, you will need to additionally set the path information of the JDKs installed in your system. You can set this information in a specific configuration file that is present in your local system as a hidden file. The path of the installed JDKs will need to be set using the {{%badge%}}config:set &lt;key=value&gt;{{%/badge%}} CLI command. You can find out more about this command from this {{%link href="/en/cli/v1/cli-config/" %}}help document{{%/link%}}. Set the path information in the configuration file as shown in the example below: **Java 11**: {{%cli%}}catalyst config:set java11.bin=/Library/Java/JavaVirtualMachines/jdk-11.0.17.jdk/Contents/Home/bin{{%/cli%}} <br /> **Java 17**: {{%cli%}}catalyst config:set java17.bin=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home/bin{{%/cli%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} * Replace the path listed in the above commands with your JDK path. * If your local system is running on {{%bold%}}Windows OS{{%/bold%}}, kindly enclose the path in double-quotes. For example, you will set the Java 11 path in the following manner:<br /> {{%cli%}}catalyst config:set java11.bin="/Library/Java/JavaVirtualMachines/jdk-11.0.17.jdk/Contents/Home/bin"{{%/cli%}}{{%/note%}} <br /> The Java function's folder will be created with the main {{%badge%}}.java{{%/badge%}} class file, the library JAR files, {{%badge%}}catalyst-config.json{{%/badge%}} , and other configuration files. These values will be updated in the {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}} {{%badge%}}catalyst.json{{%/badge%}} {{%/link%}} configuration file.<br /> You can learn about the Java function directory structure in detail from the {{%link href="/en/cli/v1/project-directory-structure/functions-directory/" %}}Project Directory Structure help page.{{%/link%}} <br> ### Initialize a Node JS Function of Any Type 1. If you initialize a Node.js function, select the required runtime from the supported runtimes: **Node 20**, **Node 18**, **Node 16**, **Node 14**. <br> 2. Provide a package name for your Node function when prompted and press {{%bold%}}Enter{{%/bold%}} .<br /> 3. Provide the name of the entry point file and press {{%bold%}}Enter{{%/bold%}} . 4. Provide a name for the function {{%bold%}}author{{%/bold%}} and press {{%bold%}}Enter{{%/bold%}} . 5. The CLI will then prompt you to allow installation of node dependencies. Press {{%bold%}}Y{{%/bold%}} to confirm the installation, and press {{%bold%}}Enter{{%/bold%}} to confirm your choice. If you don't install all the required dependencies, it could cause errors during the function's execution.<br /> The CLI will then download the {{%link href="/en/sdk/nodejs/v2/overview/" %}}Node.js SDK package{{%/link%}} and complete the function setup process. <br> {{%note%}} {{%bold%}}Note:{{%/bold%}} Catalyst enables you to create an Advanced I/O function in the Express template, which installs the {{%link href="https://expressjs.com/" %}}Express.js{{%/link%}} modules. However, you will not be able to create the Express template from the CLI. But you can install Express on your system independently by executing {{%link href="https://expressjs.com/en/starter/installing.html" %}} {{%badge%}}npm install express --save{{%/badge%}} {{%/link%}} from a particular function's directory to use the Express modules in it. You can learn more the Express template from the {{%link href="/en/serverless/help/functions/advanced-io/" %}}Advanced I/O Function help page{{%/link%}} .{{%/note%}} <br> The Node function's directory is now set up with the {{%badge%}}.js{{%/badge%}} main function file, {{%badge%}}catalyst-config.json{{%/badge%}} , and the necessary node modules and configuration files if you installed the dependencies. These values will be updated in the {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}} {{%badge%}}catalyst.json{{%/badge%}} {{%/link%}} configuration file. You can learn about the Node.js function directory structure in detail from the {{%link href="/en/cli/v1/project-directory-structure/functions-directory/" %}}Project Directory Structure help page{{%/link%}} . {{%note%}} {{%bold%}}Note:{{%/bold%}} * You can add any number of sub-folders and files in a Java or a Node.js function's directory. Besides the main function file, a function's folder can contain other sub-functions. However, the configuration files and dependencies need to be in the function directory's root. * You can create sub-functions through the {{%link href="/en/serverless/help/functions/implementation/" %}}Catalyst console{{%/link%}} , or using external editors. You can also pull an existing function directory from the console to your local system using the {{%link href="/en/cli/v1/pull-resources/introduction/" %}}{{%badge%}}catalyst pull{{%/badge%}}{{%/link%}} command. * If you need to initialize more than one function, you can do so by using the {{%link href="/en/cli/v1/working-with-functions/add-functions/" %}} {{%badge%}}catalyst functions:add{{%/badge%}} {{%/link%}} command. {{%/note%}} <br> ### Initialize a Python Function of Any Type 1. If you initialize a Python function, select the required runtime from the supported runtime: **Python 3.9**. 2. Provide a package name for your Python function when prompted and press {{%bold%}}Enter{{%/bold%}} .<br /> 3. Provide the name of the entry point file and press {{%bold%}}Enter{{%/bold%}}. Upon successful initialization of the Python function, the {{%link href="/en/sdk/python/v1/overview" %}}Catalyst Python SDK{{%/link%}} package will be automatically installed for your project and an entry will be made in the {{%link href="/en/cli/v1/project-directory-structure/functions-directory/#requirementstxt-file" %}}{{%badge%}}requirements.txt{{%/badge%}}{{%/link%}} file. {{%note%}} {{%bold%}}Note:{{%/bold%}} If it is your first time initializing a Python function, you will need to additionally set the path information of Python installed in your system. You can set this information in a specific configuration file that is present in your local system as a hidden file. The path will need to be set using the {{%badge%}}config:set &lt;key=value&gt;{{%/badge%}} CLI command. You can find out more about this command from this {{%link href="/en/cli/v1/cli-config/" %}}help document{{%/link%}}.{{%/note%}} The Python function's directory is now set up with the {{%badge%}}.py{{%/badge%}} main function file, {{%badge%}}catalyst-config.json{{%/badge%}} and the {{%badge%}}requirements.txt{{%/badge%}} configuration file. These values will be updated in the {{%badge%}}catalyst.json{{%/badge%}} configuration file. You can learn about the Python function directory structure in detail from the {{%link href="/en/cli/v1/project-directory-structure/functions-directory/#python-modules-and-function-dependencies" %}}Project Directory Structure help page{{%/link%}} . You can code the functions you initialized in your local environment and {{%link href="/en/cli/v1/deploy-resources/deploy-functions/" %}}deploy it{{%/link%}} to the console. You can use the {{%link href="/en/cli/v1/working-with-functions/functions-shell/" %}}functions shell{{%/link%}} to test and debug it before deploying. Similarly, you can {{%link href="/en/cli/v1/serve-resources/serve-all-resources/#serve-functions-and-basic-web-applications" %}}serve it{{%/link%}} through a localhost as well. {{%note%}} {{%bold%}}Note:{{%/bold%}} * You can add any number of sub-folders and files in a Java, Node.js or Python function's directory. Besides the main function file, a function's folder can contain other sub-functions. However, the configuration files and dependencies need to be in the function directory's root. * You can create sub-functions for Node.js functions through the {{%link href="/en/serverless/help/functions/implementation/" %}}Catalyst console{{%/link%}}. However, Java and Python functions can only be created and updated from the CLI and using external editors. * You can pull an existing function directory from the console to your local system using the {{%link href="/en/cli/v1/pull-resources/introduction/" %}} {{%badge%}}catalyst pull{{%/badge%}} {{%/link%}} command. * If you need to initialize more than one function, you can do so by using the {{%link href="/en/cli/v1/working-with-functions/add-functions/" %}} {{%badge%}}catalyst functions:add{{%/badge%}} {{%/link%}} command. {{%/note%}} -------------------------------------------------------------------------------- title: "Initialize the Client" description: "You can initialize a Catalyst project and project resources such as functions, client, and AppSail from the CLI" last_updated: "2026-03-18T07:41:08.544Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/initialize-resources/initialize-client/" service: "All Services" -------------------------------------------------------------------------------- # Initialize the Client ### Introduction Catalyst enables you to develop three types of native client applications that can be hosted on {{%link href="/en/cloud-scale/help/web-client-hosting/introduction/" %}}Web Client Hosting{{%/link%}}: * Angular Applications * React Applications * Basic Client Applications Catalyst provides ready-to-use templates for Angular and React client apps. When you initialize these apps, Catalyst will handle the entire setup procedure and prompt you to install the required dependencies. The Angular and React applications will be created in your project directory in their boilerplate structure. The basic client app is a simple version of the Catalyst client that will be created in its own standard structure. The installation procedures will differ for all three types of client apps. {{%note%}} {{%bold%}}Note:{{%/bold%}} * You can add any number of sub-folders and files in the client's directory like HTML files, JavaScript files, logo images, and more. However, the configuration files and dependencies need to be in the client directory's root. * You can also pull a hosted web client from the console to your local system using the {{%badge%}} {{%link href="/en/cli/v1/pull-resources/introduction/" %}}catalyst pull{{%/link%}} {{%/badge%}} command. * Web client hosting is suitable for basic and simple web applications. You can explore our robust frontend development service, {{%bold%}}{{%link href="/en/slate/" %}}Slate{{%/link%}}{{%/bold%}}, that lets you seamlessly deploy web applications in a variety of popular JavaScript frameworks like Next.js, Angular, React, Vue, and more. Slate also provides automated deployments from GitHub, GitLab, or Bitbucket, and offers a host of other advanced features. {{%/note%}} If you initialize the client directory for your project, Catalyst will initiate its setup process after the functions initialization. Select one of the client types to initialize for your project from the options, then press {{%bold%}}Enter{{%/bold%}}. <br> ### Angular Applications Angular is a front-end application design framework and development platform for creating efficient and sophisticated single-page apps. Angular follows a component-based architecture where the app is decoupled into individual, reusable functional and logical entities. The building blocks of Angular such as the components, templates, directives, dependency injections are combined into modules, that together form an Angular application. You can learn more from the {{%link href="https://angular.io/docs" %}}official Angular documentation{{%/link%}} . It is recommended that you have Angular CLI installed in your local machine for developing Angular client applications. This CLI handles the installation and configuration of the required dependencies automatically, and enables easy development and testing of client applications. Catalyst will automatically initiate its installation during the client initialization process. Catalyst also provides a plugin for the Angular app, {{%badge%}} {{%bold%}}zcatalyst-cli-plugin-angular{{%/bold%}} {{%/badge%}} , which is installed when the Angular app is initialized. This plugin, compatible with the latest LTS version of Angular, handles several operations involved in the development and testing of the Angular app internally. This eases and quickens your application building task, and enables you to focus on the app's functionality instead of its setup and maintenance. {{%note%}} {{%bold%}}Note:{{%/bold%}} The Catalyst plugin must be installed in the specific application's directory. The {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}} {{%badge%}}catalyst.json{{%/badge%}} {{%/link%}} configuration file will specify the plugin's path. Catalyst has deprecated support for the global installation of the Angular plugin. Please update the code of your existing Angular apps accordingly.{{%/note%}} <br> If you select {{%bold%}}Angular Web App{{%/bold%}} from the options while initializing the client, Catalyst will initiate the standard setup procedure for Angular applications. The app will be created in the latest LTS version. {{%note%}} {{%bold%}}Note:{{%/bold%}} The current Angular LTS version supported by Catalyst is v12.{{%/note%}} 1. The CLI will prompt you to provide a name for the client component of your project. Provide a name for the client and press {{%bold%}}Enter{{%/bold%}} .<br /> <br> 2. If Angular CLI is not already installed in your system, Catalyst will automatically initiate a temporary installation of its LTS version. It will also install a Catalyst-specific schematics package that is required to generate an Angular app.<br /> <br /> Enter "Y" to confirm the installation of the required packages when prompted, then press {{%bold%}}Enter{{%/bold%}} .<br /> If the required packages already exist in your local system, the setup will skip to the next step. {{%note%}} {{%bold%}}Note:{{%/bold%}} If you have an older or unsupported version of Angular installed in your system, Catalyst will prompt you to update the version to the latest supported version.{{%/note%}} <br> 3. You can enable Angular routing to handle navigation between the different views you create. Enter "Y", then press {{%bold%}}Enter{{%/bold%}} when prompted.<br /> <br> 4. You can style Angular components with any of the supported stylesheet formats as shown below. Select a stylesheet format for your app, then press {{%bold%}}Enter{{%/bold%}} .<br /> The routing and stylesheet prompts fall under the default set up procedures of Angular applications.<br /> Catalyst will then initiate the installation of the Angular application files, configuration files, and dependencies in their boilerplate structures. The node modules required for the development of the app are also installed through NPM.<br /> <br> The Angular client's directory is now set up with the standard application files, environment files, the plugin file, stylesheets, {{%badge%}}index.html{{%/badge%}} , and TypeScript classes as shown below. The required node modules, JSON configuration files, and dependencies, including {{%badge%}}client-package.json{{%/badge%}} specific to Catalyst, will also be present in the directory. After these packages are installed, the {{%badge%}}catalyst.json{{%/badge%}} configuration file will be updated with the client package details, including the path to the plugin file specified earlier. You can learn more about the Catalyst configuration files and the client directory from the {{%link href="/en/cli/v1/project-directory-structure/client-directory/" %}}Project Directory Structure help page{{%/link%}} . You can learn about testing and deploying an Angular app from the Catalyst CLI from the {{%link href="/en/cli/v1/serve-resources/serve-all-resources/#serve-angular-applications" %}}Serve Resources{{%/link%}} and {{%link href="/en/cli/v1/deploy-resources/deploy-client/#deploy-angular-applications" %}}Deploy Resources{{%/link%}} help pages. <br> ### React Applications React is a front-end JavaScript library that enables you to build interactive applications and user interfaces. Its component-based architecture efficiently manages and renders the states in your application upon build. React provides ease and flexibility in developing single page client applications, and offers reusability of its components. You can learn more from the {{%link href="https://reactjs.org/docs/getting-started.html" %}}official React documentation{{%/link%}} . Catalyst provides a plugin for the React app, {{%badge%}}{{%bold%}}zcatalyst-cli-plugin-react{{%/bold%}}{{%/badge%}} , which is installed when the React app is initialized. This plugin contains certain node modules and library files that handle several operations involved in the development and testing of the React app internally. This allows for a faster and efficient application building process. {{%note%}} {{%bold%}}Note:{{%/bold%}} The Catalyst plugin must be installed in the specific application's directory. The {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}} {{%badge%}}catalyst.json{{%/badge%}} {{%/link%}} configuration file will specify the plugin's path. Catalyst has deprecated support for the global installation of the React plugin. Please update the code of your existing React apps accordingly.{{%/note%}} When you initialize a React app, Catalyst will automatically facilitate its creation and configuration through the Yarn package manager by default. If you don't have Yarn installed in your local machine, the React app will be set up using NPM. Catalyst enables the handling of all configuration tasks such as linking and resolving packages, and installing dependencies, through the package manager automatically. If you select {{%bold%}}React Web App{{%/bold%}} from the options while initializing the client, Catalyst will initiate the standard setup procedure for React applications. 1. You can create the React app with the standard JavaScript template or a TypeScript template. TypeScript is a typed superset of JavaScript that gets transpiled to plain JavaScript during compilation. Catalyst provides you with these options during the initialization to make the set up procedure easier and quicker.<br /> <br /> Select {{%bold%}}JavaScript{{%/bold%}} or {{%bold%}}TypeScript{{%/bold%}} from the options.<br /> 2. The CLI will prompt you to provide a name for the client component of your project. Provide a name for the client and press {{%bold%}}Enter{{%/bold%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} The client directory in your project is named client in the case of Angular and basic web client applications. However, for React applications, the name of the client directory is the same name you assign to the web client here during its initialization or set up. For example, if you name your web client as "vendorApp", the client directory will also be named {{%badge%}}vendorApp{{%/badge%}} . This value will be updated accordingly in the {{%badge%}}catalyst.json{{%/badge%}} configuration file.{{%/note%}} This will initiate the installation of the necessary React packages such as {{%badge%}}react{{%/badge%}} , {{%badge%}}react-dom{{%/badge%}} , and {{%badge%}}react-scripts{{%/badge%}} through a Catalyst-specific {{%link href="https://www.npmjs.com/package/cra-template" %}}CRA template{{%/link%}} . This base template will execute the {{%badge%}} {{%link href="https://github.com/facebook/create-react-app" %}}create-react-app{{%/link%}} {{%/badge%}} command.<br /> The package manager will then initialize a git repository for the React app, and install template dependencies.<br /> After the initialization is complete, you can find the React application files created in their boilerplate structures in your project directory.<br /> <br> The React app directory structure will contain the application source files, public files, configuration files, node modules, and other dependencies including {{%badge%}}client-package.json{{%/badge%}} specific to Catalyst as shown below. After these packages are installed, the {{%badge%}}catalyst.json{{%/badge%}} configuration file will be updated with the client package details, including the path to the plugin file specified earlier. You can learn more about the Catalyst configuration files and the client directory from the {{%link href="/en/cli/v1/project-directory-structure/client-directory/" %}}Project Directory Structure help page{{%/link%}} . When you {{%link href="/en/cli/v1/serve-resources/serve-all-resources/#serve-react-applications" %}}serve{{%/link%}} or {{%link href="/en/cli/v1/deploy-resources/deploy-client/#deploy-react-applications" %}}deploy{{%/link%}} the React app, a {{%badge%}}build{{%/badge%}} folder will be created in this directory which will contain all the compiled files as per the standards of React.js. <br> ### Basic Client Applications The basic client application is a simple version of the Catalyst client that is created without any external frameworks or libraries. You can create simple, functional web client applications by choosing the {{%bold%}}Basic Web App{{%/bold%}} option during the client initialization. The CLI will then prompt you to provide a name for the client component of your project. Provide a name for the client and press {{%bold%}}Enter{{%/bold%}} . <br> The client directory will now be created in the project's directory and the {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}} {{%badge%}}catalyst.json{{%/badge%}} {{%/link%}} file will be updated with its information. <br> The basic client's directory will be set up with the main {{%badge%}}index.html{{%/badge%}} file, {{%badge%}}main.css{{%/badge%}}, {{%badge%}}main.js{{%/badge%}} , and the {{%badge%}}client-package.json{{%/badge%}} configuration. You can learn about the client directory structure in detail from the {{%link href="/en/cli/v1/project-directory-structure/client-directory/" %}}Project Directory Structure help page{{%/link%}}. You can {{%link href="/en/cli/v1/serve-resources/serve-all-resources/#serve-functions-and-basic-web-applications" %}}serve{{%/link%}} the client through a localhost to test it, and then {{%link href="/en/cli/v1/deploy-resources/deploy-client/" %}}deploy it{{%/link%}} to the cloud, or {{%link href="/en/cloud-scale/help/web-client-hosting/introduction/" %}}host it from the console{{%/link%}} directly. -------------------------------------------------------------------------------- title: "Initialize an AppSail service" description: "Initialize a Catalyst AppSail web service in a Catalyst-managed runtime of Java, Node.js, and Python, or in a custom runtime as an OCI image in your project directory to deploy it to the cloud." last_updated: "2026-03-18T07:41:08.544Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/initialize-resources/initialize-appsail/" service: "All Services" -------------------------------------------------------------------------------- # Initialize AppSail ### Introduction AppSail is a serverless platform of Catalyst that you can use to deploy web services of any scale to the cloud and manage its platform instances. You can initialize an AppSail service in one of two ways: * {{%bold%}}As a Catalyst-managed runtime{{%/bold%}}: Initialize and deploy applications of specific Java, Node.js, and Python runtimes supported by Catalyst directly to the remote console * {{%bold%}}As a Container image{{%/bold%}}: Initialize and deploy an OCI image of your application of any runtime or framework from your local registry to the remote console {{%note%}}{{%bold%}}Note:{{%/bold%}} Catalyst only supports the deployment of {{%link href="https://github.com/opencontainers/image-spec" %}}OCI-compliant images{{%/link%}} built for the Linux AMD64 (x86-64) platform.{{%/note%}} **{{%link href="/en/serverless/help/appsail/introduction/" %}} Refer here for more details{{%/link%}}.** In both cases, you can initialize an AppSail service for an app that is ready to be deployed, and associate it with a Catalyst project through this command. {{%info%}} {{%bold%}}Info:{{%/bold%}} You can associate an existing Catalyst project directory with an AppSail app using the {{%badge%}}{{%link href="/en/cli/v1/add-appsail/" %}}appsail:add command{{%/link%}}{{%/badge%}}. You can also directly deploy an app without initialization through the {{%link href="/en/cli/v1/deploy-resources/deploy-appsail/" %}}standalone command{{%/link%}}.{{%/info%}} <br> ### Initialize AppSail as a Catalyst-Managed Runtime You can initialize an AppSail service for a Catalyst-managed runtime directly in your app's directory, or from a new directory. If you had selected AppSail during the project initialization, Catalyst will set it up after the client initialization. Catalyst creates an {{%bold%}}{{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/#the-app-configjson-file" %}}{{%badge%}}app-config.json{{%/link%}}{{%/badge%}}{{%/bold%}} file when an AppSail service is initialized in this method. 1. The CLI will prompt you to select the runtime type as **Catalyst-Managed Runtime** or **Docker Image** when AppSail is initialized. Select the first option. 2. You can now choose to get started with a readymade sample project by entering "Y" and pressing **Enter**, then selecting a sample app from the list. The sample app will be downloaded to the directory. Provide a name for it when prompted. If you want to initialize your own app, enter "N" , then press **Enter**. 3. Select if this will be your {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/#source-directory-and-build-path" %}}source directory{{%/link%}} of your app by entering "Y". If you enter "N", the CLI will prompt you to type in the absolute path for your app's source in your directory. Press **Enter** after the entries. 4. Enter a name for your app. You can name the main file of your app's build anything you prefer. {{%note%}}{{%bold%}}Note:{{%/bold%}} When you build your app as a Java WAR file, you will need to name the main file {{%badge%}}root.war{{%/badge%}} or add specific controllers according to your code.{{%/note%}} 5. Enter the absolute {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/#source-directory-and-build-path" %}}build path{{%/link%}} for your app, then press **Enter**. 6. Select a stack and runtime for your app and press **Enter**. If you select Java, the CLI will further prompt you to pick either **Java SE** or the **Java WAR** as your app's deployable format. You can learn more about this {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/" %}}here{{%/link%}}. If you select any other stack, this will be skipped. AppSail is now initialized in the source directory you selected, and the app is now associated with the Catalyst project. The configurations will be updated in {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}{{%badge%}}catalyst.json{{%/badge%}}{{%/link%}} file accordingly. This initialization will only create the {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/#the-app-configjson-file" %}}{{%badge%}}app-config.json{{%/link%}}{{%/badge%}} configuration file that is specific to AppSail in your app's source directory. You can edit the values such as the startup command, environment variables, or memory in this file before deploying. <br> ### Initialize AppSail as a Custom Runtime You can initialize AppSail for a compliant OCI image of your app from a new directory. Catalyst supports two protocols that you can use to associate your app's image with AppSail. Each protocol has a distinct schema for identification and functioning. * {{%bold%}}Docker Image Protocol:{{%/bold%}} Use this to associate a pre-built image of your app present in the local docker registry. The image must be built and {{%link href="https://docs.docker.com/reference/cli/docker/image/tag/" %}}tagged{{%/link%}} to point to the local registry. Example: *docker://localhost/expres-hw:latest* * {{%bold%}}Docker Archive Protocol:{{%/bold%}} Use this to point to an archive file (.tar or .tar.gz) of a pre-built image of your app in your system's directory. Example: *docker-archive://test.tar* {{%note%}}{{%bold%}}Note:{{%/bold%}} The {{%badge%}}.tar{{%/badge%}} file can be typically generated with the {{%link href="https://docs.docker.com/reference/cli/docker/image/save/" %}}{{%badge%}}docker save{{%/badge%}} command{{%/link%}}.{{%/note%}} You need not provide any other details except the name for the AppSail for container images. The source or build path of the app, stack, and startup command are not required to be configured for OCI images, as they are already defined in the images. 1. The CLI will prompt you to select the runtime type as Catalyst-Managed Runtime or **Docker Image** when AppSail is initialized. Select the second option. 2. Select the protocol as **Docker Image** or **Docker Archive**. 3. {{%bold%}}Docker Image Protocol:{{%/bold%}} If you select **Docker Image**, the CLI will list all the available images with tags in the local docker registry. Select the image you need. {{%bold%}}Docker Archive Protocol:{{%/bold%}} If you select **Docker Archive**, the CLI will prompt you to enter the absolute path to the TAR file image of your app in your local system. {{%note%}}{{%bold%}}Note:{{%/bold%}} When the AppSail configuration is stored in the {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}{{%badge%}}catalyst.json{{%/badge%}}{{%/link%}} file, the path will be stored relative to that file's location.{{%/note%}} 4. Provide a name for the AppSail service. You can name it anything you prefer. AppSail is now initialized in your local directory, and the app's image is now associated with the AppSail service. The configurations will be updated in {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}{{%badge%}}catalyst.json{{%/badge%}}{{%/link%}} file accordingly. {{%note%}}{{%bold%}}Note:{{%/bold%}} The {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/#the-app-configjson-file" %}}{{%badge%}}app-config.json{{%/link%}}{{%/badge%}} file will not be created when you initialize AppSail with a container image. All the app specifications will be stored in the {{%badge%}}catalyst.json{{%/badge%}} file. You can add certain custom configurations of your app in this file. Refer {{%link href="/en/serverless/help/appsail/appsail-configurations/" %}}here{{%/link%}} for details.{{%/note%}} You can now code your business logic in your app, then {{%link href="/en/cli/v1/serve-resources/serve-all-resources/#serve-appsail-applications" %}}serve the AppSail service{{%/link%}} through a localhost to {{%link href="/en/serverless/help/appsail/debug-appsail/" %}}debug{{%/link%}} and test it, or {{%link href="/en/cli/v1/deploy-resources/deploy-appsail/" %}}deploy it{{%/link%}} to the remote console directly. -------------------------------------------------------------------------------- title: "Initialize a Specific Resource" description: "You can initialize a Catalyst project and project resources such as functions, client, and AppSail from the CLI" last_updated: "2026-03-18T07:41:08.545Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/initialize-resources/initialize-specific-resource/" service: "All Services" -------------------------------------------------------------------------------- # Initialize a Specific Resource You can initialize a specific resource in the following way: {{%cli%}} catalyst init [feature] {{%/cli%}} You must enter the keyword {{%badge%}}client{{%/badge%}}, {{%badge%}}appsail{{%/badge%}}, or {{%badge%}}functions{{%/badge%}} . For example, to initialize the functions directory alone for your project, execute the following command from your project directory: {{%cli%}} catalyst init functions {{%/cli%}} -------------------------------------------------------------------------------- title: "Initialize Options" description: "You can initialize a Catalyst project and project resources such as functions, client, and AppSail from the CLI" last_updated: "2026-03-18T07:41:08.545Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/initialize-resources/initialize-options/" -------------------------------------------------------------------------------- # Initialize Options ### -\-force Catalyst enables you to force initialize a project or its resources in a directory. If you encounter any issues with initializing a project, you can use this option. To perform a force initialization of a project, execute the following command: {{%cli%}} catalyst init --force {{%/cli%}} You can follow the same steps to initialize resources, as mentioned earlier. -------------------------------------------------------------------------------- title: "Initialize Slate" description: "Initialize a Catalyst Slate service when initializing the project resources from the CLI." last_updated: "2026-03-18T07:41:08.545Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/initialize-resources/initialize-slate/" -------------------------------------------------------------------------------- # Initialize Slate # Introduction {{%link href="/en/sdk/java/v1/overview/" %}}Slate{{%/link%}} is a front-end development service offered by Catalyst that enables you to deploy, preview, and launch your web applications seamlessly. You can deploy applications built with any front-end frameworks, with native support for popular JavaScript frameworks such as {{%link href="https://nextjs.org/" %}}Next.js{{%/link%}}, {{%link href="https://react.dev/" %}}React{{%/link%}}, {{%link href="https://angular.dev/"%}}Angular{{%/link%}}, {{%link href="https://astro.build/" %}}Astro{{%/link%}}, {{%link href="https://vuejs.org/" %}}Vue{{%/link%}}, {{%link href="https://www.solidjs.com/" %}}SolidJS{{%/link%}}, {{%link href="https://svelte.dev/" %}}Svelte{{%/link%}}, and {{%link href="https://vite.dev/" %}}Vite{{%/link%}}. {{%link href="/en/slate/help/deployments/introduction" %}}View the entire list of supported frameworks{{%/link%}}. You can initialize a Slate service in your project directory using the steps discussed in the upcoming section. If you want to deploy any existing project directory to Catalyst slate, you must first link the directory with the Slate service, using the {{%link href="/en/cli/v1/working-with-slate/link-slate-app/" %}}{{%badge%}}catalyst slate:link{{%/badge%}}{{%/link%}} command.You can also unlink it if required by using the {{%link href="/en/cli/v1/working-with-slate/unlink-slate-app/" %}}{{%badge%}}catalyst slate:unlink{{%/badge%}}{{%/link%}} command. Additionally, you can add multiple Slate apps to a project directory where a Slate service is already initialized using the {{%link href="/en/cli/v1/working-with-slate/create-slate-app/" %}}{{%badge%}}catalyst slate:create{{%/badge%}}{{%/link%}} command. {{%link href="/en/cli/v1/deploy-resources/deploy-to-slate/" %}}Learn how to deploy a State app{{%/link%}}. ### Initialize Slate You can initialize a Slate service directly in your app’s directory, or from a new directory. If you had selected Slate during the project initialization, you can follow the below listed steps: You can also use the below command to initialize the Slate service directly: {{%cli%}} catalyst init slate {{%/cli%}} 1. Select the client framework of the application you wish to deploy in Slate. Press Enter to confirm. {{%note%}}{{%bold%}}Note:{{%/bold%}} This process automatically downloads a boilerplate template based on your chosen framework into your project directory, allowing you to customize and deploy it to Slate.{{%/note%}} 2. The CLI will set the default configuration for your Slate application based on the chosen framework. Provide a name for your application and press **Enter**. This configuration includes the install and build commands, as well as the build path of the respective framework. If you wish to proceed with the default configuration, enter N. Otherwise, enter Y to make the necessary updates. {{%note%}} {{%bold%}}Note:{{%/bold%}} 1. The install command instals the required dependencies, typically using a package manager. 2. The build command is the script that transforms your development code into production code. 3. The build path is the directory where the production-ready, optimized files are generated after running the build process.{{%/note%}} By default, the install command is auto-detected as **npm install** and the build command as **npm run build**. If you would like to change these, you can do so by entering N and providing the required package command. Once you confirm on the configuration, the Slate template code of the chosen framework will be downloaded to the project directory, and an entry will be added to the {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}catalyst.json{{%/link%}} file, which serves as a connection between your project directory and the Catalyst Slate service. ### Project Directory Structure -------------------------------------------------------------------------------- title: "Introduction" description: "The project directory structure refers to the default directory structure a Catalyst project is created in when you initialize it from the CLI." last_updated: "2026-03-18T07:41:08.548Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/project-directory-structure/introduction/" service: "All Services" -------------------------------------------------------------------------------- # Project Directory Structure ### Introduction When you create or initialize a new project from the Catalyst CLI, it is created in a specific structure along with the necessary configuration files. This project is stored in the directory that you create it in, which will be considered as the project's home directory. The boiler plate code for the project is generated in the project's home directory during the creation. To learn about initializing a Catalyst project or any of its specific components from the CLI, refer to the {{%link href="/en/cli/v1/initialize-resources/introduction/" %}}Initialize Resources help page{{%/link%}}. Before you host a web client in Catalyst, you must ensure that it contains all the resources in the standard project directory structure as described in this help page. Any discrepancies could cause errors in the production of your application. When you initialize a Catalyst project from the CLI, you will be asked to choose the components to initialize. The two fundamental components of a Catalyst project that you can initialize are: the {{%bold%}}client{{%/bold%}} and {{%bold%}}functions{{%/bold%}} If you initialize all of the components, the following resource directories are created in your project directory: 1. {{%bold%}}Client{{%/bold%}} 2. {{%bold%}}Functions{{%/bold%}} 3. {{%badge%}}catalyst.json{{%/badge%}} Let us take a look at these resources in detail. -------------------------------------------------------------------------------- title: "Functions Directory" description: "The project directory structure refers to the default directory structure a Catalyst project is created in when you initialize it from the CLI." last_updated: "2026-03-18T07:41:08.548Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/project-directory-structure/functions-directory/" service: "All Services" -------------------------------------------------------------------------------- # Functions Directory ### Introduction As discussed earlier, Catalyst supports functions written in {{%bold%}}Java{{%/bold%}}, {{%bold%}}Node.js{{%/bold%}} and {{%bold%}}Python{{%/bold%}} programming environments. The {{%badge%}}functions{{%/badge%}} folder in the project directory contains all the server-side functions of your microservice or application in individual folders. An individual function's folder in the Functions directory contains the main function file (the {{%badge%}}.java{{%/badge%}} class file or the {{%badge%}}.js{{%/badge%}} file or {{%badge%}}.py{{%/badge%}} file), and all the other necessary dependencies and configuration files of the function. You can also create additional secondary functions in the function's folder that closely work with the main function. However, you cannot create secondary functions in a function folder from the CLI. You can either manually import the files in the folder from an external development environment, or {{%link href="/en/serverless/help/functions/implementation/" %}}create them in the Catalyst console{{%/link%}} and {{%link href="/en/cli/v1/pull-resources/introduction/" %}}pull them{{%/link%}} into the directory using the CLI. {{%note%}} {{%bold%}}Note:{{%/bold%}} You can add any number of functions of Java, Node.js or Python stacks in the functions directory using the CLI or set up the functions component at any time using the CLI. To learn more, refer to the {{%link href="/en/cli/v1/working-with-functions/introduction/" %}}Working with Functions help page{{%/link%}} .{{%/note%}} When you {{%link href="/en/cli/v1/initialize-resources/initialize-functions/" %}}initialize functions from the CLI{{%/link%}} in the project directory, a folder named 'functions' will be created inside the project directory, along with the necessary dependencies based on the programming environment that you select. <br> A **Java** function's folder is set up with the following components when it is created: 1. The main {{%badge%}}.java{{%/badge%}} Class File 2. {{%badge%}}catalyst-config.json{{%/badge%}} 3. The {{%badge%}}.jar{{%/badge%}} Library Files A **Node.js** function's folder is set up with the following components when it is created: 1. The main function file ({{%badge%}}index.js{{%/badge%}}) 2. {{%badge%}}catalyst-config.json{{%/badge%}} 3. Node modules and Node.js function dependencies A **Python** function's folder is set up with the following components when it is created: 1. The main.py file 2. {{%badge%}}catalyst-config.json{{%/badge%}} 3. {{%badge%}}requirements.txt {{%/badge%}} file Let us first discuss about the main function file and the {{%badge%}}catalyst-config.json{{%/badge%}} file that are common in Java, Node.js and Python programming environments. ### The Main Function File The main function file is the file of the type {{%badge%}}.java{{%/badge%}} or {{%badge%}}.js{{%/badge%}} or {{%badge%}}.py{{%/badge%}} , depending on the language that you select while initializing the function. The main function file is created with a sample code structure for Java, Node.js and Python. For a Java function, you will need to provide the class name of the main function, and the reference name of the function group while initializing it from the CLI. The name of the function folder will be the same as the reference name of the function. For a Node.js and Python function, you will need to provide the package name of the function. You will also need to provide the name of the entry point file or the main function file, which will be named index.js and main.py by default, respectively. The {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}{{%badge%}}catalyst.json{{%/badge%}}{{%/link%}} file will specify the reference or the package names of all the functions. <br> ### catalyst-config json file The {{%badge%}}catalyst-config.json{{%/badge%}} file specifies the configuration of the function, such as its deployment and execution specifications. {{% code class="language-json" %}}{ "deployment":{ "name": "fn", "stack": "node16", "type": "advancedio", "env_variables": {} }, "execution": { "main": "index.js" } } {{%/code%}} {{%badge%}}deployment{{%/badge%}} information includes the following parameters: * {{%badge%}}{{%bold%}}name{{%/bold%}}{{%/badge%}}: The reference name of the function group that you provided while initializing it.<br /> If you modify the reference name of the function, ensure that you update the changes in _catalyst-config.json_ and rename the function folder with the same name. You must reflect the changes in {{%badge%}}catalyst.json{{%/badge%}} as well. * {{%badge%}}{{%bold%}}stack{{%/bold%}}{{%/badge%}}: Indicates whether it is a Java, Node.js or Python function and the version information. Changing this value will result in errors. * {{%badge%}}{{%bold%}}type{{%/bold%}}{{%/badge%}}: Indicates the type of function. To learn more about function types, refer to the {{%link href="/en/serverless/help/functions/introduction/" %}}Functions help page{{%/link%}}. Changing this value will result in errors. {{%badge%}}execution{{%/badge%}} refers to the main function file which is the entry point, i.e., the name of the main {{%badge%}}.java{{%/badge%}}, {{%badge%}}.js{{%/badge%}} or {{%badge%}}.py{{%/badge%}} function file. You must ensure that {{%badge%}}catalyst-config.json{{%/badge%}} file is present in the root of the function folder and contains the right configurations, when you deploy the function. Let's now look at the Java library files, Node and Python function dependencies in detail : <br> ### The Java Library Folder The library folder named {{%badge%}}lib{{%/badge%}} contains the dependent JAR files for the function. The lib folder is added to the function directory automatically when you initialize the function for the Java environment from the CLI. These JAR files are part of the {{%link href="/en/sdk/java/v1/overview/" %}}Java SDK{{%/link%}} package. During the runtime, the Java function calls these library files as they contain packages and features that are required by the function to execute. <br> ### Node Modules and Node JS Function Dependencies A Node.js function's folder essentially includes the following: 1. The main function file 2. {{%badge%}}catalyst-config.json{{%/badge%}} 3. {{%badge%}}package-lock.json{{%/badge%}} 4. {{%badge%}}package.json{{%/badge%}} 5. The Node modules folder We have previously discussed the main function file and the {{%badge%}}catalyst-config.json{{%/badge%}} file. The node modules and node function dependencies are installed in your system when you install the {{%link href="/en/sdk/nodejs/v2/overview/" %}}Node.js SDK{{%/link%}} package. <br> The {{%badge%}}{{%bold%}}package.json{{%/bold%}}{{%/badge%}} and {{%badge%}}{{%bold%}}package-lock.json{{%/bold%}}{{%/badge%}} files are dependency files that contain the configuration of the function. The {{%badge%}}package.json{{%/badge%}} files specifies information like the name of the function, main function file, version, author and more, whereas the {{%badge%}}package-lock.json{{%/badge%}} specifies other dependency information in detail. {{%note%}} {{%bold%}}Note:{{%/bold%}} If you rename the function, you must update the changes in these configuration files.{{%/note%}} The node modules folder contains the sub-folders of the modules. Each module contains individual library files, license files, configuration files, index files and more, that are essential for the execution of your Node.js functions. One of the node modules, {{%badge%}}{{%bold%}}zcatalyst-sdk-node{{%/bold%}}{{%/badge%}}, contains the Node.js SDK definitions of all Catalyst components grouped in a folder named {{%badge%}}src{{%/badge%}}, and other dependency files. {{%note%}} {{%bold%}}Note:{{%/bold%}} * When you create a function from the console, the function group will not contain all the required dependencies. For example, the node modules will not be added to a Node.js function group, although a folder will be created for it. In such cases, you can {{%link href="/en/cli/v1/pull-resources/pull-all-resources/#pull-functions" %}}pull the functions{{%/link%}} from the console to the project directory using the CLI. This will create a directory for those functions in the required structure. If the function group created in the console contains secondary functions, they will be included in the function's folder when you pull it from the console. * When you create a function from an external editor and import it into Catalyst, you must ensure that all the dependencies are included, and all the configuration files are created in the specified format. If there are any discrepancies, it could result in errors when the function is executed. {{%/note%}} ### Python Modules and Function Dependencies A Python function's folder essentially includes the following: 1. The main.py file 2. {{%badge%}}catalyst-config.json{{%/badge%}} 3. {{%badge%}}requirements.txt {{%/badge%}} file We have already discussed about the main function file and the catalyst-config.json file in the previous sections. #### requirements.txt file This {{%badge%}}requirements.txt{{%/badge%}} file contains the list of installed dependencies that are needed to implement the Python function. By default, it contains the entry for Catalyst's Python SDK package ({{%badge%}}zcatalyst-sdk{{%/badge%}}), when you create the Python function from the CLI. When you install external dependencies or libraries for your function, you will have to configure the names and values of the dependencies in the form of key-value pairs manually in the requirements.txt file and save it. You can also upgrade the version of the Python SDK package or any of the external dependencies by simply configuring the appropriate version values in the {{%badge%}}requirements.txt{{%/badge%}} file and save it. When you serve or deploy your Python function from the CLI, for the updated configurations to be reflected. {{%note%}} {{%bold%}}Note:{{%/bold%}} You must configure all the external dependencies that you add in the function's directory in the requirements.txt file mandatorily.{{%/note%}} The Python function directory structure is as follows : -------------------------------------------------------------------------------- title: "Client Directory" description: "The project directory structure refers to the default directory structure a Catalyst project is created in when you initialize it from the CLI." last_updated: "2026-03-18T07:41:08.548Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/project-directory-structure/client-directory/" service: "All Services" -------------------------------------------------------------------------------- # Client Directory The {{%badge%}}client{{%/badge%}} folder in the projects directory contains all the components of the front-end of your application. These include the HTML files of the webpages, the CSS files, the JavaScript files that enable the actionable elements in your webpage, and other required files. ### Client Directory Files By default, the client folder is set up with the following files: <br> {{%badge%}}{{%bold%}}index.html{{%/bold%}}{{%/badge%}}: The {{%badge%}}index.html{{%/badge%}} file is the default file name for your web application's home page. It is created with a sample code structure. {{%badge%}}{{%bold%}}main.css{{%/bold%}}{{%/badge%}}: The {{%badge%}}main.css{{%/badge%}} file contains the styling of your web application's pages. It is created as an empty file. {{%badge%}}{{%bold%}}main.js{{%/bold%}}{{%/badge%}}: The {{%badge%}}main.js{{%/badge%}} file defines the functionality of the web application's home page. It is created as an empty file. <br> ### client-package json file The {{%badge%}}client-package.json{{%/badge%}} is the configuration file of your client resource. It contains the following specifics of your application by default: {{%code class="language-json line-numbers"%}}{ "name":"shipmentTracking", "version":"0.0.2", "homepage":"index.html", "login_redirect":"home.html", "404":"custom404.html" } {{%/code%}} * {{%badge%}}{{%bold%}}name:{{%/bold%}}{{%/badge%}} The name of the web client. Once you set a name for it and host the application, you must not change it. Changing the name of the web application after it has been hosted will result in an error. * {{%badge%}}{{%bold%}}version:{{%/bold%}}{{%/badge%}} The version of the web application that is hosted, in the decimal format. With every subsequent update of your application, you can modify the version number in an incremental manner. You cannot decrement the version number. * {{%badge%}}{{%bold%}}homepage:{{%/bold%}}{{%/badge%}} The URL of the web application's home page. If you modify the name of the index.html file, you must change the value accordingly in this file as well. <br> Apart from these mandatory specifics, you can include these properties as well: * {{%badge%}}{{%bold%}}description:{{%/bold%}}{{%/badge%}} The description of the web application. This can be modified during version upgrades. * {{%badge%}}{{%bold%}}login\_redirect:{{%/bold%}}{{%/badge%}} The page where the user has to be redirected after a successful login to the web application. * {{%badge%}}{{%bold%}}404:{{%/bold%}}{{%/badge%}} A custom 404 page that you can create for your application. Every time the users of your application try to access a non-existent page resulting in a 404 error, they will be redirected to this custom page. {{%note%}} {{%bold%}}Note:{{%/bold%}} * If you are providing a path to a custom 404 page using the {{%badge%}}404{{%/badge%}} key, you can name that file anything as you require. If you don't configure a {{%badge%}}404{{%/badge%}} key in the {{%badge%}}client-package.json{{%/badge%}} file, you can still include a page with the exact name {{%badge%}}404.html{{%/badge%}} in the directory. * Catalyst will search for the key {{%badge%}}404{{%/badge%}} in the {{%badge%}}clientpackage.json{{%/badge%}} file. If it exists, Catalyst will render that file in the event of a 404 error occurrence in the application. If no path for a custom 404 page is provided in your app, Catalyst will search for any file named _404.html_ in the client directory. If neither exists, the users will be redirected to a default 404 page provided by Catalyst. {{%/note%}} <br> You can further add more client files of your web application, and create sub-folders inside the client folder as you require. However, the {{%badge%}}client-package.json{{%/badge%}} file must be mandatorily present only in the root of your client resource and not in any sub-folders. {{%note%}} {{%bold%}}Note:{{%/bold%}} * A home page for your web application and the {{%badge%}}client-package.json{{%/badge%}} file are required to be present mandatorily in the client directory. The CSS and JS files are optional, based on your application's functionality. You can delete the {{%badge%}}main.css{{%/badge%}} and the {{%badge%}}main.js{{%/badge%}} files if you don't need them. * When hosting a web application, you must ensure that the specifics mentioned in the {{%badge%}}client-package.json{{%/badge%}} file are accurate, and you have followed all the guidelines mentioned above. To learn more about hosting a web application, refer to {{%link href="/en/cloud-scale/help/web-client-hosting/introduction/" %}}Web Client Hosting{{%/link%}} . * You can setup the client component at any time using the CLI while working with the project. To learn more, refer to {{%link href="/en/cli/v1/working-with-the-client/introduction/" %}}Working with the Client{{%/link%}} . {{%/note%}} -------------------------------------------------------------------------------- title: "catalyst.json" description: "The project directory structure refers to the default directory structure a Catalyst project is created in when you initialize it from the CLI." last_updated: "2026-03-18T07:41:08.548Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/project-directory-structure/catalyst-json/" service: "All Services" -------------------------------------------------------------------------------- # The catalyst json Configuration File The {{%badge%}}catalyst.json{{%/badge%}} file contains the configuration of the entire project's directory, i.e., the functions and the client directories. An exmaple snippet is shown below: {{% code class="language-json" %}}{ "functions": { "targets": [ "fn", "sendemail", "jaavafn", "mynode", "cert_gen_function" ], "ignore":[ ".output", ], "source":"functions" }, "client":{ "source":"client" } } {{% /code %}} ### Parameters It contains the following specifications of the functions and the client directories: * {{%badge%}}{{%bold%}}source:{{%/bold%}}{{%/badge%}} The source specifies the target folder names of the functions and the client directories. You must not modify these values. * {{%badge%}}{{%bold%}}targets:{{%/bold%}}{{%/badge%}} The targets specify the directory names of each individual function in the project. * {{%badge%}}{{%bold%}}ignore:{{%/bold%}}{{%/badge%}} This field specifies the files in the component directory, or in one of its sub-directories, that must be ignored while deploying the code to production. You can mention the files to be ignored inside the square brackets. You can list the files directly or use glob patterns to specify the files. For example, if you specify _\*.css_ , all CSS files in the particular directory will be ignored during the deployment. ### Points to Remember * The {{%badge%}}catalyst.json{{%/badge%}} file is created in the project directory irrespective of which components you initialize during the project creation from the CLI. Even if you do not select any components to initialize, the {{%badge%}}catalyst.json{{%/badge%}} file will be created. Therefore, when you create a project from the Catalyst UI console, you must initialize it from the CLI for {{%badge%}}catalyst.json{{%/badge%}} to be created with the configuration information of the project resources. * The {{%badge%}}catalyst.json{{%/badge%}} file is not mandatory if you host your web application from the Catalyst console i.e., when you host the client resource and deploy the functions individually from the console. However, if you deploy your application as a whole from the CLI, or from an external source like {{%link href="/en/devops/help/github-integration/introduction/" %}}GitHub{{%/link%}}, the {{%badge%}}catalyst.json{{%/badge%}} file must be mandatorily present in the root folder of your application. * If you rename the functions or the client directory, you must update the changes in {{%badge%}}catalyst.json{{%/badge%}} . * If you change the names of any of the functions, you must update the changes in {{%badge%}}catalyst.json{{%/badge%}} . * If you execute the {{%link href="/en/cli/v1/working-with-functions/set-up-functions/" %}} {{%badge%}}catalyst functions:setup{{%/badge%}} {{%/link%}} , {{%link href="/en/cli/v1/working-with-functions/add-functions/" %}} {{%badge%}}catalyst functions:add{{%/badge%}} {{%/link%}} , {{%link href="/en/cli/v1/working-with-the-client/set-up-client/" %}} {{%badge%}}catalyst client:setup{{%/badge%}} {{%/link%}} , or {{%link href="/en/cli/v1/pull-resources/introduction/" %}} {{%badge%}}catalyst pull{{%/badge%}} {{%/link%}} commands from the CLI, the configuration information of the function or client is automatically updated in the {{%badge%}}catalyst.json{{%/badge%}} file. * If you manually import any component files from an external development environment, you must create the configuration files in the format mentioned in this help page. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to serve and deploy your Catalyst resources using the {{%badge%}}catalyst.json{{%/badge%}} using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/implementation/#delete-operation" %}}here{{%/link%}}.{{%/note%}} ### Pull Resources -------------------------------------------------------------------------------- title: "Introduction" description: "Catalyst enables you to pull resources from a Catalyst project in the remote console to the same project in your local project directory through the CLI." last_updated: "2026-03-18T07:41:08.549Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/pull-resources/introduction/" service: "All Services" -------------------------------------------------------------------------------- # Pull Resources ### Introduction You can pull the features from a Catalyst project that was created in the UI console to the CLI easily. This allows you to download the components of a project from the console, to the same project that is active in your working directory in the CLI. You can use this feature to update your project directory with the changes that were made in the console. You can pull the three components of a Catalyst project: **Client**, **Functions**, **API Gateway Rules**. When you pull the client and function components, their respective home directories are created inside your working project directory. When you pull {{%link href="/en/cloud-scale/help/api-gateway/introduction/" %}}API Gateway{{%/link%}} rules, a JSON file that contains the definitions of the latest APIG rules will be pulled into your project's home directory. You can learn about the directory structure in detail from the {{%link href="/en/cli/v1/project-directory-structure/introduction/" %}}Project Directory Structure help page{{%/link%}} . {{%note%}} {{%bold%}}Note:{{%/bold%}} * If your working directory doesn't have an active Catalyst project associated with it, you will be unable to pull any resources. Make sure that you have initialized and associated the directory with a Catalyst project before pulling resources into it. * If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform the above mentioned CLI operations using your IDE in place of the CLI. Steps to perform Pull operations on your Catalyst projects using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/catalyst-tools-explorer/#pull-project-resources" %}}here{{%/link%}} {{%/note%}} -------------------------------------------------------------------------------- title: "Pull All Resources" description: "Catalyst enables you to pull resources from a Catalyst project in the remote console to the same project in your local project directory through the CLI." last_updated: "2026-03-18T07:41:08.549Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/pull-resources/pull-all-resources/" service: "All Services" -------------------------------------------------------------------------------- # Pull All Resources ### Command Execution To pull features from a Catalyst project to your CLI, navigate to the project directory where you want to pull the resources to, and execute the following command: {{%cli%}} catalyst pull {{%/cli%}} This will initiate the pull process. Select the resources that you want to pull. You can pull all three resources, or choose specific resources. Press {{%bold%}}Enter{{%/bold%}} after selecting the resources. <br /> ### Pull Functions If you selected Functions, select all the functions that you want to pull from your console to the project directory from the list. Press {{%bold%}}Enter{{%/bold%}} after making the selection. This will pull each function available in the console into its own directory in the {{%link href="/en/cli/v1/project-directory-structure/functions-directory/" %}}functions directory{{%/link%}} of your project, in your local machine. <br> ### Pull the Client If you selected _client_ , choose the client app version that you want to pull, from the list. The CLI displays all versions of your client application hosted in the remote console. Make the selection and press {{%bold%}}Enter{{%/bold%}} . The client files of the version you select will be pulled into the {{%link href="/en/cli/v1/project-directory-structure/client-directory/" %}}client directory{{%/link%}} of your project, in your local machine. <br> ### Pull API Gateway Rules If you selected API Gateway Rules, a {{%badge%}} {{%bold%}}catalyst-user-rules.json{{%/bold%}} {{%/badge%}} file will be created in your project's home directory. The latest definitions created for all your APIs in the remote console will be written to this file. You can learn about this file from the {{%link href="/en/cli/v1/working-with-api-gateway/introduction/" %}}Working with API Gateway CLI help page{{%/link%}} . If API Gateway is disabled for your project in the remote console, Catalyst will ask you to enable it from the CLI before pulling the API definitions. Type {{%bold%}}Y{{%/bold%}} and press {{%bold%}}Enter{{%/bold%}} to enable API Gateway. If API Gateway is enabled, the API definitions will be automatically pulled and added to the {{%badge%}}catalyst-user-rules.json{{%/badge%}} file. Catalyst will also update the {{%badge%}} {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}catalyst.json{{%/link%}} {{%/badge%}} file to include the information about the API Gateway rules JSON file. {{%note%}} {{%bold%}}Note:{{%/bold%}} If you selected a resource to be pulled and it does not exist in the remote console, the CLI will throw an error. For example, if no APIs were created in the remote console, no API Gateway rules will be pulled.{{%/note%}} <br> ### Overwrite Existing Resources If the function or the client directory, or the {{%badge%}}catalyst-user-rules.json{{%/badge%}} file, does not exist in your project's root folder, they will be automatically created before the resources are pulled. However, if a resource is already present in your project folder, the CLI will ask you for confirmation to overwrite the existing file. Type {{%bold%}}Y{{%/bold%}} to overwrite the existing files, or {{%bold%}}N{{%/bold%}} to decline, and press {{%bold%}}Enter{{%/bold%}} . If you confirm the overwriting, the pull process will be initiated. If you decline, the pull process will be aborted. <br /> -------------------------------------------------------------------------------- title: "Pull a Specific Resource" description: "Catalyst enables you to pull resources from a Catalyst project in the remote console to the same project in your local project directory through the CLI." last_updated: "2026-03-18T07:41:08.549Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/pull-resources/pull-specific-resource/" service: "All Services" -------------------------------------------------------------------------------- # Pull a Specific Resource You can pull a specific resource from your project in the following way: {{%cli%}} catalyst pull [feature] {{%/cli%}} You must specify the keyword {{%badge%}}client{{%/badge%}} , {{%badge%}}functions{{%/badge%}} , or {{%badge%}}apig{{%/badge%}} . For example, to pull functions alone, execute the following command from your project directory: {{%cli%}} catalyst pull functions {{%/cli%}} This will list all the functions that you can pull into your directory. You can select and pull the required resources as discussed in the previous section. ### Scripts -------------------------------------------------------------------------------- title: "Introduction" description: "Catalyst provides the functionality for automating CLI and terminal command executions during the testing or deployment process in the form of scripts." last_updated: "2026-03-18T07:41:08.549Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/scripts/introduction/" service: "All Services" -------------------------------------------------------------------------------- # Scripts ### Introduction Catalyst provides the functionality for automating CLI and terminal command executions during the testing or deployment process in the form of scripts. You can define Catalyst scripts in the {{%badge%}} {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}catalyst.json{{%/link%}} {{%/badge%}} file of your Catalyst project directory. Scripting enables abstraction of the details of processes behind a task runner. This helps you prevent performing iterative tasks manually, and automates the logic that needs to be executed during various stages of the testing or deployment process. Catalyst supports two kinds of scripts: 1. {{%bold%}}Lifecycle Scripts:{{%/bold%}} Scripts that are executed during various lifecycle events 2. {{%bold%}}Custom Scripts:{{%/bold%}} Scripts that you can define to be executed when you need You can also run a script manually and test it whenever you require, using the CLI. -------------------------------------------------------------------------------- title: "Lifecycle and Custom Scripts" description: "Catalyst provides the functionality for automating CLI and terminal command executions during the testing or deployment process in the form of scripts." last_updated: "2026-03-18T07:41:08.549Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/scripts/lifecycle-and-custom-scripts/" service: "All Services" -------------------------------------------------------------------------------- # Lifecycle and Custom Scripts Before you learn about writing a script, let's discuss the two types of scripts supported in Catalyst. Catalyst supports the following lifecycle scripts: 1. {{%badge%}} {{%bold%}}preserve:{{%/bold%}} {{%/badge%}} The script is run automatically before the {{%badge%}} {{%link href="/en/cli/v1/serve-resources/introduction/" %}}catalyst serve{{%/link%}} {{%/badge%}} command is executed. 2. {{%badge%}} {{%bold%}}postserve:{{%/bold%}} {{%/badge%}} The script is run automatically after the {{%badge%}}catalyst serve{{%/badge%}} command is executed. 3. {{%badge%}} {{%bold%}}predeploy:{{%/bold%}} {{%/badge%}} The script is run automatically before the {{%badge%}} {{%link href="/en/cli/v1/deploy-resources/introduction/" %}}catalyst deploy{{%/link%}} {{%/badge%}} command is executed. 4. {{%badge%}} {{%bold%}}postdeploy:{{%/bold%}} {{%/badge%}} The script is run automatically after the {{%badge%}}catalyst deploy{{%/badge%}} command is executed. You can set custom scripts to automatically execute any time you need them to, in the order that you need, by calling them inside the lifecycle scripts. {{%note%}} {{%bold%}}Note:{{%/bold%}} 1. All the above mentioned scripts will be executed in the source directory of the current Catalyst component. 2. You can choose to skip the executions of the lifecycle scripts configured in the {{%badge%}}catalyst.json{{%/badge%}} file while testing or deploying the components. To do so, you must execute the {{%badge%}}catalyst serve{{%/badge%}} or {{%badge%}}catalyst deploy{{%/badge%}} with the {{%badge%}}-\\-ignore-scripts{{%/badge%}} option. Refer to their respective help pages for details. {{%/note%}} -------------------------------------------------------------------------------- title: "Write a Script" description: "Catalyst provides the functionality for automating CLI and terminal command executions during the testing or deployment process in the form of scripts." last_updated: "2026-03-18T07:41:08.549Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/scripts/write-script/" service: "All Services" -------------------------------------------------------------------------------- # Write a Script ### Introduction You can define and execute scripts for the client and the functions of your project. You can execute Catalyst CLI commands and terminal commands of your local environment through scripts. You must write the scripts in the {{%badge%}}scripts{{%/badge%}} field of the {{%badge%}}functions{{%/badge%}} or {{%badge%}}client{{%/badge%}} scope in the {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}} {{%badge%}}catalyst.json{{%/badge%}} {{%/link%}} file present in the root of your project directory. This file contains the configuration and target information of your project directory components. A sample code structure of the {{%badge%}}catalyst.json{{%/badge%}} configuration file is shown below. <br> ### Sample Script Let's discuss the script shown in the picture above. The code of this {{%badge%}}catalyst.json{{%/badge%}} file defines two lifecycle scripts and two custom scripts. The execution of the lifecycle scripts will run the custom scripts. The scripts here are included inside the client's scope, because they are defined for the client component of the project. The code is given below: {{%code class="language-json line-numbers"%}}{ "functions": { "targets": [ "catly" ], "ignore": [], "source": "functions" }, "client": { "source": "client/app/build", "ignore": [], "scripts": { "packageJson": "cd client && cp client-package.json app/build/", "build": "cd client/app && yarn install && yarn build", "preserve": "catalyst run client:build && catalyst run client:packageJson", "predeploy": "catalyst run client:build && catalyst run client:packageJson" } } } {{%/code%}} When you execute a custom script inside a lifecycle script using the {{%link href="/en/cli/v1/scripts/run-script/" %}} {{%badge%}} catalyst run {{%/badge%}} {{%/link%}} command as shown in the example above, you must specify the component it is being executed for. This is necessary if, for example, there is a {{%badge%}}cd{{%/badge%}} (change directory) terminal command to be executed. The root of that component's directory will be considered as the directory the change directory command is executed from. <br> The logic flow of the scripts written above is as follows: 1. When you execute the {{%badge%}}catalyst serve{{%/badge%}} or {{%badge%}}catalyst deploy{{%/badge%}} command for the client component, the {{%badge%}}preserve{{%/badge%}} or {{%badge%}}predeploy{{%/badge%}} scripts are initiated respectively, before running the command. 2. Both the {{%badge%}}preserve{{%/badge%}} and {{%badge%}}predeploy{{%/badge%}} scripts contain the same command executions. The first action is the {{%badge%}}catalyst run client:build{{%/badge%}} command, which executes the {{%badge%}}build{{%/badge%}} custom script for the client component. The second action is the {{%badge%}}catalyst run client:packageJson{{%/badge%}} , which executes the {{%badge%}}packageJson{{%/badge%}} script for the client component. 3. The {{%badge%}}build{{%/badge%}} custom script performs the following actions in sequence: * The terminal is navigated to the {{%badge%}}client/app{{%/badge%}} directory. * The {{%badge%}}yarn install{{%/badge%}} command is executed to install Node.js dependencies using the Yarn package manager. * The {{%badge%}}yarn build{{%/badge%}} command is executed to build the client application. 4. The {{%badge%}}packageJson{{%/badge%}} custom script performs the following actions one after the other: * The terminal is navigated to the {{%badge%}}client{{%/badge%}} directory. * The {{%badge%}}client-package.json{{%/badge%}} file is copied from the client directory and is pasted to the {{%badge%}}app/build{{%/badge%}} directory. After these scripts are executed, the components are served or deployed. -------------------------------------------------------------------------------- title: "Run a Script" description: "Catalyst provides the functionality for automating CLI and terminal command executions during the testing or deployment process in the form of scripts." last_updated: "2026-03-18T07:41:08.550Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/scripts/run-script/" service: "All Services" -------------------------------------------------------------------------------- # Run a Script You can also manually run a script whenever you need using the CLI, to test its execution. You can list the scripts available in the project directory by navigating to the directory and executing either of the following CLI commands: {{%cli%}} catalyst run-script | run {{%/cli%}} <br> The CLI will display the lifecycle and custom scripts that are configured and available for each component in the {{%badge%}} {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}catalyst.json{{%/link%}} {{%/badge%}} file. <br> You can directly run a script by executing the {{%badge%}}run{{%/badge%}} command with the script's name as shown below: {{%cli%}} catalyst run-script | run [command] {{%/cli%}} For example, to run the custom script {{%badge%}}packageJson{{%/badge%}} , execute the following command from the project directory: {{%cli%}} catalyst run client:packageJson {{%/cli%}} <br> This will execute the {{%badge%}}packageJson{{%/badge%}} script defined in the example. ### Serve Resources -------------------------------------------------------------------------------- title: "Introduction" description: "Catalyst enables you to test your project resources locally using the CLI before deploying them to the remote console." last_updated: "2026-03-18T07:41:08.550Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/serve-resources/introduction/" service: "All Services" -------------------------------------------------------------------------------- # Serve Resources ### Introduction Catalyst CLI allows you the convenience of testing your project resources locally before {{%link href="/en/cli/v1/deploy-resources/introduction/" %}}deploying them to the cloud{{%/link%}}. You can serve the resources through a localhost in your system for testing without affecting the live version of your application. You can serve these components of your project through the local server: **{{%link href="/en/serverless/help/functions/basic-io/" %}}Basic I/O functions{{%/link%}}**, **{{%link href="/en/serverless/help/functions/advanced-io/" %}}Advanced I/O functions{{%/link%}}**, **{{%link href="/en/smartbrowz/help/browser-logic/introduction/" %}}Browser Logic Functions{{%/link%}}**, **{{%link href="/en/serverless/help/appsail/introduction/" %}}AppSail apps{{%/link%}}**, **{{%link href="/en/cli/v1/initialize-resources/initialize-client/#angular-applications" %}}Angular web apps{{%/link%}}**, **{{%link href="/en/cli/v1/initialize-resources/initialize-client/#react-applications" %}}React web apps{{%/link%}}**, and **{{%link href="/en/cli/v1/initialize-resources/initialize-client/#basic-client-applications" %}}Basic web apps{{%/link%}}**. {{%note%}} {{%bold%}}Note:{{%/bold%}} Catalyst will not be able to serve functions of the other types, i.e., Cron, Event, and Integration functions, as their endpoints are not directly accessible through URLs.{{%/note%}} The {{%badge%}}serve{{%/badge%}} command also enables you to start a local server from any port, or start the server in a debug mode to analyze the execution of your code in detail. You can test specific targets of your project, proxy unknown requests to the local host URL, or ignore scripts. All these actions can be performed using the various options available for the serve command. {{%note%}} {{%bold%}}Note:{{%/bold%}} * You can also launch a node shell exclusively to test and debug functions of all types except the Advanced I/O functions. To learn more about this, refer to the {{%link href="/en/cli/v1/working-with-functions/introduction/" %}}Working with Functions help page{{%/link%}}. * The functions, client, and AppSail packages can be served successfully only if their directories are in the standard structures. The directories must contain the required configuration files in the standard format. For more information, refer to the {{%link href="/en/cli/v1/project-directory-structure/introduction/" %}}Project Directory Structure help page{{%/link%}}. * To serve an AppSail app, you will need to have initialized an AppSail resource either {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}during the project initialization{{%/link%}} or by {{%link href="/en/cli/v1/add-appsail/" %}}adding it in an existing project directory{{%/link%}}. * If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to serve your Catalyst resources using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/implementation/#serve-operation" %}}here{{%/link%}}. {{%/note%}} -------------------------------------------------------------------------------- title: "Serve All Resources" description: "Catalyst enables you to test your project resources locally using the CLI before deploying them to the remote console." last_updated: "2026-03-18T07:41:08.550Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/serve-resources/serve-all-resources/" service: "All Services" -------------------------------------------------------------------------------- # Serve All Resources ### Serve Command Execution You can host the Basic I/O, Advanced I/O, and Browser Logic functions; AppSail apps; Angular, React, and Basic web client components of your Catalyst project locally by navigating to your project directory and executing the following command: {{%cli%}} catalyst serve {{%/cli%}} This will start a local server in a default port and serve your resources at the endpoint. The CLI will display the URLs of the local endpoints of your client, AppSail, and function endpoints that are served. As mentioned earlier, Catalyst can only serve Basic I/O, Advanced I/O, and Browser Logic functions. Therefore, if there are any Cron, Event, or Integration functions in your project directory, they will be skipped from being served. Similarly, the API Gateway Rules JSON file will also be skipped from being served. <br> ### Serve Functions and Basic Web Applications You can test the Basic I/O, Advanced I/O, and Browser Logic functions that are hosted through the local server by accessing their URL endpoints. These endpoints can be accessed from an IDE environment or in your browser. The web client will open in your default browser automatically, after it is hosted through the local server. {{%note%}} {{%bold%}}Note:{{%/bold%}} You can disable the automatic opening of the web client URL in your browser using the {{%link href="/en/cli/v1/serve-resources/serve-options/#--no-open" %}} {{%badge%}}\--no-open {{%/badge%}}{{%/link%}} option.{{%/note%}} <br> When you access the home page or any of the sub-pages of your client, or your function endpoints after they are served, the CLI will display a live log of the endpoints accessed along with the request methods that are used to access them. The function invocation information also includes log levels and other log entries as shown below. <br> ### Serve Angular Applications Angular applications in your project will be served similarly. The Catalyst plugin for your Angular app, {{%badge%}} {{%link href="/en/cli/v1/initialize-resources/initialize-client/#angular-applications" %}}zcatalyst-cli-plugin-angular{{%/link%}}{{%/badge%}} , which is installed when the Angular app is initialized, will handle the serve session. Angular implements {{%link href="https://webpack.js.org/concepts/hot-module-replacement/" %}} Hot Module Replacement {{%/link%}} (HMR). The HMR is a Webpack feature that updates and reloads specific modules, without recompiling and reloading the entire project, when changes are made during a serve session. HMR is enabled when you serve the application through the Catalyst CLI by default. {{%note%}} {{%bold%}}Note:{{%/bold%}} You can disable the live watch using the {{%badge%}} {{%link href="/en/cli/v1/serve-resources/serve-options/#--no-watch" %}}\--no-watch{{%/link%}} {{%/badge%}} option while serving a component.{{%/note%}} <br> When the Angular app is served, the modules in the app, such as {{%badge%}}/router{{%/badge%}} , {{%badge%}}/common{{%/badge%}} etc are all compiled initially. The CLI displays the details of the compilation and the build generation. You can also see the details of the individual files in the application, like the initial chunk files and their sizes. These fall under the default norms of the build and serve processes of Angular apps. <br> The CLI will redirect to the default browser to open the web client automatically after the compilation is done. You can disable this using the {{%badge%}} {{%link href="/en/cli/v1/serve-resources/serve-options/#--no-open" %}}\--no-open{{%/link%}} {{%/badge%}} option, similar to the basic web apps. You can see the live log of the endpoints accessed along with the request methods, in an Angular app's serve session as well. <br> If the HMR has not been disabled, the changes you make in your Angular app will be reflected live in the serve session without a recompilation and reload of the entire component. The CLI will display the live logs of the updated modules, such as the details of the changed chunk files. <br> ### Serve React Applications A Catalyst React app will be served similar to an Angular app. The Catalyst plugin for your React app, {{%link href="/en/cli/v1/initialize-resources/initialize-client/#react-applications" %}} {{%badge%}}zcatalyst-cli-plugin-react{{%/badge%}} {{%/link%}} , which is installed when the React app is initialized, will handle the serve session. React applications implement {{%link href="https://webpack.js.org/concepts/hot-module-replacement/" %}}Hot Module Replacement{{%/link%}} (HMR) similar to Angular applications. The HMR is a Webpack feature that updates and reloads specific modules, without recompiling and reloading the entire project, when changes are made during a serve session. HMR is enabled when you serve the application through the Catalyst CLI by default. {{%note%}} {{%bold%}}Note:{{%/bold%}} You can disable the live watch using the {{%link href="#Nowatch" %}}{{%badge%}}-\-no-watch {{%/badge%}}{{%/link%}} option while serving a component.{{%/note%}} <br> When the React app is served, the plugin compiles into a development build. The CLI displays the details of the compilation and the local endpoint to access the app. <br> The CLI will redirect to the default browser to open the web client automatically after the compilation is done. You can disable this using the {{%badge%}} {{%link href="/en/cli/v1/serve-resources/serve-options/#--no-open" %}}-\\-no-open{{%/link%}} {{%/badge%}} option, similar to the basic web apps. You can see the live log of the endpoints accessed along with the request methods, in a React app's serve session as well. If the HMR has not been disabled, the changes you make in your React app will be reflected live in the serve session without a recompilation and reload of the entire component. The CLI will display the live logs of the updated modules. <br> ### Serve AppSail Applications The serve process for an AppSail app will be initiated depending on the stack, runtime, and framework of the app, as well as any embedded web server used. Based on these factors, your compiled code could be of any format in any structure. Refer to {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#common-build-files" %}}Common Build Files{{%/link%}} help section of AppSail for details. {{%note%}} {{%bold%}}Note:{{%/bold%}} Catalyst serves all the executable files of your AppSail app present in the build path that you specified during the app initialization. You need not bundle or zip all the build files together, as AppSail will automatically bundle them during the application serve.{{%/note%}} <br> You will also need to have the {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#startup-commands" %}}startup commands{{%/link%}}, {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#environmental-variables" %}}environmental variables{{%/link%}}, as well as the required {{%link href="/en/serverless/help/appsail/key-concepts/appsail-execution/#memory-allocation" %}}memory allocation{{%/link%}} configured for your apps. {{%note%}} {{%bold%}}Note:{{%/bold%}} <br> * You need not configure any particular ports or startup commands for serving an AppSail app specifically. You can simply serve a deployable app, and Catalyst will handle all the required processes internally. * Catalyst CLI provides a live watch mode by default, which allows you to perform hot reload of the resources that are being served. However, this is currently not available for Catalyst AppSail applications and they will be served without a live watch mode. {{%/note%}} <br> After you test the project resources, you can quit the serve session in your terminal by killing the running command based on your local environment. This will shut the local server down. ### Serve a Slate App You can host the Slate application in your Catalyst project locally by navigating to your project directory in local and executing the following command: {{%cli%}}catalyst serve --only slate{{%/cli%}} This catalyst serve command launches your Slate app locally by executing the {{%badge%}}dev_command{{%/badge%}} defined in your {{%badge%}}cli-config.json{{%/badge%}} file. This {{%badge%}}dev_command{{%/badge%}} will be configured in the file when you {{%link href="/en/cli/v1/working-with-slate/link-slate-app/" %}}link{{%/link%}} or {{%link href="/en/cli/v1/working-with-slate/create-slate-app/" %}}create a Slate app{{%/link%}}. Before running the catalyst serve command, you must update the ensure that the {{%badge%}}dev_command{{%/badge%}} to include the start command of your application with the {{%badge%}}ZC_SLATE_PORT{{%/badge%}}. For example, if you're working with a React app, update the command to: {{%badge%}}PORT=$ZC_SLATE_PORT npm start{{%/badge%}} You will have to configure your start command here based on the framework of your application. You can refer to the below table for the default start commands of the frameworks supported by Catalyst Slate. You can modify the start command based on your application's needs, if required. <table class="content-table"> <thead> <tr> <th class="w25p">Framework</th> <th class="w75p">Default Start Command</th> </tr> </thead> <tbody> <tr> <td>Create React App</td> <td>{{%badge%}}PORT=$ZC_SLATE_PORT npm start{{%/badge%}}</td> </tr> <tr> <td>Solid JS(Vite)</td> <td>{{%badge%}}npm run dev -\- -\-port $ZC_SLATE_PORT{{%/badge%}}</td> </tr> <tr> <td>React + Vite</td> <td>{{%badge%}}npm run dev -\- -\-port $ZC_SLATE_PORT{{%/badge%}}</td> </tr> <tr> <td>Next.js</td> <td>{{%badge%}}npm run dev -\- -\-port $ZC_SLATE_PORT{{%/badge%}}</td> </tr> <tr> <td>Astro</td> <td>{{%badge%}}npm run dev -\- -\-port $ZC_SLATE_PORT{{%/badge%}}</td> </tr> <tr> <td>Angular</td> <td>{{%badge%}}npm start -\- -\-port $ZC_SLATE_PORT{{%/badge%}}</td> </tr> <tr> <td>Vue (Vite)</td> <td>{{%badge%}}npm run dev -\- -\-port $ZC_SLATE_PORT{{%/badge%}}</td> </tr> <tr> <td>Preact</td> <td>{{%badge%}}npm run dev -\- -\-port $ZC_SLATE_PORT{{%/badge%}}</td> </tr> <tr> <td>Svelte</td> <td>{{%badge%}}npm run dev -\- -\-port $ZC_SLATE_PORT{{%/badge%}}</td> </tr> </tbody> </table> When you serve the slate app, the start command mentioned in the cli-config.json file runs the application on a local server and the CLI will display the URL from which you can access your Slate application. After you have finished testing your application locally, you can proceed to deploy it to the remote console. We will discuss about the deployment commands in the next section. -------------------------------------------------------------------------------- title: "Serve Options" description: "Catalyst enables you to test your project resources locally using the CLI before deploying them to the remote console." last_updated: "2026-03-18T07:41:08.551Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/serve-resources/serve-options/" service: "All Services" -------------------------------------------------------------------------------- # Catalyst Serve Options Catalyst CLI enables a variety of options that you can use with the {{%badge%}}catalyst serve{{%/badge%}} command. ### \--http &lt;port&gt; You can serve the resources locally in any port you require, other than the default port 3000\. You can do this by using the {{%badge%}}-\\-http{{%/badge%}} option and including the port number where you need the resources to be served from. For example, to serve your resources from port 2000, execute the following command from your project directory: {{%cli%}} catalyst serve --http 2000 {{%/cli%}} <br> ### \--debug &lt;type:port&gt; Catalyst enables you to start the local server in the debug mode and attach a debugger to the live server. You can debug the code of your Basic I/O and Advanced I/O functions of your project. You can associate the server to a debugger instance of your IDE that you use to develop the code with. This allows you to debug the execution of your functions, and identify the errors and issues in the code. {{%note%}}{{%bold%}}Note:{{%/bold%}} The catalyst serve {{%badge%}}--debug{{%/badge%}} command is only available for Java and Node.js functions, and is not supported for Python functions. You can use a Python IDE for this purpose, and attach a local debugger to it. You can then serve the Python function and test it locally. Refer to {{%link href="/en/cli/v1/working-with-functions/functions-shell/#debugging-python-functions" %}}this help page{{%/link%}} for detailed steps to debug and serve Python functions.{{%/note%}} You can also choose to start the server at a port of your choice similar to the {{%badge%}}\--http&lt;port&gt; {{%/badge%}} option. The default port where Basic I/O functions are attached to the debugger is 8010 and Advanced I/O functions is 8000. <br> You can start the local server in the debug mode by executing the following command from the project directory: {{%cli%}} catalyst serve --debug &lt;advancedio:name:port,basicio:port&gt; {{%/cli%}} You have to specify the name of the Advanced I/O functions while using this option. You need not specify the names of the Basic I/O functions For example: {{%cli%}} catalyst serve --debug advancedio:InvoiceFetch:2000,basicio:4000 {{%/cli%}} <br> This will start the local server at the default port 3000\. The resources will be served and the local endpoints will be displayed. You can then attach the debugger at port 2000 for the Advanced I/O function, and port 4000 for the Basic I/O functions. The server will be listening at these ports for the debugger. <br> After you see this message, open your IDE and attach the debugger to the ports you specified for the functions. The CLI will display a confirmation message after it is attached. You can now test your resources and debug them. The CLI will display the errors caught by the debugger, along with their details. <br> ### \--proxy&lt;url&gt; Catalyst enables you to proxy an unknown request to the localhost URL generated by the server in the CLI. This allows you to proxy the requests that are encountered during the serve of functions. Such requests will be proxied to the Catalyst console by default. You can specify the URL to proxy the unknown requests to, while executing the serve command as follows: {{%cli%}} catalyst serve --proxy &lt;url&gt; {{%/cli%}} <br> ### \--only&lt;targets&gt; You can serve specific targets instead of all the resources using this option. For example, you can serve specific functions, or the client package alone. To serve specific targets, execute the {{%badge%}}catalyst serve{{%/badge%}} command with the {{%badge%}}-\\-only{{%/badge%}} option followed by the targets to be served as shown below: {{%cli%}} catalyst serve --only client {{%/cli%}} <br /> <br /> ### \--no-watch Catalyst CLI provides a live watch mode by default, which allows you to perform hot reload of the resources that are being served. This enables you to view the updates of the changes you make instantly, without having to re-compile or re-serve the code. However, if you require the live watch mode to be disabled, you can do so using this option. You can use this option if you don't have to make changes in the code, such as while serving a production-ready build, or if don't require the updates to be reflected live. You can serve resources with the default live watch disabled as shown below: {{%cli%}} catalyst serve --no-watch {{%/cli%}} This will make the server compile the code only when the code is served initially. The server will not watch for changes after the code is served. The updates will not be reflected live when you test the resources. If you require the default live watch mode to be enabled again, you must exit the serve session, and re-serve the code without using this option. <br> ### \--except&lt;targets&gt; You can choose to exclude specific resources from being served using this option. For example, you can exclude specific functions or the client package. To exclude a specific function, execute the {{%badge%}}catalyst serve{{%/badge%}} command with the {{%badge%}}\--except{{%/badge%}} option followed by the target name as shown below: {{%cli%}} catalyst serve -- except functions:InvoiceGeneration {{%/cli%}} <br> ### \--ignore-scripts Catalyst enables you to automate the CLI and terminal command executions by defining scripts in the {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}} {{%badge%}}catalyst.json{{%/badge%}} {{%/link%}} file in your project directory. You can define two lifecycle scripts to execute before and after the {{%badge%}}catalyst serve{{%/badge%}} command respectively: {{%badge%}}preserve{{%/badge%}}, {{%badge%}}postserve{{%/badge%}} . You can learn more about the lifecycle and custom scripts from the {{%link href="/en/cli/v1/scripts/introduction/" %}}Scripts help page{{%/link%}} . If you use the {{%badge%}}\--ignore-scripts{{%/badge%}} option while executing the {{%badge%}}catalyst serve{{%/badge%}} command, the CLI will ignore the actions configured for the {{%badge%}}preserve{{%/badge%}} and {{%badge%}}postserve{{%/badge%}} scripts in the {{%badge%}}catalyst.json{{%/badge%}} file of your project directory. The deployment process will proceed without the execution of these lifecycle scripts. You can use the {{%badge%}}\--ignore-scripts{{%/badge%}} option as follows: {{%cli%}} catalyst serve --ignore-scripts {{%/cli%}} The serving process will be the same as discussed earlier. <br> ### \--no-open When you execute the serve command and the server hosts the code, the CLI will redirect you to your default browser automatically to open the client component in your project. If you require this automatic redirection to be disabled, you can execute the serve command with this option as shown below: {{%cli%}} catalyst serve --no-open {{%/cli%}} The CLI will display the localhost URL of all the served components as usual. You can still open the web client manually by accessing the URL, if you require. You can use this option when you don't require the client component to be tested, or while performing a test run of a production-ready build. ### Working with API Gateway -------------------------------------------------------------------------------- title: "Introduction" description: "Catalyst CLI provides options for you to enable or disable API Gateway, and obtain the status of API creation in your local environment." last_updated: "2026-03-18T07:41:08.551Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-api-gateway/introduction/" service: "All Services" -------------------------------------------------------------------------------- # Working with API Gateway ### Introduction Catalyst provides API Gateway as an advanced API management tool that enables you to create, maintain, and monitor HTTP requests generated from client applications and microservices. Catalyst API Gateway acts as an entryway into accessing the Basic I/O and Advanced I/O functions, as well as the web client components of your application. To learn more about this component in detail, refer to the {{%link href="/en/cloud-scale/help/api-gateway/introduction/" %}} **API Gateway help documentation** {{%/link%}} . The CLI provides options for you to perform the following actions in your application's API Gateway: * Enable the API Gateway * Obtain the status of the API Gateway and schedule progress * Disable the API Gateway After you enable the API Gateway for your project, you will be able to set up a JSON file in your project directory that contains the definitions of each API you create in your application. We will discuss this in detail in this help document. You can work on this JSON from the local environment and {{%link href="/en/cli/v1/deploy-resources/introduction/" %}}deploy it to the remote console{{%/link%}} , similar to the functions or client component. You can also pull the latest API definitions created in your remote console to your local project directory, and update the API Gateway JSON file. You can learn about this from the {{%link href="/en/cli/v1/pull-resources/introduction/" %}}Pull Resources help page{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to work with API Gateway using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/catalyst-tools-explorer/" %}}here{{%/link%}}.{{%/note%}} -------------------------------------------------------------------------------- title: "Enable API Gateway" description: "Catalyst CLI provides options for you to enable or disable API Gateway, and obtain the status of API creation in your local environment." last_updated: "2026-03-18T07:41:08.552Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-api-gateway/enable-api-gateway/" service: "All Services" -------------------------------------------------------------------------------- # Enable API Gateway You can enable API Gateway from the CLI for your project if it is disabled. You must enable it before you access it for the first time. {{%note%}} {{%bold%}}Note:{{%/bold%}} When you enable the API Gateway for your Catalyst application, the configurations in {{%link href="/en/serverless/help/security-rules/introduction/" %}}Security Rules{{%/link%}} are automatically disabled. The functions and the web client hosted in your Catalyst project will immediately become inaccessible until you create APIs for them. You should therefore proceed with caution. Ensure that you create APIs for all your functions and web client immediately after enabling API Gateway. You must also ensure that the end users do not access them in the meantime.{{%/note%}} <br> To enable API Gateway for your project, execute the following command from your project directory: {{%cli%}} catalyst apig:enable {{%/cli%}} <br> The CLI will enable the component and update the configuration files with the API Gateway's status. This will also enable the API Gateway in the remote console. <br> You can always check the API Gateway's status of your project in the {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}{{%badge%}}catalyst.json{{%/badge%}}{{%/link%}} file in your project directory. The {{%badge%}}enabled{{%/badge%}} parameter for the {{%badge%}}apig{{%/badge%}} configuration will be updated to {{%badge%}}true{{%/badge%}} . <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to work with API Gateway using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/catalyst-tools-explorer/" %}}here{{%/link%}}.{{%/note%}} -------------------------------------------------------------------------------- title: "Obtain API Gateway Status" description: "Catalyst CLI provides options for you to enable or disable API Gateway, and obtain the status of API creation in your local environment." last_updated: "2026-03-18T07:41:08.552Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-api-gateway/obtain-api-gateway-status/" service: "All Services" -------------------------------------------------------------------------------- # Obtain API Gateway Status ### Command Execution You can obtain the current status of your project's API Gateway to verify if it is enabled or disabled. If API creation is in progress in API Gateway, for example an {{%link href="/en/cloud-scale/help/api-gateway/key-concepts/#auto-created-apis-custom-apis-and-the-default-api" %}}auto-creation{{%/link%}} process is in progress, this will also display the status of the schedule progress and inform you of its current state. To obtain the status of your project's API Gateway and its schedule progress, execute the following command from your project directory: {{%cli%}} catalyst apig:status {{%/cli%}} The current status will be displayed. <br /> ### API Gateway Status Options You can also obtain the previous schedule status of your project's API Gateway, instead of the current status by executing the {{%badge%}}$ catalyst apig:status{{%/badge%}} with the following option: {{%cli%}} catalyst apig:status --previous {{%/cli%}} This will display the previous recorded status of the API Gateway component. If the component was previously disabled or enabled, the CLI will inform you of this. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to work with API Gateway using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/catalyst-tools-explorer/" %}}here{{%/link%}}.{{%/note%}} -------------------------------------------------------------------------------- title: "API Gateway JSON File" description: "Catalyst CLI provides options for you to enable or disable API Gateway, and obtain the status of API creation in your local environment." last_updated: "2026-03-18T07:41:08.552Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-api-gateway/api-gateway-json-file/" service: "All Services" -------------------------------------------------------------------------------- # API Gateway JSON File As mentioned in the introduction, you can include a JSON file in your project directory that will contain the definitions of each API created in the API Gateway component for your application. This {{%badge%}}{{%bold%}}catalyst-user-rules.json{{%/bold%}} {{%/badge%}} file is created in the {{%link href="/en/cli/v1/project-directory-structure/introduction/" %}}project's home directory{{%/link%}}. If you have not created any APIs in your project, you can still fetch the {{%badge%}}catalyst-user-rules.json{{%/badge%}} file with sample API definitions using the {{%link href="/en/cli/v1/pull-resources/introduction/" %}}{{%badge%}}catalyst pull{{%/badge%}} {{%/link%}} command. This file will include the definitions for the {{%link href="/en/cloud-scale/help/api-gateway/key-concepts/#auto-created-apis-custom-apis-and-the-default-api" %}}default API{{%/link%}} called {{%badge%}}Login Redirect{{%/badge%}} even if custom APIs have not yet been created. Sample definitions for a Basic I/O and an Advanced I/O function will also be included. If custom APIs have been created in the remote console, their latest definitions will be pulled to your project directory. The JSON file will contain the definitions of an API's source, target, the request method, and the details of the throttling limits and request processor, if configured. You can define new APIs or modify existing API definitions in the local environment, and update it to the remote console by deploying the API Gateway rules using the {{%link href="/en/cli/v1/deploy-resources/introduction/" %}}{{%badge%}}catalyst deploy{{%/badge%}} command{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to work with API Gateway using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/catalyst-tools-explorer/" %}}here{{%/link%}}.{{%/note%}} -------------------------------------------------------------------------------- title: "Disable API Gateway" description: "Catalyst CLI provides options for you to enable or disable API Gateway, and obtain the status of API creation in your local environment." last_updated: "2026-03-18T07:41:08.552Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-api-gateway/disable-api-gateway/" service: "All Services" -------------------------------------------------------------------------------- # Disable API Gateway You can disable the API Gateway in your project at any time from the CLI. This will immediately re-enable the definitions configured in the {{%link href="/en/serverless/help/security-rules/introduction/" %}}Security Rules{{%/link%}} . {{%note%}} {{%bold%}}Note:{{%/bold%}} If you re-enable API Gateway after disabling it, all the APIs that you had created will still be available and will immediately be re-enabled when API Gateway is re-enabled. You will not have to create the same APIs again.{{%/note%}} <br> To disable API Gateway for your project, execute the following command from your project directory: {{%cli%}} catalyst apig:disable {{%/cli%}} <br> The CLI will disable the component and update the {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}} {{%badge%}}catalyst.json{{%/badge%}} {{%/link%}} file with the API Gateway's status. The {{%badge%}}enabled{{%/badge%}} parameter for the {{%badge%}}apig{{%/badge%}} configuration will be updated to {{%badge%}}false{{%/badge%}}. This will also disable the API Gateway in the remote console. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to work with API Gateway using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/catalyst-tools-explorer/" %}}here{{%/link%}}.{{%/note%}} ### Working with Functions -------------------------------------------------------------------------------- title: "Introduction" description: "Catalyst CLI enables you to set up the functions component even after the project is initialized, add multiple functions in your project, configure their memory, test functions in a Node shell, and delete them." last_updated: "2026-03-18T07:41:08.552Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-functions/introduction/" service: "All Services" -------------------------------------------------------------------------------- # Working with Functions ### Introduction Catalyst CLI enables you to set up and work with the project components that you did not initialize during the project initialization. You can set up the client and the functions directories from the CLI at any time while working with the project. This feature is very convenient if you did not initialize the functions package during the project initialization, or if you initialized an empty project, and then later need the functions component to be added to your application. You can set up the functions directory with one function, and later add more functions to it as needed. You can learn more about Catalyst functions from the {{%link href="/en/serverless/help/functions/introduction/" %}}Functions help page.{{%/link%}} When a Java, Node.js, or Python function is initialized or set up, the dependent files and the configuration files are added automatically to the function's folder by Catalyst. Therefore, it is recommended you create Catalyst functions either using the CLI or the Catalyst console. This allows for the boilerplate code of the dependency files to be added properly in the {{%link href="/en/cli/v1/project-directory-structure/introduction/" %}}standard project directory structure{{%/link%}} . The updated information about the function component will also be added to the {{%badge%}} {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}catalyst.json{{%/link%}} {{%/badge%}} file when you set it up. You can also launch a node shell for testing, executing, and debugging Catalyst functions locally from the CLI after you code them. The CLI also lets you delete the deployed functions. We will discuss each of these CLI commands in this help document. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to work with Catalyst functions using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/implementation/#functions" %}}here{{%/link%}}{{%/note%}} -------------------------------------------------------------------------------- title: "Set up Functions" description: "Catalyst CLI enables you to set up the functions component even after the project is initialized, add multiple functions in your project, configure their memory, test functions in a Node shell, and delete them." last_updated: "2026-03-18T07:41:08.552Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-functions/set-up-functions/" service: "All Services" -------------------------------------------------------------------------------- # Set Up Functions ### Set Up Function Type 1. You can set up the functions directory in your project by navigating to your project directory and executing the following command in your CLI: {{%cli%}} catalyst functions:setup {{%/cli%}} <br /> The procedure is the same as {{%link href="/en/cli/v1/initialize-resources/initialize-functions/" %}}initializing the functions directory{{%/link%}} during the project initialization. 2. Select the type of function you would like to develop and press {{%bold%}}Enter{{%/bold%}} .<br /> <br /> The six types of functions that you can develop in Catalyst are: Basic I/O, Advanced I/O, Event, Cron, Browser Logic, Integration, and Browser Logic functions. To learn more about the function types and their purposes, refer to the {{%link href="/en/serverless/help/functions/basic-io/" %}} **Functions help page.** {{%/link%}} <br> **Integration Functions:** <br> The CLI initialization process is the same for all the other function types, except the Integration functions. If you select _Integration_ from the list, you have to perform these two extra steps before moving on to the next step:<br><br> i. Select the service that you want to integrate with. You can currently only select {{%bold%}}Cliq{{%/bold%}} integration.<br /> ii. Select the handlers that you require. You can learn more about this from the {{%link href="/en/serverless/help/functions/integration-functions/" %}}Integration Functions help page{{%/link%}} .<br /> The rest of the setup process is the same for all function types. The process only varies with the function stack. {{%note%}}{{%bold%}}Note:{{%/bold%}} Cliq Integration Functions is currently not available to Catalyst users accessing from the EU, AU, IN, or CA data centers. ConvoKraft Integration Functions are available to users accessing from all DCs.{{%/note%}} <br> 3. Select a stack to develop the server side functions in and press {{%bold%}}Enter{{%/bold%}} . The list displays all supported runtimes. You can select the latest supported runtime of {{%bold%}}Java{{%/bold%}}, {{%bold%}}Node.js {{%/bold%}}, or {{%bold%}}Python{{%/bold%}} from the list.<br /> {{%note%}} {{%bold%}}Note:{{%/bold%}} You can include Java, Node.js, or Python functions in a single function directory using the {{%badge%}} {{%link href="/en/cli/v1/working-with-functions/add-functions/" %}}catalyst functions:add{{%/link%}} {{%/badge%}} command.{{%/note%}} <br> ### Set Up a Java Function of Any Type 1. If you set up a Java function, select the required runtime from the supported runtimes: **Java 8**, **Java 11**, **Java 17**. <br> {{%note%}}{{%bold%}}Note:{{%/bold%}} Before choosing your version of Java function stack, ensure you have the relevant JDK installed in your system. You can also install the relevant JDKs from the following links: * {{%link href="https://www.oracle.com/technetwork/java/javase/downloads/index.html" %}}Java 8{{%/link%}} * {{%link href="https://www.oracle.com/in/java/technologies/javase/jdk11-archive-downloads.html" %}}Java 11{{%/link%}} * {{%link href="https://www.oracle.com/java/technologies/downloads/#java17" %}}Java 17{{%/link%}} {{%/note%}} 2. Enter the reference name of the Java function when prompted and press **Enter**, and enter the main class name of the Java function and press **Enter**. The CLI will then download the {{%link href="/en/sdk/java/v1/overview/" %}}Java SDK package{{%/link%}} and complete the functions setup process. <br> 3. If it is your first time initializing or setting up **Java 11** or **Java 17** function, you will need to additionally set the path information of the JDKs installed in your system. You can set this information in a specific configuration file that is present in your local system as a hidden file. The path of the installed JDKs will need to be set using the {{%badge%}}config:set &lt;key=value&gt;{{%/badge%}} CLI command. You can find out more about this command from this {{%link href="/en/cli/v1/cli-config/" %}}help document{{%/link%}}. Set the path information in the configuration file as shown in the example below: **Java 11**: {{%cli%}}catalyst config:set java11.bin=/Library/Java/JavaVirtualMachines/jdk-11.0.17.jdk/Contents/Home/bin{{%/cli%}} <br /> **Java 17**: {{%cli%}}catalyst config:set java17.bin=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home/bin{{%/cli%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} * Replace the path listed in the above commands with your JDK path. * If your local system is running on {{%bold%}}Windows OS{{%/bold%}}, kindly enclose the path in double-quotes. For example, you will set the Java 11 path in the following manner:<br /> {{%cli%}}catalyst config:set java11.bin="/Library/Java/JavaVirtualMachines/jdk-11.0.17.jdk/Contents/Home/bin"{{%/cli%}}{{%/note%}} <br /> The Java function's folder will be created with the main {{%badge%}}.java{{%/badge%}} class file, the library JAR files, {{%badge%}}catalyst-config.json{{%/badge%}} , and other configuration files. These values will be updated in the {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}{{%badge%}}catalyst.json{{%/badge%}}{{%/link%}} configuration file. <br> <br /> You can learn about the Java function directory structure in detail from the {{%link href="/en/cli/v1/project-directory-structure/functions-directory/" %}}Project Directory Structure help page{{%/link%}} .<br /> ### Set Up a Node.js Function of Any Type 1. If you set up a Node.js function, select the required runtime from the supported runtimes: **Node 20**, **Node 18**, **Node 16**, **Node 14**, **Node 12**. <br> 2. Provide a package name for your Node function when prompted and press {{%bold%}}Enter{{%/bold%}} .<br /> 3. Enter the name of the entry point file and press {{%bold%}}Enter{{%/bold%}} .<br /> 4. Enter a name for the function author and press {{%bold%}}Enter{{%/bold%}} .<br /> 5. The CLI will then prompt you to allow installation of node dependencies. Press {{%bold%}}Y{{%/bold%}} to confirm the installation, and press {{%bold%}}Enter{{%/bold%}} to confirm your choice. If you don't install all the required dependencies, it could cause errors during the function's execution.<br /> <br /> The CLI will then download the {{%link href="/en/sdk/nodejs/v2/overview/" %}}Node.js SDK package{{%/link%}} and complete the function setup process.<br /> {{%note%}} {{%bold%}}Note:{{%/bold%}} Catalyst enables you to create an Advanced I/O Node.js function in the Express template, which installs the {{%link href="https://expressjs.com/" %}}Express.js{{%/link%}} modules. However, you will not be able to create the Express template from the CLI. But you can install Express on your system independently by executing {{%link href="https://expressjs.com/en/starter/installing.html" %}} {{%badge%}}npm install express --save{{%/badge%}} {{%/link%}} from a particular function's directory to use the Express modules in it. You can learn more the Express template from the {{%link href="/en/serverless/help/functions/advanced-io/#nodejs" %}}Advanced I/O Function help page{{%/link%}}.{{%/note%}} <br> The Node function's directory is now set up with the {{%badge%}}.js{{%/badge%}} main function file, {{%badge%}}catalyst-config.json{{%/badge%}}, and the necessary node modules and configuration files if you installed the dependencies. These values will be updated in the {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}{{%badge%}}catalyst.json{{%/badge%}}{{%/link%}} configuration file.<br /> <br /> You can learn about the Node.js function directory structure in detail from the {{%link href="/en/cli/v1/project-directory-structure/functions-directory/" %}}Project Directory Structure help page{{%/link%}} . ### Set Up a Python Function of Any Type 1. If you set up a Python function, select the required runtime from the supported runtime: **Python 3.9**. 2. Provide a package name for your Python function when prompted and press {{%bold%}}Enter{{%/bold%}} . 3. Enter the name of the entry point file and press {{%bold%}}Enter{{%/bold%}} . Upon successful initialization of the Python function, the {{%link href="/en/sdk/python/v1/overview" %}}Catalyst Python SDK{{%/link%}} package will be automatically installed for your project and an entry will be made in the {{%link href="/en/cli/v1/project-directory-structure/functions-directory/#requirementstxt-file" %}}{{%badge%}}requirements.txt{{%/badge%}}{{%/link%}} file. {{%note%}} {{%bold%}}Note:{{%/bold%}} If it is your first time initializing a Python function, you will need to additionally set the path information of Python installed in your system. You can set this information in a specific configuration file that is present in your local system as a hidden file. The path will need to be set using the {{%badge%}}config:set &lt;key=value&gt;{{%/badge%}} CLI command. You can find out more about this command from this {{%link href="/en/cli/v1/cli-config/" %}}help document{{%/link%}}.{{%/note%}} The Python function's directory is now set up with the {{%badge%}}.py{{%/badge%}} main function file, {{%badge%}}catalyst-config.json{{%/badge%}}, and the {{%badge%}}requirements.txt{{%/badge%}} configuration file. These values will be updated in the {{%badge%}}catalyst.json{{%/badge%}} configuration file. <br /> You can learn about the Python function directory structure in detail from the {{%link href="/en/cli/v1/project-directory-structure/functions-directory" %}}Project Directory Structure help page{{%/link%}} . {{%note%}} {{%bold%}}Note:{{%/bold%}} * You can add any number of sub-folders and files in a Java, Node.js, or Python function's directory. Besides the main function file, a function's folder can contain other sub-functions. However, the configuration files and dependencies need to be in the function directory's root. * You can create sub-functions for Node.js functions through the {{%link href="/en/serverless/help/functions/implementation/" %}}Catalyst console{{%/link%}} , or using external editors. However, Java and Python functions can be created and updated only from the CLI. * You can also pull an existing function directory from the console to your local system using the {{%link href="/en/cli/v1/pull-resources/introduction/" %}}{{%badge%}}catalyst pull{{%/badge%}}{{%/link%}} command. {{%/note%}} You can now work on the function that you set up. You can code the function by uploading the package to the Catalyst console, and working on it {{%link href="/en/serverless/help/functions/implementation/" %}}using the online editor in the console{{%/link%}} or by another editor of your choice. You can also use the functions shell to test and execute the function's code, and then deploy it to the console. -------------------------------------------------------------------------------- title: "Add Functions" description: "Catalyst CLI enables you to set up the functions component even after the project is initialized, add multiple functions in your project, configure their memory, test functions in a Node shell, and delete them." last_updated: "2026-03-18T07:41:08.553Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-functions/add-functions/" service: "All Services" -------------------------------------------------------------------------------- # Add Functions You can add any number of new functions of the Java, Node.js, and Python stacks in the functions directory, after you have initialized or set up the first function for your project. Each new function will be created in its own directory inside the functions directory. {{%note%}} {{%bold%}}Note:{{%/bold%}} This command is used to add additional functions in a project after the first function is created. Therefore, the functions directory must already be present in your project directory before you execute this command.{{%/note%}} <br> You can add a new function in your functions directory by executing the following command from your project directory: {{%cli%}} catalyst functions:add {{%/cli%}} <br> The procedure is the same as initializing or setting up a function. Refer to the {{%link href="/en/cli/v1/working-with-functions/set-up-functions/" %}}previous section{{%/link%}} for details. After the function is added, an individual folder will be created for it in the functions directory along with its dependencies and configuration files, as mentioned in the previous section. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to add Catalyst functions using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/implementation/#manage-your-project" %}}here{{%/link%}}{{%/note%}} -------------------------------------------------------------------------------- title: "Configure Function Memory" description: "Catalyst CLI enables you to set up the functions component even after the project is initialized, add multiple functions in your project, configure their memory, test functions in a Node shell, and delete them." last_updated: "2026-03-18T07:41:08.554Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-functions/configure-function-memory/" service: "All Services" -------------------------------------------------------------------------------- # Configure Function Memory ### Configure Command Catalyst enables you to configure the memory for each of your functions. This memory will be allocated when the function is executed. You can choose a memory between 128 MB to 512 MB for any function. The default memory assigned to a function is 256 MB. That is, if you don't configure the memory, or if you had created a function before this feature was made available, the memory would be set to 256 MB automatically. {{%note%}} {{%bold%}}Note:{{%/bold%}} The CPU is allocated automatically based on the memory you configure for your function. You won't be able to view or configure this value.{{%/note%}} You can modify this value for any of your existing functions as per your requirements in the following way: 1. Execute the following command from your function's project directory. {{%cli%}} catalyst functions:config {{%/cli%}} The CLI will list all the functions you have created in your project, along with information of their current memory allocation. 2. Select one of the functions to configure, and press {{%bold%}}Enter{{%/bold%}} .<br /> 3. Select the memory to allocate to the function from the available options, and press {{%bold%}}Enter{{%/bold%}} .<br /> The memory configuration for the function will be updated.<br /> <br> You can also directly configure a function's memory by specifying the function's name or ID along with the command like: {{%cli%}} catalyst functions:config[function_name_or_id] {{%/cli%}} For example: {{%cli%}} catalyst functions:config Generate_Invoice {{%/cli%}} The CLI will then ask you to select a memory configuration in the same manner. ### Configure Function Memory Options You can also directly specify the memory you want allocated for a specific function using the <br> {{%badge%}} -\\-memory &lt;value&gt; {{%/badge%}} option for the {{%badge%}}catalyst functions:config{{%/badge%}} command, followed by the function's name or ID. This can be done in the following way: {{%cli%}} catalyst functions:config [--memory &lt;value&gt;] [function_name_or_id] {{%/cli%}} <br> For example, if you want to allocate 128 MB memory for a function named _MailOrder_ , then execute the following command: {{%cli%}} catalyst functions:config --memory 128MB MailOrder {{%/cli%}} The CLI will ask you for confirmation. Enter {{%bold%}}Y{{%/bold%}} and press {{%bold%}}Enter{{%/bold%}} . The memory configuration for the function will be updated. -------------------------------------------------------------------------------- title: "Launch a Shell for Functions" description: "Catalyst CLI enables you to set up the functions component even after the project is initialized, add multiple functions in your project, configure their memory, test functions in a Node shell, and delete them." last_updated: "2026-03-18T07:41:08.554Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-functions/functions-shell/" service: "All Services" -------------------------------------------------------------------------------- # Launch a Shell for Functions ### Introduction The functions shell offers you the capabilities of a Node shell console combined with the efficiency of Catalyst CLI, to test and debug your functions. Using the Catalyst CLI functions shell, you can test and debug the following {{%link href="/en/serverless/help/functions/basic-io/" %}}types of functions{{%/link%}} of the Java, Node.js, or Python platforms in your project: {{%bold%}}Basic I/O{{%/bold%}}, {{%bold%}}Cron{{%/bold%}}, {{%bold%}}Event{{%/bold%}}, and {{%bold%}}Integration{{%/bold%}} functions. {{%note%}} {{%bold%}}Note:{{%/bold%}} You will not be able to test Advanced I/O functions using the Node shell. However, you can serve Advanced I/O functions, and even Basic I/O functions and the client, from a local host and test their performance using the {{%link href="/en/cli/v1/serve-resources/introduction/" %}}{{%badge%}}catalyst serve{{%/badge%}}{{%/link%}} command.{{%/note%}} The output of a function's execution is fetched and displayed in the CLI in the JSON format. For a Basic I/O function, the String output is generated in the CLI, and for the other function types, the appropriate responses are fetched. While testing a Basic I/O function of Java or Node.js stacks, you can also attach a debugger to the function's endpoint and test its code through a local server, or enable the HTTP mode for it in the shell. This is not supported for Python functions, but you can debug a Python function independently. Catalyst CLI also provides several other options for the functions shell that we will discuss later in this section. <br> ### Functions Shell Command Execution To launch a shell for testing a function, navigate to the project directory of the function and execute the following command: {{%cli%}} catalyst functions:shell {{%/cli%}} This opens the shell in the CLI. You can test any function in your project other than Advanced I/O functions, pass inputs and execute it in case of a Basic I/O function, and perform other node shell operations on it. You can pass inputs to a Basic I/O function in the shell in two ways: * Pass values to the function variables and run the function. * Declare a variable in the CLI, assign it to a function variable, and pass the input values through the declared variable. You can then bind the declared variable to that function and execute it. #### Example for Passing Direct Input Let's test a simple function called _EMI_ , which allows you to pass an input value for a variable called _principal_ . This function then calculates the EMI amount for a shipment service, based on some pre-defined constant values. We pass a value for the input variable and execute the _EMI_ function in the shell by entering the following statement: {{%cli%}} EMI({"principal":"10000"}) {{%/cli%}} This invokes the function _EMI_ and passes the input to its variable. Once the function execution is complete, the output is obtained from the server as a JSON response. The CLI displays the function's output along with the HTTP status code as sent by the server. #### Example for Declaring a Variable and Binding it You can also declare a variable in the CLI and assign it to the variable in the function. This will allow you to use the declared variable in the place of the function's variable and pass input values to it easily. Let's declare a variable 'P', assign it to the _principal_ variable in the _EMI_ function, and pass an input value. This can be done by executing the following command in the shell: {{%cli%}} var P={"principal":"3000"} {{%/cli%}} This assigns _P_ to _principal_ and passes the input value of 3000 to P. You can verify if the variable is assigned by printing the value of P in the console. This can be done using the Node.js function {{%badge%}}console.log(){{%/badge%}} in the following manner: {{%cli%}} console.log(P) {{%/cli%}} If the variable was assigned and the value was passed successfully, the shell will print the value of _principal_ that was passed. You can now bind the declared variable to the function and execute it as follows: {{%cli%}} EMI(P) {{%/cli%}} This invokes the function and passes the input to its variable through _P_ . Once the function execution is complete, the CLI will display the output along with the HTTP status code as sent by the server. The CLI will return the appropriate HTTP response codes from the server if runtime errors occur. #### Exit Shell You can exit the functions shell by killing the terminal command based on your local environment or by executing the following command: {{%cli%}} .exit {{%/cli%}} Once your function is tested thoroughly, you can {{%link href="/en/cli/v1/deploy-resources/introduction/" %}}deploy the function{{%/link%}} from the local environment to the remote console. ### Functions Shell Options There are four options that you can use with the functions shell launch command. #### \--http \[port\] The {{%badge%}}-\\-http{{%/badge%}} option invokes your Basic I/O function in the HTTP mode. The CLI serves your function through a local host, and provides you the access to its local endpoint. The server will be listening to the port where the function is hosted locally, and the CLI will display a live log of the activities at the port. The CLI will then open the functions shell where you can test your function. {{%note%}} {{%bold%}}Note:{{%/bold%}} The {{%badge%}}-\\-http{{%/badge%}} option is only applicable to Basic I/O functions, since the end points of Cron, Event, and Integration functions cannot be accessed directly.{{%/note%}} This option is similar to the functionality of the {{%link href="/en/cli/v1/serve-resources/introduction/" %}} {{%badge%}}catalyst serve{{%/badge%}} {{%/link%}} command that serves Basic I/O functions, Advanced I/O functions, and the client components locally. You can start a function shell in the HTTP mode and test all the Basic I/O functions in a project, by executing the following command from the project directory: {{%cli%}} catalyst functions:shell --http {{%/cli%}} This will host all the Basic I/O functions in the functions directory of the project locally, in the {{%bold%}}default port 8080{{%/bold%}} . The CLI will display the endpoint URLs of all the functions. You can access these functions by opening the URLs in your browser at any time while performing the shell operations. You can now test and run your functions as discussed in the previous section using the shell, and view them in HTTP mode by accessing their URLs. You can also start the server in a different port, if you require, while executing this command and override the default port 8080. This can be done by specifying the port number with the {{%badge%}}-\\-http{{%/badge%}} option. For example, if you prefer to use the port 7000, execute this command from the project directory: {{%cli%}} catalyst serve --http 7000 {{%/cli%}} #### \--debug \[port\] Catalyst allows you to test your Java and Node.js functions locally with a remote debugger attached to the live localhost server. {{%note%}}{{%bold%}}Note:{{%/bold%}} The {{%badge%}}catalyst functions:shell --debug{{%/badge%}} command is not supported for Python functions. To learn about the steps to debug a Python function, refer to {{%link href="/en/cli/v1/working-with-functions/functions-shell/#debugging-python-functions"%}}this section{{%/link%}}.{{%/note%}} When you use the {{%badge%}}-\\-debug{{%/badge%}} option and start the functions shell, Catalyst will listen for the transport {{%badge%}}dt\_socket{{%/badge%}} at the default or custom port and will wait for the connection from the debugger to be established after invoking the function. Once the connection is established, the attached debugger will debug the execution of your function and identify any errors and issues in its code. You can start your functions shell and initiate the connection to the debugger by executing the following command from the project directory: {{%cli%}} catalyst functions:shell --debug {{%/cli%}} This will open the functions shell in the same way as before. When you invoke the function in the shell, Catalyst will establish the connection to the debugger. Catalyst CLI will allocate {{%bold%}}port 8000{{%/bold%}} for the debugger by default. Once the debugger is attached, the CLI will display a message to indicate this fact. Catalyst will then execute your function in the debugging mode and display the server response. You can override the default port 8000 and start the debugger in a different port, if required. This can be done by specifying the port number with the {{%badge%}}-\\-debug{{%/badge%}} option. For example, if you prefer to use the port 7000, execute the following command from the project directory: {{%cli%}} catalyst serve --debug 7000 {{%/cli%}} #### \--ignore-scripts This option allows you to inform Catalyst to ignore the {{%link href="/en/cli/v1/scripts/introduction/" %}}pre- and post-lifecycle scripts{{%/link%}} written in the {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}} {{%badge%}}catalyst.json{{%/badge%}} {{%/link%}} file for a particular function. Since you can host and access Basic I/O function endpoints using the {{%badge%}}-\\-http{{%/badge%}} option in the functions shell, the {{%badge%}}preserve{{%/badge%}} and {{%badge%}}postserve{{%/badge%}} scripts are executed automatically when they are hosted. The {{%badge%}}preserve{{%/badge%}} script executes before the function is served, and the {{%badge%}}postserve{{%/badge%}} script executes after you exit the local serve, if available. You can inform Catalyst to ignore these pre- and post-lifecycle scripts when the functions are served using the {{%badge%}}-\\-ignore-scripts{{%/badge%}} option. For example, let's configure the {{%badge%}}catalyst.json{{%/badge%}} file of a project to include the following {{%badge%}}preserve{{%/badge%}} and {{%badge%}}postserve{{%/badge%}} scripts for a function. If you launch the functions shell without using the {{%badge%}}\--ignore-scripts{{%/badge%}} option, the scripts will be executed before the shell opens and after you exit the shell respectively as shown below. To ignore the {{%badge%}}preserve{{%/badge%}} and {{%badge%}}postserve{{%/badge%}} scripts, launch the functions shell by executing the following command from your project directory: {{%cli%}} catalyst functions:shell --ignore-scripts {{%/cli%}} This will ignore the scripts and run the shell in the standard manner. #### \--no-watch Catalyst CLI enables a live watch mode in the functions shell by default. This mode actively watches for changes made in the function file or the function directory after the shell is opened. When it detects changes committed in the function file or the function directory, it enables a hot reload of the functions shell to reflect the updates live. You will therefore be able to access the updated version of the function in the live shell immediately after the changes are saved, without having to re-compile or re-serve the code. You can disable this default watch mode by launching the functions shell using the {{%badge%}}-\\-no-watch{{%/badge%}} option, as shown below: {{%cli%}} catalyst functions:shell --no-watch {{%/cli%}} Now if you make any changes to the function file after you have launched it in the shell, the updates will not be reflected in the compiled function open in the shell. You can work with the updated version of the function either by re-invoking the function after the changes are made, or by exiting the shell and re-opening it. For example, let's consider a function that contains the default sample code of a Node.js Basic I/O function. It prints the message "Hello from index.js" when it is invoked in the functions shell. If you make changes to the function's code as shown below, these updates are not reflected live in the CLI while the function is still open in the shell. You will need to invoke the function again to get the output for the updated code. However, if you don't use the {{%badge%}}-\\-no-watch{{%/badge%}} option and launch the functions shell with the default watch mode enabled, the shell will detect the changes made in the code live and perform a hot reload of the function automatically, as shown below. <br> ### Debugging Python Functions To debug a Python function, you will need to use a Python IDE independently, as Catalyst currently does not offer CLI support to debug them. You can attach a local debugger with an IDE of your choice, such as Visual Studio Code or PyCharm. The debugger will listen to the port where the function is hosted locally and the IDE will display a live log of the activities at the port. The steps to debug a Python function using VS Code are given below: 1. To debug a particular Python function hosted in a local server from an IDE directly, you will need a debugger package to establish the connection between the local server and the IDE. In this case, we will be using the debugpy Python package. Open your Catalyst project directory in VS Code. In the {{%badge%}}main.py{{%/badge%}} file, include the lines of code given below. {{%code class="language-python"%}}import debugpy debugpy.listen(<<"Enter port number here">>) debugpy.wait_for_client() {{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} The default port to attach for VS Code debug configurations is 5678. This is the port where the Python function will be served. You can override the default port and change it while executing the serve command, if required, using the option specified below: {{%cli%}}catalyst serve --http &lt;Port number&gt;{{%/cli%}} {{%/note%}} 2. Navigate to your functions directory and, to install the {{%badge%}}debugpy{{%/badge%}} package, execute this command in your IDE terminal: {{%cli%}}python -m pip install --upgrade debugpy {{%/cli%}} 3. Create a {{%badge%}}launch.json{{%/badge%}} file in the root directory of your Catalyst project, if one doesn't exist already. You can refer to {{%link href="https://code.visualstudio.com/docs/python/debugging#_initialize-configurations" %}} this help page{{%/link%}} for the steps to create a {{%badge%}}launch.json{{%/badge%}} file. Add the following code in the file and save it. {{%code class="language-json line-numbers"%}}{ "version": "0.2.0", "configurations": [ { "name": "Python: Remote Attach", "type": "python", "request": "attach", "connect": { "host": "localhost", "port": <<Enter port number here>> }, "pathMappings": [ { "localRoot": "${workspaceFolder}", "remoteRoot": "${workspaceFolder}/.build/" } ], "justMyCode": true } ] } {{%/code%}} 4. Now, switch to Run and Debug view in VS Code and start the debugger. You can now execute the CLI serve command to view the function's execution details in your IDE terminal. {{%note%}}{{%bold%}}Note:{{%/bold%}} You must ensure you specify the same port number mentioned in the configuration files while executing the command.{{%/note%}} You can take a look at {{%link href="https://code.visualstudio.com/docs/python/debugging#_debugging-by-attaching-over-a-network-connection" %}}this help page{{%/link%}} for more detailed steps on local script debugging of Python functions in VS code. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to run and debug Catalyst functions using Visual Studio Code IDE can be found {{%link href=/en/catalyst-extensions/vs-code-extension/implementation/#run-or-debug-a-function" %}}here{{%/link%}}{{%/note%}} -------------------------------------------------------------------------------- title: "Delete Functions" description: "Catalyst CLI enables you to set up the functions component even after the project is initialized, add multiple functions in your project, configure their memory, test functions in a Node shell, and delete them." last_updated: "2026-03-18T07:41:08.555Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-functions/delete-functions/" service: "All Services" -------------------------------------------------------------------------------- # Delete Functions ### Delete Command Execution You can permanently delete functions of your Catalyst project using the CLI. You can choose to delete functions from the remote console or from your local project directory while executing this command. {{%note%}} {{%bold%}}Note:{{%/bold%}} If a function exists in both locations, it will only be deleted from the location you choose. For example, even if you delete a function from the remote console, it will still be present in your local project directory until you delete it from the local machine separately.{{%/note%}} <br> 1. To delete functions in your project, execute the following command from your project directory: {{%cli%}} catalyst functions:delete {{%/cli%}} <br> 2. The CLI will ask you to choose between the functions in the remote console or the functions in your local project directory. Select an option and press {{%bold%}}Enter{{%/bold%}} .<br /> <br> 3. The CLI will list all the functions in your remote console or in your local directory, based on the options you chose. Select the functions that need to be deleted and press {{%bold%}}Enter{{%/bold%}} .<br /> <br> 4. The CLI will ask for a confirmation. Enter "{{%bold%}}Y{{%/bold%}} " to and press {{%bold%}}Enter{{%/bold%}} to confirm. The selected functions will be deleted from the chosen location.<br /> <br> {{%note%}} {{%bold%}}Note:{{%/bold%}} You can use the {{%link href="/en/cli/v1/pull-resources/introduction/" %}} {{%badge%}}catalyst pull{{%/badge%}} {{%/link%}} command to pull resources from the remote console to the local directory, or {{%link href="/en/cli/v1/deploy-resources/introduction/" %}} {{%badge%}}catalyst deploy{{%/badge%}} {{%/link%}} to deploy resources to the remote console from the local directory if you require synchronization.{{%/note%}} <br> You can also directly specify the function to be deleted by including the function's name or ID with the along with the command like: {{%cli%}} catalyst functions:delete [function_name_or_id] {{%/cli%}} For example: {{%cli%}} catalyst functions:delete InvoiceFetch {{%/cli%}} The CLI will then prompt you to select between the remote console or the local directory, then ask you for the delete confirmation in the same manner. {{%note%}} {{%bold%}}Note:{{%/bold%}} You can specify the function name or ID directly to delete a function from the remote console. However, to delete a function from the local directory, you must only provide the function name and not the ID.{{%/note%}} <br> ### Delete Functions Options You can directly choose to list the functions in either the remote console or in your local project directory to delete using the respective options. To list functions available in your local project directory, execute the catalyst {{%badge%}}functions:delete{{%/badge%}} command as follows: {{%cli%}} catalyst functions:delete --local {{%/cli%}} To list functions available in the remote console of your project, execute the catalyst {{%badge%}}functions:delete{{%/badge%}} command as follows: {{%cli%}} catalyst functions:delete --remote {{%/cli%}} The CLI will list the functions accordingly, and you can delete the required functions as explained previously. You can also directly delete a function from the remote console or the local directory as shown below: {{%cli%}} catalyst functions:delete InvoiceFetch --remote {{%/cli%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to delete Catalyst functions using Visual Studio Code IDE can be found {{%link href=/en/catalyst-extensions/vs-code-extension/implementation/#delete-operation" %}}here{{%/link%}}{{%/note%}} ### Working with Projects -------------------------------------------------------------------------------- title: "List Catalyst Projects" description: "Catalyst CLI enables you to view a list of your Catalyst projects, associate a project with your working directory, and reset the active project." last_updated: "2026-03-18T07:41:08.556Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-projects/list-catalyst-projects/" service: "All Services" -------------------------------------------------------------------------------- # Working with Projects ### List Catalyst Projects You can view a list of the Catalyst projects in {{%link href="/en/getting-started/catalyst-organizations/" %}}organizations{{%/link%}} that you have access to in your Catalyst user account, from the CLI. To view a list of all your existing Catalyst projects in the organization that is set as the default, execute the following command: {{%cli%}} catalyst project:list {{%/cli%}} <br> If you require the projects from a different organization that is not the default one to be listed, you must execute the same command with the {{%badge%}}--org{{%/badge%}} option and specify the unique org ID of that organization in this manner: {{%cli%}} catalyst project:list --org&lt;org_id&gt;{{%/cli%}} This will display a table with the names and the {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/" %}}Project IDs{{%/link%}} of your existing Catalyst projects in the organization. <br> The base project of the directory from which you executed the command is also specified in the project list. This is the project that you originally initialized in that directory. The list also indicates the project that is active in that directory. If the active project is not the directory's base project, the CLI will display an alert about this. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform the above mentioned CLI operation using your IDE in place of the CLI. Steps to view a list of all your Catalyst projects using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/catalyst-tools-explorer/" %}}here{{%/link%}}{{%/note%}} -------------------------------------------------------------------------------- title: "Use a Catalyst Project" description: "Catalyst CLI enables you to view a list of your Catalyst projects, associate a project with your working directory, and reset the active project." last_updated: "2026-03-18T07:41:08.556Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-projects/use-catalyst-project/" service: "All Services" -------------------------------------------------------------------------------- # Use a Catalyst Project Using Catalyst CLI, you can associate a Catalyst project for your working directory. You can add an existing Catalyst project and link it with your directory. However, your directory can only be bound and permanently associated with its base project, which is the project you initialized in that directory. Therefore, when you use another project in the directory, the association with that project will only be temporary. {{%note%}} {{%bold%}}Note:{{%/bold%}} This command can only be run from an active Catalyst project directory. Therefore, if your current directory selection is not an active project directory, you can {{%link href="/en/cli/v1/initialize-resources/introduction/" %}}initialize the project{{%/link%}} , or {{%link href="/en/cli/v1/pull-resources/introduction/" %}}pull its components{{%/link%}} into the directory, instead.{{%/note%}} ### Command Execution 1. To use a Catalyst project in your working directory, execute the following command from the required directory: {{%cli%}} catalyst project:use {{%/cli%}} The CLI will display a list of your existing projects from your default organization. 2. Select the project that you require, using the arrow keys. Press {{%bold%}}Enter{{%/bold%}} to confirm your choice. Your project will now be added to your working directory and the CLI will display a confirmation message. <br> You can also execute the {{%badge%}}catalyst project:use{{%/badge%}} command with the name or the {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/" %}}Project ID{{%/link%}} of that project to use it in the working directory as follows: {{%cli%}} catalyst project:use [name_or_project_id] {{%/cli%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If you wish to use a project belonging to an organization which is not the default one, make sure to include the {{%badge%}}--org{{%/badge%}} option and execute the below command to use the project:{{%/note%}} {{%cli%}} catalyst project:use [name_or_project_id] --org&lt;org_id&gt; {{%/cli%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform the above mentioned CLI operation using your IDE in place of the CLI. Steps to add a Catalyst project to your existing working directory using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/catalyst-tools-explorer/" %}}here{{%/link%}}{{%/note%}} -------------------------------------------------------------------------------- title: "Reset the Active Project" description: "The project directory structure refers to the default directory structure a Catalyst project is created in when you initialize it from the CLI." last_updated: "2026-03-18T07:41:08.556Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-projects/reset-active-project/" service: "All Services" -------------------------------------------------------------------------------- # Reset the Active Project You can clear the temporary active project of your working directory and reset it back to the base project that the directory was initialized with. Resetting the project helps you undo the {{%badge%}}catalyst project:use{{%/badge%}} command. To clear the active project in your working directory and reset it to its base project, navigate to the directory and execute the following command: {{%cli%}} catalyst project:reset {{%/cli%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform the above mentioned CLI operation using your IDE in place of the CLI. Steps to reset your Catalyst project using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/catalyst-tools-explorer/" %}}here{{%/link%}}{{%/note%}} ### Working with Slate -------------------------------------------------------------------------------- title: "Create Slate App" description: "Catalyst CLI enables you to create a Slate app configuration for the application in your project directory." last_updated: "2026-03-18T07:41:08.557Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-slate/create-slate-app/" service: "All Services" -------------------------------------------------------------------------------- # Working with Slate # Create an Additional Slate App If your project directory is already linked to a Catalyst project and Slate is initialized, you can add a new Slate app to your project directory directly using the steps below. This operation will automatically add the Slate template code based on the chosen front-end framework to your project directory. 1. Execute the following command in the terminal from the Slate service's project directory: {{%cli%}} catalyst slate:create{{%/cli%}} 2. Select the required framework for your Slate application and provide a name for your application. 3. Based on the chosen framework, the **install** and **build** commands,the **build path** of the framework will be automatically detected. If you wish to proceed with the default configuration, enter **N**. Else, enter **Y** to make the necessary updates. After all the changes are made, the Slate app will be created in your project directory. The **{{%badge%}}catalyst.json{{%/badge%}}** file will be updated with the details of the newly created Slate app. You can also create a Slate application by directly providing a name for your application and the required framework. Execute the following command in your terminal: {{%cli%}} catalyst slate:create --name &lt;name&gt; --framework &lt;framework_name&gt;{{%/cli%}} -------------------------------------------------------------------------------- title: "Link Slate App" description: "Catalyst CLI enables you to link a Slate configuration to an existing application in order to deploy them in Slate." last_updated: "2026-03-18T07:41:08.557Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-slate/link-slate-app/" service: "All Services" -------------------------------------------------------------------------------- # Link a Slate App In order to deploy an existing project to Slate, you must mandatorily link the project's root path with the Slate service. For this you will have to initialize the Slate service first. This linking establishes a connection between your project directory and the Slate service locally and in order to deploy to the console, you must use the deploy command. This option can be used when an application of a supported framework by Slate was not originally initialized as a Slate service, but you later prefer to deploy it as a Slate service. In order to link the directory with Slate, please follow the below listed steps. 1. Execute the following command in the terminal from the app's project directory: {{%cli%}}catalyst slate:link{{%/cli%}} Select the source path that has to be linked to the Slate service and press **Enter**. 2. Provide a name for your application as required and press **Enter**. 3. The framework of the application will be automatically detected and listed along with its **install**, **build** commands, and the **build path**. Else, you will be able to select the framework manually from the terminal. If you wish to proceed with the default configuration, enter **N**. Else, enter **Y** to make the necessary updates. After the configurations are set, an entry will be made in the {{%badge%}}catalyst.json{{%/badge%}} file to establish a connection between the project directory's path and the Slate service. -------------------------------------------------------------------------------- title: "Unlink Slate App" description: "Catalyst CLI enables you to unlink a Slate configuration from an existing application if no longer required." last_updated: "2026-03-18T07:41:08.557Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-slate/unlink-slate-app/" service: "All Services" -------------------------------------------------------------------------------- # Unlink a Slate App You can remove the connection between your project directory and the Slate service by using the steps listed below. This operation will only remove the Slate configuration in your project directory and not in the Catalyst console, if you have already deployed the application. 1. Execute the following command from the terminal from the app's project directory: {{%cli%}}catalyst slate:unlink{{%/cli%}} 2. Navigate using the arrow keys to choose the application and click **Enter** to confirm. 3. Enter **Yes** to remove the Slate configuration from your application, its entry in the {{%badge%}}catalyst.json{{%/badge%}} file and the source code of the application. Enter **No** to remove only the entry in the {{%badge%}}catalyst.json{{%/badge%}} file while retaining the source code of your application. For the same operation, you can also use the below command by directly providing the name of the application: {{%cli%}}catalyst slate:unlink --name &lt;&lt;app_name&gt;&gt;{{%/cli%}} ### Working with the Client -------------------------------------------------------------------------------- title: "Introduction" description: "Catalyst CLI enables you to set up the client component as a Basic, React, or Angular app, even after the project is initialized." last_updated: "2026-03-18T07:41:08.557Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-the-client/introduction/" service: "All Services" -------------------------------------------------------------------------------- # Working with the Client ### Introduction Catalyst CLI enables you to set up and work with the project components that you did not initialize during the project initialization. You can set up the client and the functions directories from the CLI at any time while working with the project. You can also add a new AppSail service any time. This feature is very convenient if you did not initialize the client package during the project initialization to host through web client hosting, or if you initialized an empty project, and then later need the client component to be added to your application. In such cases, you can quickly set up the client in its {{%link href="/en/cli/v1/project-directory-structure/introduction/" %}}standard directory structure{{%/link%}} in your project directory. The CLI will ensure that all the required configuration files of the client are initialized in their boilerplate structures. The updated information about the newly created client component will also be added to the {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}} {{%badge%}}catalyst.json{{%/badge%}} {{%/link%}} file automatically, when you set it up. You can also perform a remote delete operation on the client component and delete any of its previously hosted versions from the CLI. {{%note%}}{{%bold%}}Note:{{%/bold%}} * If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to work with Catalyst Client components using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/implementation/#client" %}}here{{%/link%}} * Web client hosting is suitable for basic and simple web applications. You can explore our robust frontend development service, {{%bold%}}{{%link href="/en/slate/" %}}Slate{{%/link%}}{{%/bold%}}, that lets you seamlessly deploy web applications in a variety of popular JavaScript frameworks like Next.js, Angular, React, Vue, and more. Slate also provides automated deployments from GitHub, GitLab, or Bitbucket, and offers a host of other advanced features. {{%/note%}} -------------------------------------------------------------------------------- title: "Set up Client" description: "Catalyst CLI enables you to set up the client component as a Basic, React, or Angular app, even after the project is initialized." last_updated: "2026-03-18T07:41:08.558Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-the-client/set-up-client/" service: "All Services" -------------------------------------------------------------------------------- # Set Up Client You can setup the client component from the CLI by navigating to your project directory and executing the following command: {{%cli%}} catalyst client:setup {{%/cli%}} <br> The procedure is the same as {{%link href="/en/cli/v1/initialize-resources/initialize-client/" %}}initializing the client directory{{%/link%}} during the project initialization. The CLI will prompt you to provide a name for the client component of your project. Enter a name and press {{%bold%}}Enter{{%/bold%}} . <br> The client directory will now be created in the project's directory and the {{%badge%}}catalyst.json{{%/badge%}} file will be updated with its information. <br> The client directory will be set up with an {{%badge%}}index.html{{%/badge%}}, a {{%badge%}}main.css{{%/badge%}}, and a {{%badge%}}main.js{{%/badge%}} file, along with the {{%badge%}}client-package.json{{%/badge%}} configuration file. You can learn about the client directory structure in detail from the {{%link href="/en/cli/v1/project-directory-structure/client-directory/" %}}Project Directory Structure help page{{%/link%}}. <br> {{%note%}} {{%bold%}}Note:{{%/bold%}} * You can add any number of sub-folders and files in the client's directory like HTML files, JavaScript files, logo images, and more. However, the configuration files and dependencies need to be in the client directory's root. * You can also pull a {{%link href="/en/cloud-scale/help/web-client-hosting/introduction/" %}}hosted web client{{%/link%}} from the console to your local system using the {{%badge%}} {{%link href="/en/cli/v1/pull-resources/introduction/" %}}catalyst pull{{%/link%}} {{%/badge%}} command. {{%/note%}} After you build and {{%link href="/en/cli/v1/serve-resources/introduction/" %}}test the client component{{%/link%}}, you can either host it through {{%link href="/en/cloud-scale/help/web-client-hosting/introduction/" %}} _Web Client Hosting_ {{%/link%}} in the Catalyst console or {{%link href="/en/cli/v1/deploy-resources/introduction/" %}}deploy the client{{%/link%}} from the CLI to the remote console. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to set up your Client components using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/implementation/#manage-your-project" %}}here{{%/link%}}{{%/note%}} -------------------------------------------------------------------------------- title: "Delete Client" description: "Catalyst CLI enables you to set up the client component as a Basic, React, or Angular app, even after the project is initialized." last_updated: "2026-03-18T07:41:08.558Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-the-client/delete-client/" service: "All Services" -------------------------------------------------------------------------------- # Delete Client ### Command Execution You can permanently delete any older version of the client component in your Catalyst project using the CLI. You can choose to delete the client from the remote console or from your local project directory while executing this command. You can also delete a client version from the console through {{%link href="/en/cloud-scale/help/web-client-hosting/introduction/" %}}Web Client Hosting{{%/link%}}. {{%note%}} {{%bold%}}Note:{{%/bold%}} * You will not be able to delete the client version that is currently live. You can only delete a version that is not currently hosted live. * If a client version exists in both locations, it will only be deleted from the location you choose. For example, even if you delete the client version from the remote console, it will still be present in your local project directory until you delete it from the local machine separately. {{%/note%}} 1. To delete an older version of your client component from the CLI, execute the following command from the project directory structure: {{%cli%}} catalyst client:delete {{%/cli%}} <br> 2. The CLI will ask you to choose between the client in the remote console or the client in your local project directory. Select an option and press {{%bold%}}Enter{{%/bold%}} .<br /> <br> 3. The CLI will display all the versions of your web application that have previously been hosted. Select any version from the list, other than the live version, then press {{%bold%}}Enter{{%/bold%}} .<br /> The selected version will then be deleted from your Catalyst project from the chosen location. <br> {{%note%}} {{%bold%}}Note:{{%/bold%}} You can use the {{%link href="/en/cli/v1/pull-resources/introduction/" %}} catalyst pull {{%/link%}} command to pull resources from the remote console to the local directory, or {{%link href="/en/cli/v1/deploy-resources/introduction/" %}} {{%badge%}}catalyst deploy{{%/badge%}} {{%/link%}} to deploy resources to the remote console from the local directory if you require synchronization.{{%/note%}} <br> You can also directly specify the client version to be deleted in the following way: {{%cli%}} catalyst client:delete [client_version] {{%/cli%}} For example: {{%cli%}} catalyst client:delete 1.0.0 {{%/cli%}} The CLI will then prompt you to select between the remote console or the local directory, then ask you for the delete confirmation in the same manner. <br> ### Delete Client Options You can directly choose to list the versions of the client in either the remote console or in your local project directory to delete using the respective options. To list the client versions available in your local project directory, execute the catalyst {{%badge%}}client:delete{{%/badge%}} command as follows: {{%cli%}} catalyst client:delete --local {{%/cli%}} To list the client versions available in the remote console of your project, execute the catalyst {{%badge%}}client:delete{{%/badge%}} command as follows: {{%cli%}} catalyst client:delete --remote {{%/cli%}} The CLI will list the client versions accordingly, and you can delete the required version as explained previously. You can also directly delete a version from the remote console or the local directory as shown below: {{%cli%}} catalyst client:delete 1.0.0 --remote {{%/cli%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to set up your Client components using Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/implementation/#delete-operation" %}}here{{%/link%}}{{%/note%}} ### Working with Tokens -------------------------------------------------------------------------------- title: "Introduction" description: "Catalyst provides tokens that you can use to authenticate your CLI command executions when you are not actively logged in." last_updated: "2026-03-18T07:41:08.558Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-tokens/introduction/" service: "All Services" -------------------------------------------------------------------------------- # Working with Tokens ### Introduction Catalyst CLI provides tokens that validate your CLI sessions by associating them with a particular user account. When you are logged in to your CLI, the commands you execute are authenticated by a token internally. However, you can also generate a token manually, and use it to perform all the CLI activities without an active login session. Tokens are highly useful when you access Catalyst CLI from a remote system, such as a Continuous Integration system, where you need not log in to the CLI exclusively. You can provide authentication for the CI system to access Catalyst and remotely execute CLI commands using a CLI token you generate. A CLI token can be generated only when you are logged in to a user account from the CLI. Once generated, you can then use that token anywhere from any device to perform CLI operations remotely, even without active login sessions. This token acts as an authenticating factor for that user account, and continues to map your command executions to a project that you specify. You can also provide tokens for a particular user account to the collaborators of your Catalyst project and allow them to perform CLI operations, without having to provide them the user login credentials. When a token is generated, a unique ID is created to identify that token. You must use this {{%bold%}}token ID{{%/bold%}} while revoking a token. You must keep the following important points in mind while using tokens: * A token can only be generated from a CLI and can only be used in a CLI terminal. You will not be able to work with tokens outside of a CLI environment. * When you generate a token on a particular device's terminal, you will be able to revoke that token from the same terminal only. You will not be able to revoke it from another device's terminal. However, you can use that token to perform CLI operations from any device or environment. * A token is associated with the {{%link href="/en/cli/v1/cli-options/#--dcltuseuinjpsaaucagt" %}}data center{{%/link%}} of the user account that it was generated with. Catalyst will therefore be accessed from the same data center, when you use a token with your command executions. * A token generated in Catalyst CLI is valid forever. It will not expire unless you personally revoke it. * You can create multiple tokens for a user account and use any of those tokens at any time from any device. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are a {{%bold%}}Visual Studio Code IDE{{%/bold%}} user, you can install the {{%bold%}}Catalyst Tools{{%/bold%}} extension, and perform CLI operations using your IDE in place of the CLI. Steps to manage your authentication tokens in Visual Studio Code IDE can be found {{%link href="/en/catalyst-extensions/vs-code-extension/catalyst-tools-explorer/#manage-authentication-tokens" %}}here{{%/link%}}.{{%/note%}} -------------------------------------------------------------------------------- title: "Generate a Token" description: "Catalyst provides tokens that you can use to authenticate your CLI command executions when you are not actively logged in." last_updated: "2026-03-18T07:41:08.558Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-tokens/generate-token/" service: "All Services" -------------------------------------------------------------------------------- # Generate a Token ### Command Execution <br> 1. You can generate a token for your user account from Catalyst CLI by executing the following command: {{%cli%}} catalyst token:generate {{%/cli%}} This will initiate the token generation process. The CLI will display a URL that you can visit from any device. It will also generate a device verification code, which you must enter in the web page of the URL. <br> 2. Navigate to the URL displayed in the CLI and enter the verification code. Click {{%bold%}}Verify{{%/bold%}} . The code will only be valid for five minutes. <br> Once your device's CLI is verified, the token will be generated and displayed in your CLI. <br> You can now use this token to perform any CLI operation from any remote device, even when logged out, by specifying it as an option with the CLI command in the following manner: {{%cli%}} catalyst command --token [token] {{%/cli%}} To learn more, refer to the {{%link href="/en/cli/v1/cli-options/#--token-lttokengt" %}}CLI options help page{{%/link%}} The CLI operation will be mapped to the user account that you generated the token for, and the command will be executed for the account's project that is active in that directory. <br> ### Generate Token Options You can also use the {{%badge%}}catalyst token:generate{{%/badge%}} command to check the token that's currently active in your logged-in session. To do so, execute the command with the option {{%badge%}}-\\-current{{%/badge%}} in the following way: {{%cli%}} catalyst token:generate --current {{%/cli%}} This will display the token that is currently active and authenticated in the CLI. {{%note%}} {{%bold%}}Note:{{%/bold%}} The {{%badge%}}catalyst token:generate --current{{%/badge%}} command can only be used when you are logged in to a user account in the CLI.{{%/note%}} -------------------------------------------------------------------------------- title: "List Tokens" description: "Catalyst provides tokens that you can use to authenticate your CLI command executions when you are not actively logged in." last_updated: "2026-03-18T07:41:08.558Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-tokens/list-tokens/" service: "All Services" -------------------------------------------------------------------------------- # List Tokens To view a list of the tokens available for your user account, execute the following command in the CLI: {{%cli%}} catalyst token:list {{%/cli%}} <br> This will display a list of tokens that you had generated for that account, along with details like Token ID, created date and time. -------------------------------------------------------------------------------- title: "Revoke a Token" description: "Catalyst provides tokens that you can use to authenticate your CLI command executions when you are not actively logged in." last_updated: "2026-03-18T07:41:08.559Z" source: "https://docs.catalyst.zoho.com/en/cli/v1/working-with-tokens/revoke-token/" service: "All Services" -------------------------------------------------------------------------------- # Revoke a Token You can revoke a token that was previously generated in the same CLI. This will delete the token permanently, and you will not be able to use it to authenticate your CLI operations any longer. To revoke a token, execute the following command in the same device's terminal that was used to generate the token: {{%cli%}} catalyst token:revoke &lt;token ID&gt; {{%/cli%}} You must specify the token ID of the token to be revoked. You can find the ID of a token using the command mentioned in the previous section. --- ## FAQ — Catalyst CLI # General {{% expand-container %}} {{% expand id="work_with_cli" header="How do I work with Catalyst CLI?" %}} You can refer to the {{%link href="/en/getting-started/installing-catalyst-cli"%}}**Installing Catalyst CLI help page**{{%/link%}} for help with installing the Catalyst CLI. Once you have installed Catalyst CLI using the npm command, you can work with the CLI from your terminal. Catalyst commands begin with the keyword catalyst. You can refer to the {{%link href="/en/cli/v1/cli-command-reference/"%}}**CLI documentation**{{%/link%}} for detailed help with all the CLI commands. {{%/expand%}} {{% expand id="cli_update" header="How will I know when there is a Catalyst CLI update?" %}} When a newer version of the Catalyst CLI is available, your terminal will display a message alerting you of it after you execute a CLI command successfully. To update your CLI, execute the following command: {{%cli%}}$ npm install -g zcatalyst-cli{{%/cli%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} - In rare cases, your system's registry values might not reflect the latest version of Catalyst CLI. This might cause your system to retain the older version of the CLI. To avoid this, mention the version number while executing the command. For example, to update to the version 1.14.1, run {{%badge%}} $ npm install -g zcatalyst-cli @1.14.1 {{%/badge%}} - If you are unable to update Catalyst CLI, execute the command using {{%badge%}}sudo{{%/badge%}}.{{%/note%}} Alternatively, you can visit the {{%link href="https://www.npmjs.com/package/zcatalyst-cli"%}}NPM website{{%/link%}} to check whether you are using the latest version. {{%/expand%}} {{% expand id="cli_report_issue" header="How do I report an issue in Catalyst CLI?"%}} If there are any issues or abnormal behaviors detected in the CLI, Catalyst will automatically create a {{%badge%}}<strong>catalyst-debug.log</strong>{{%/badge%}} file in the directory the command was executed from. You can then contact the Catalyst team through our support email address: {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}. Please provide a brief description of the issue and attach the {{%badge%}}catalyst-debug.log{{%/badge%}} file in the email. The Catalyst team will contact you in less than 24 hours with a solution for the issue. {{%/expand%}} {{% expand id="cli_command_not_found" header="Why do I get a 'Catalyst command not found' error in the CLI?"%}} You might encounter this error if Catalyst CLI is not properly installed in your local system. You can try the following steps to rectify this error: 1. You will need to check if you installed the latest stable Node version, and if it is greater than v12, by executing the {{%badge%}}node -v{{%/badge%}} command in your terminal. 2. You must also check if the NPM version is greater than v12 by executing the {{%badge%}}npm -v{{%/badge%}} command in your terminal. 3. Uninstall and {{%link href="/en/getting-started/installing-catalyst-cli"%}}reinstall Catalyst CLI{{%/link%}} with the {{%badge%}}sudo{{%/badge%}} command in MacOS or in the Windows command prompt in the administrator mode. {{%/expand%}} {{% expand id="cli_unexpected_token" header="How do I resolve the 'SyntaxError: Unexpected token' error while executing Catalyst CLI commands?"%}} Catalyst CLI only supports **Node.js v12 or later**. If you encounter this error, it could mean that you have a lower version of Node.js installed in your system. You can update the Node.js version to resolve this error by downloading Node.js v12 or higher for your platform from their {{%link href="https://nodejs.org/en/download"%}}official website{{%/link%}}, or use a Node version manager like NVM to install Node.js and NPM. NPM comes bundled with Node.js when you install it. To check if Node.js has been updated successfully, execute the following command in your terminal to verify the version: {{%cli%}}$ node -v{{%/cli%}} {{%/expand%}} {{% expand id="cli_resolve_certificate_issue" header="How do I resolve the 'Unable to get local issuer certificate' error when I execute a Catalyst command?"%}} You will encounter this error if strict TLS authorization has been enabled in your system. You can resolve this error by executing the following command in your terminal: {{%cli%}}$ set NODE_TLS_REJECT_UNAUTHORIZED=0{{%/cli%}} You can now retry executing the Catalyst command. If the issue still isn't resolved, contact Catalyst support at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}} for further assistance. {{%/expand%}} {{% expand id="cli_java_runtime_error" header="How do I resolve the 'JavaioInvoker has been compiled by a more recent version of the Java runtime' error?"%}} The CLI only compiles the Java classes at runtime. Therefore, if the version of the Java environment and the {{%badge%}}javac{{%/badge%}} you are using are different, you will encounter this error. You can check the Java version by executing the following command in your terminal: {{%cli%}}$ java -version{{%/cli%}} Similarly, you can check the {{%badge%}}javac{{%/badge%}} version by executing the command in your terminal: {{%cli%}}$ javac -version{{%/cli%}} If you have any further queries, you can contact Catalyst support at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}} {{%/expand%}} {{%/expand-container%}} # Initialize Resources {{% expand-container %}} {{% expand id="cli_init_error_401" header="Why do I get the error 'HTTP Error: 401. You do not have privileges to access this project. Please contact a project owner or an administrator of this account' when I try to initialize my Catalyst project using catalyst init?" %}} This issue will occur when you try to {{%link href="/en/cli/v1/initialize-resources/introduction/"%}}initialize your project{{%/link%}} in a folder that already contains a Catalyst project from a different account. This issue will also occur when you try to initialize a project in a new folder in a location where another project was previously initialized from a different account. For example: Assume you initialize a project in this location: *C/windows/system32/catalyst/aliencity* If the roots of the folders named catalyst, system32, or windows already have a Catalyst project initialized in them, you will encounter this error. However, you can have projects in these directories within their own folders. To resolve this issue, delete all Catalyst related files including the hidden file named {{%badge%}}.catalystrc{{%/badge%}} from the current folder as well as from the other folders in the path, and then execute the {{%badge%}}catalyst init{{%/badge%}} command again. {{%/expand%}} {{%/expand-container%}} # Serve Resources {{% expand-container %}} {{% expand id="cli_targets_serve" header="Why do I get a 'Cannot understand what targets. Check if you specified valid targets' error when I run catalyst serve?" %}} If you encounter this error while executing {{%badge%}}{{%link href="/en/cli/v1/serve-resources/introduction/"%}}catalyst serve{{%/link%}}{{%/badge%}}, you can resolve it in the following ways: * Ensure you are in the correct folder path when you serve targets. * Ensure your project directory is not empty and contains atleast one resource that can be served. Catalyst can serve function endpoints of types Basic I/O and Advanced I/O, client, and AppSail resources. You can also pull the latest code of your resources from the Catalyst console to your local system through the {{%badge%}}{{%link href="/en/cli/v1/pull-resources/introduction/"%}}catalyst pull{{%/link%}}{{%/badge%}} command, before you serve it. {{%/expand%}} {{% expand id="cli_nowatch_serve" header="How do I test my functions in a no watch mode locally?" %}} Catalyst will serve your functions in the watch mode by default to ensure you can easily perform hot code replacement. You can execute the CLI command {{%badge%}}{{%link href="/en/cli/v1/working-with-functions/functions-shell/#--no-watch"%}}catalyst serve --no-watch{{%/link%}}{{%/badge%}} to switch to a no watch mode. {{%/expand%}} {{% expand id="cli_serve_hotreload" header="Why do I get 'Changes in file detected' and 'Error: unable to proxy request' error messages while performing file related operations in local debugging using catalyst serve?" %}} This error will occur when you perform file operations using the {{%badge%}}catalyst serve{{%/badge%}} command. To resolve this problem, use the option {{%badge%}}{{%link href="/en/cli/v1/working-with-functions/functions-shell/#--no-watch"%}}--no-watch{{%/link%}}{{%/badge%}} with catalyst serve for local debugging while performing any file related operations. The {{%badge%}}--no-watch{{%/badge%}} command disables hot module replacement. {{%/expand%}} {{% expand id="cli_javac_incompatible" header="Why do I encounter the error 'Javac version is above the compatible version' when I try to run my Catalyst application locally using catalyst serve." %}} Catalyst only supports the versions Java 8, Java 11, and Java 17 currently. You must therefore ensure that the installed {{%badge%}}java{{%/badge%}} and {{%badge%}}javac{{%/badge%}} versions are 1.8.x, 11.0.x, or 17.0.x before you debug a Java function in the CLI. {{%/expand%}} {{%/expand-container%}} # CLI Functions Shell {{% expand-container %}} {{% expand id="cli_cron_shell" header="How do I test Cron functions locally using the CLI?" %}} You can execute your {{%link href="/en/serverless/help/functions/cron-functions/"%}}cron function{{%/link%}} locally by using the {{%link href="/en/cli/v1/working-with-functions/functions-shell/"%}}{{%badge%}}catalyst shell{{%/badge%}}{{%/link%}} command in the CLI. You can pass a JSON variable as the input to the cron function. The cron function will contain the variable context with all function details, even during local debugging. {{%/expand%}} {{% expand id="cli_event_shell" header="How do I test my event function locally using the CLI?" %}} You can execute your {{%link href="/en/serverless/help/functions/event-functions/"%}}event function{{%/link%}} locally using the {{%link href="/en/cli/v1/working-with-functions/functions-shell/"%}}{{%badge%}}catalyst shell{{%/badge%}}{{%/link%}} command in the Catalyst CLI. You can generate a sample payload for your event function to test it by executing the catalyst event:generate {component} {action} command. For example: {{%badge%}}catalyst event:generate DataStore insert{{%/badge%}}. This will generate a sample payload for a Data Store insert operation. You can then pass the generated payload as the input to your event function in the CLI. {{%/expand%}} {{%/expand-container%}} # Deploy Resources {{% expand-container %}} {{% expand id="cli_deploy_limit" header="Why do I get the error 'We are unable to process the request since there are more than 500 files in the zip provided.' when I try to deploy my client?" %}} You will encounter this error if there are more than 500 files present in your {{%link href="/en/cli/v1/project-directory-structure/client-directory/"%}}client folder{{%/link%}}. The maximum number of files allowed in Catalyst web client is 500. {{%/expand%}} {{%/expand-container%}}