# Catalyst-Managed Runtimes -------------------------------------------------------------------------------- title: "Key Concepts" description: "Catalyst AppSail is a fully-managed platform of Catalyst Serverless that enables you to develop and deploy web services in managed runtimes of Java, Node.js, and Python, or of custom runtimes as OCI images to the cloud with ease." last_updated: "2026-03-18T07:41:08.634Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/" service: "Serverless" -------------------------------------------------------------------------------- # Catalyst-Managed Runtimes ## Key Concepts ### Overview You can deploy an application as a Catalyst-managed runtime if its stack is one of the supported runtimes. You can develop this web service using any frameworks, libraries, plugins, or dependencies as needed. As the term suggests, it is only the runtime that is managed by Catalyst. You will still need to manage the dependencies your code includes. You can directly deploy the build files of your application, either through the CLI or from the console. Catalyst currently manages the following runtimes: * {{%bold%}}Java{{%/bold%}}: Java 8, Java 11, Java 17 in the Java SE and Java WAR formats * {{%bold%}}Node.js{{%/bold%}}: Node 16, Node 18, Node 20 * {{%bold%}}Python{{%/bold%}}: Python 3.9 Although AppSail does not include many Catalyst-specific configurations or format restrictions, there are certain definitions that are bundled with your app that contain information about hosting and executing the app. These are discussed below. <br> ### The app-config.json File When you {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}initialize{{%/link%}} or {{%link href="/en/cli/v1/add-appsail/" %}}add{{%/link%}} an AppSail service as a Catalyst-managed runtime from the CLI, Catalyst creates a configuration file app-config.json and includes your app configuration in it. This file is created in the directory you initialize the app in, otherwise called the [source directory](#source-directory-and-build-path). {{%note%}}{{%bold%}}Note:{{%/bold%}} The {{%badge%}}app-config.json{{%/badge%}} file is not created when you do a {{%link href="/en/cli/v1/deploy-resources/deploy-appsail/" %}}standalone deploy{{%/link%}} without initializing or adding the app first. The configuration that this file carries is directly fetched as input from you in the CLI during the deployment. This file is also not created for apps initialized as a custom runtime.{{%/note%}} A sample {{%badge%}}app-config.json{{%/badge%}} created for a Java app is shown below: {{%code class="language-json"%}}{ "command": "java -jar demo-0.0.1-SNAPSHOT.jar", "buildPath": "/Users/emma-426/CatalystDirectories/DemoApp", "stack": "java8", "env_variables": { "clientid":xxxxxxx, "clientsecret":xxxxxx }, "memory": 256, "platform": "javase" "scripts": { "preserve": "mvn install -DskipTests" "predeploy": "mvn install -DskipTests" } }{{%/code%}} * {{%badge%}}command{{%/badge%}}: The {{%link href="/en/serverless/help/appsail/appsail-configurations/#startup-commands" %}}startup command{{%/link%}} for your app * {{%badge%}}buildPath{{%/badge%}}: The directory that contains the [build files](#common-build-files) of your app * {{%badge%}}stack{{%/badge%}}: The Catalyst-managed runtime of your app * {{%badge%}}env_variables{{%/badge%}}: The {{%link href="/en/serverless/help/appsail/appsail-configurations/#environment-variables" %}}environment variables{{%/link%}} for your app * {{%badge%}}memory{{%/badge%}}: The {{%link href="/en/serverless/help/appsail/appsail-configurations/#memory-and-disk-allocation" %}}memory{{%/link%}} allocated for your app's execution * {{%badge%}}platform{{%/badge%}}: Defines if your app is of the {{%badge%}}javase{{%/badge%}} or {{%badge%}}javawar{{%/badge%}} format, applicable only to the Java stack * {{%badge%}}scripts{{%/badge%}}: The {{%link href="/en/cli/v1/scripts/introduction/" %}}scripts{{%/link%}} that can be executed before serving or deploying your app through {{%badge%}}preserve{{%/badge%}} and {{%badge%}}predeploy{{%/badge%}} The values for the parameters {{%badge%}}stack{{%/badge%}}, {{%badge%}}buildPath{{%/badge%}}, and {{%badge%}}platform{{%/badge%}} are fetched mandatorily while initializing or adding the app. You can configure the other values in this file before deploying your app to the cloud. You can also {{%link href="/en/serverless/help/appsail/console/overview/" %}}configure{{%/link%}} the environment variables, memory, and the startup command directly in the console after the deployment. <br> ### Source Directory and Build Path * By default, the source directory of your application is the directory that you execute the app {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}initialize{{%/link%}} or {{%link href="/en/cli/v1/add-appsail/" %}}add{{%/link%}} command from. You can also select another directory besides the current directory to be the source during the initialization. * You must add the source files of your app to the source directory. * The {{%badge%}}[app-config.json](#the-app-configjson-file){{%/badge%}} file gets created in the source directory of your app. * The target directory is the directory that will contain the build files of your deployable web service. * You can specify the target directory of your app when you initialize or add the app, or add it for the parameter {{%badge%}}build-path{{%/badge%}} in the {{%badge%}}app-config.json{{%/badge%}} file. * When you do a standalone deploy, the current directory will be the build directory. * 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 {{%badge%}}build-path{{%/badge%}} specified. * You can name the main file of your app's build anything you prefer. However, when you build your app as a Java WAR file, you will need to name the main file {{%badge%}}root.war{{%/badge%}}. This is to ensure further configurations are prevented from your end when the endpoint URL is generated for your application. If you name your WAR file anything else, you will need to add some necessary controllers in your code accordingly. <br> ### Common Build Files For Catalyst-Managed runtimes, based on the runtime and framework, your compiled or deployable code could be of any format in any structure. Some common formats are mentioned below: * {{%bold%}}Java{{%/bold%}}: The final build file of a Java WAR app is of the {{%badge%}}.war{{%/badge%}} format. A WAR file is essentially a standard deployable format that can be readily run on any application server. It is a container for JAR files, JavaServer Pages, Java Servlets, Java classes, XML files, HTML, CSS etc of the application's source. If your build files are of any other format besides a *.war* file, you can select the Java SE template. Some other formats include {{%badge%}}.jar{{%/badge%}} or compiled class files, {{%badge%}}.class{{%/badge%}}. If you use any Java frameworks or libraries, you must include those files in the build path. * {{%bold%}}Node.js{{%/bold%}}: The main deployable file is typically a {{%badge%}}.js{{%/badge%}} file. Based on the standards of the framework or the dependencies you add, there will be node modules and configuration files included in your app's directory. You must ensure that you add all node modules and configuration files, along with the main file and native client files in the build path. * {{%bold%}}Python{{%/bold%}}: The deployable main file is typically a {{%badge%}}.py{{%/badge%}} file. Based on the standards of the framework, plugins, or dependencies you add, there will be Python and configuration files included in your app's directory. You must ensure that you add all modules and configuration files, along with the main file and native client files in the build path. You can refer to the {{%link href="/en/serverless/help/appsail/help-guides/introduction/" %}}Help Guide on building sample apps{{%/link%}} on building sample apps to learn more about using popular frameworks in each stack and deploying them as AppSail services. -------------------------------------------------------------------------------- title: "Deploy from the CLI" description: "Catalyst AppSail is a fully-managed platform of Catalyst Serverless that enables you to develop and deploy web services in managed runtimes of Java, Node.js, and Python, or of custom runtimes as OCI images to the cloud with ease." last_updated: "2026-03-18T07:41:08.635Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/catalyst-managed-runtimes/deploy-from-cli/" service: "Serverless" -------------------------------------------------------------------------------- # Deploy AppSail as a Catalyst-Managed Runtime from the CLI ### Initialize or Add an AppSail Service You can {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}initialize an AppSail service{{%/link%}} for a Catalyst-managed runtime directly in your app's directory, or from a new directory using the {{%link href="/en/cli/v1/cli-command-reference/" %}}Catalyst CLI{{%/link%}}. You can also {{%link href="/en/cli/v1/add-appsail/" %}}add an AppSail service{{%/link%}} to an existing Catalyst project directory, where other resources have been initialized. You can [deploy the AppSail service](#deploy-an-appsail-service) after you initialize or add it. 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. To initialize an AppSail service in a new directory, create a folder for your project in your local machine and navigate to it from your terminal. Initialize a project by executing the following command from that directory: {{%cli%}}catalyst init{{%/cli%}} You can add an AppSail service in an existing Catalyst project directory by executing this CLI command: {{%cli%}}catalyst appsail:add{{%/cli%}} The steps to initialize or add the AppSail service will be the same as described below: 1. The CLI will prompt you to select the runtime type as **Catalyst-Managed Runtime** or **Docker Image** when AppSail is initialized or added. 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 or 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. This process 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> ### Deploy an AppSail Service 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. Catalyst will deploy 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%}} <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: * 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. <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 Java SE or the Java WAR as your app's deployable format. You can learn more about this here. <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%}} -------------------------------------------------------------------------------- title: "Deploy from the Console" description: "Catalyst AppSail is a fully-managed platform of Catalyst Serverless that enables you to develop and deploy web services in managed runtimes of Java, Node.js, and Python, or of custom runtimes as OCI images to the cloud with ease." last_updated: "2026-03-18T07:41:08.643Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/catalyst-managed-runtimes/deploy-from-console/" service: "Serverless" -------------------------------------------------------------------------------- # Deploy AppSail as a Catalyst-Managed Runtime from the Console AppSail enables you to deploy an app as a Catalyst-managed runtime from the Catalyst remote console directly in the following manner: 1. Navigate to the **Serverless** service in your Catalyst project that you wish to deploy your app in, then click **AppSail** under *Compute*. <br /> Upon clicking **Deploy from CLI**, a pop-up will show you the instructions to deploy an AppSail service from the CLI. Refer the {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/deploy-from-cli/" %}}CLI help section{{%/link%}} for detailed steps. 2. Click **Deploy from Console** to directly deploy your app here. 3. Select the deployment type as **Catalyst-Managed Runtime**, and provide a name for your AppSail service. Select the runtime that your app uses from a list of the runtimes supported by Catalyst. Provide a {{%link href="/en/serverless/help/appsail/appsail-configurations/#startup-commands" %}}startup command{{%/link%}} for your app based on your app's runtime. Upload a ZIP file of your AppSail's build directory. {{%note%}}{{%bold%}}Note:{{%/bold%}} When you deploy the app on the console directly, the build directory need not include the {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/#the-app-configjson-file" %}}{{%badge%}}app-config.json{{%/badge%}}{{%/link%}} file, as it is only required while deploying from the CLI. You can provide the configuration details here. If the {{%badge%}}app-config.json{{%/badge%}} file is present, the values you provide here will override the ones in that file.{{%/note%}} <br /> 4. You can configure advanced settings for your app. * Configure a {{%link href="/en/serverless/help/appsail/appsail-configurations/#ports-for-app-executions" %}}custom port{{%/link%}} for your app's execution, if needed. Ports within the range of 0 to 1024 are reserved, with the exception of ports 80 and 443. You can use any other ports outside this range. Port 9000 will be used by default. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you have not configured the port in your code, ensure that you configure the same port to listen to while starting the server in the {{%link href="/en/serverless/help/appsail/appsail-configurations/#startup-commands" %}}startup command{{%/link%}} of your app.{{%/note%}} * Configure the required {{%link href="/en/serverless/help/appsail/appsail-configurations/#memory-and-disk-allocation" %}}memory{{%/link%}} for your app's execution, based on your requirements. You can select 128, 256, 512, 1024, or 2048 MB. {{%info%}}{{%bold%}}Info:{{%/bold%}} You can also configure the disk size for your app's execution after you deploy the app from the {{%link href="/en/serverless/help/appsail/console/overview/" %}}Configuration section{{%/link%}}.{{%/info%}} * Configure {{%link href="/en/serverless/help/appsail/appsail-configurations/#environment-variables" %}}environment variables{{%/link%}} for your AppSail service as needed. <br /> You can add multiple environment variables by clicking the **+** icon, and remove them by clicking the **—** icon. {{%info%}}{{%bold%}}Info:{{%/bold%}} The environment variable will be added to the {{%link href="/en/deployment-and-billing/environments/introduction/" %}}Catalyst environment{{%/link%}} (development or production) that you're currently working in. You can change the environment from the drop-down at the top of the console, and add variables as required.{{%/info%}} <br /> 5. After you configure the details, click **Deploy**. Your app will be deployed to the console. You will now be able to view and manage your app from the console. <br /> {{%link href="/en/serverless/help/appsail/console/manage-appsail/" %}}Refer here for help on managing your AppSail service{{%/link%}}.