Title: Exporting an Application as UCS Microservice#

URL Source: https://docs.nvidia.com/ucf/2.10.0/text/UCS_Export_App_as_MS.html

Published Time: Thu, 30 Oct 2025 07:23:03 GMT

Markdown Content:
UCS Tools allow you to export applications as microservices. This enables you to reuse these applications with their microservices and configuration. You can do this with both the textual representation and CLI tools, and with UCS Studio.

We will demonstrate this for the **Text Chatbot** and **Speech Chatbot** applications shown in the [Getting Started](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Reference_Apps.html#text-chatbot) section. A new microservice will be created from an application containing **BotMaker Speech Controller**, **BotMaker Dialog Manager** and **Riva Speech Skills** microservices. You can reuse this new microservice with **BotMaker Text WebApp** microservice to create the **Text Chatbot** or with **BotMaker Speech WebApp** microservice to create the **Speech Chatbot**.

Using CLI Tools[#](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Export_App_as_MS.html#using-cli-tools "Link to this heading")
----------------------------------------------------------------------------------------------------------------------------

### Export App as Microservice[#](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Export_App_as_MS.html#export-app-as-microservice "Link to this heading")

You can use the `app export-ms` command of the **UCS AppBuilder CLI** tool for this. It requires the app YAML file and an **Export Information** file. This file contains additional information required from the user to export an application as a microservice.

First, create an app YAML `ucf-bot-app.yaml` with the following contents:

specVersion: 2.5.0

version: 0.0.1

doc: ''

name: ucf-bot-app

description: Bot microservice application

dependencies:
- ucf.svc.riva.speech-skills:2.0.0
- ucf.svc.botmaker.dialog-manager:2.0.0
- ucf.svc.botmaker.speech-controller:2.0.0

components:
- name: Riva Speech Skills
 type: ucf.svc.riva.speech-skills
 parameters:
 buildModelEngines: 'true'
 ngcModelConfigs:
 - nvidia/riva/rmir_asr_citrinet_1024_en_us_str:2.6.0
 - nvidia/riva/rmir_tts_fastpitch_hifigan_en_us:2.6.0
 - eevaigoeixww/ucf-11-ea-release/misty_text_classification:1.7.3-ea
 - eevaigoeixww/ucf-11-ea-release/intent_slot_weather:1.7.3-ea
 - eevaigoeixww/ucf-11-ea-release/intent_slot_poi:1.7.3-ea
 - eevaigoeixww/ucf-11-ea-release/intent_slot_smalltalk:1.7.3-ea
 - nvidia/riva/rmir_nlp_question_answering_bert_base:2.6.0
 - nvidia/riva/rmir_nlp_named_entity_recognition_bert_base:2.6.0
 secrets:
 ngc-api-key-secret: ngc-api-key

- name: BotMaker Dialog Manager
 type: ucf.svc.botmaker.dialog-manager
 parameters:
 botNgcPath: eevaigoeixww/ucf-11-ea-release/misty_bot:2.0.0-ea-x86_64
 botConfigName: misty_bot_config.yaml
 botConfig:
 fulfillments:
 weather:
 parameters:
 api-key: XXXXXXXXXXXXXXXXXXXXX
 poi:
 parameters:
 api-key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 here-api-key: XXXXXXXXXXXXXXXXXXXXXX
 map:
 parameters:
 api-key: XXXXXXXXXXXXXXXXXXXXX
 secrets:
 ngc-api-key-secret: ngc-api-key

- name: BotMaker Speech Controller
 type: ucf.svc.botmaker.speech-controller
 parameters:
 pipeline: speech_lite
 wordBoostFilePath: ''
 secrets:
 ngc-api-key-secret: ngc-api-key

connections:
 BotMaker Dialog Manager/riva-speech: Riva Speech Skills/riva-speech-api
 BotMaker Dialog Manager/triton-grpc: Riva Speech Skills/triton-grpc
 BotMaker Speech Controller/riva: Riva Speech Skills/riva-speech-api
 BotMaker Speech Controller/dialog-manager: BotMaker Dialog Manager/dialog-manager

secrets:
 ngc-api-key:
 k8sSecret:
 secretName: ngc-api-key-secret
 key: NGC_API_KEY

Next, create the export information file named `export-info.yaml` with the following contents:

specVersion: 2.5.0

msInfo:
 name: ucf.svc.my-bot
 version: 0.0.1
 description: Chatbot microservice with smalltalk, weather and maps support
 displayName: My Bot
 category:
 functional: Speech AI
 industry: General

parameters:
- name: imagePullSecrets
 mapsTo:
 - microservice: BotMaker Dialog Manager
 parameter: imagePullSecrets
 - microservice: BotMaker Speech Controller
 parameter: imagePullSecrets
 - microservice: Riva Speech Skills
 parameter: imagePullSecrets

secrets:
- name: ngc-api-key

ingress-endpoints:
- name: speech-controller-api
 mapsTo: BotMaker Speech Controller/grpc-api
- name: dialog-manager
 mapsTo: BotMaker Dialog Manager/dialog-manager

The export information contains basic information for the microservice to be created. It also includes parameters, endpoints and secrets of individual microservices in the application to export and how to map them.

In the above example, the `grpc-api` ingress endpoint of the **BotMaker Speech Controller** microservice must be exported and named `speech-controller-api`. Add a parameter named `imagePullSecrets` and map it to the `imagePullSecrets` parameter of the three microservices. Export the `ngc-api-key` secret that is in the application as secret requirement of the microservice to be created.

You can export the application now that all the required information is available. Run the following command:

$ ucf_app_builder_cli app export-ms ucf-bot-app.yaml -e export-info.yaml
2023-04-20 13:44:05,679 - AppBuilder - INFO - Syncing any missing service versions to cache...
2023-04-20 13:44:16,463 - AppBuilder - INFO - Validating application ...
2023-04-20 13:44:16,550 - AppBuilder - INFO - Building application ucf-bot-app-0.0.1 ...
2023-04-20 13:44:17,329 - AppBuilder - INFO - Application Information written to /tmp/tmp__oanp37/app_info.yaml
2023-04-20 13:44:17,333 - AppBuilder - INFO - Application compliance report generated at /tmp/tmp__oanp37/compliance_report.json
2023-04-20 13:44:17,334 - AppBuilder - INFO - Application Helm Chart generated in /tmp/tmp__oanp37
2023-04-20 13:44:17,475 - AppBuilder - INFO - Existing chart mentioned in manifest. Skipping helm chart generation
2023-04-20 13:44:17,806 - AppBuilder - INFO - MS spec generated in ucf-bot-app-ms/output/msspec
2023-04-20 13:44:22,468 - AppBuilder - WARNING - Mandatory compliance checks failed. Check ucf-bot-app-ms/output/compliance_test_logs.txt for more information
2023-04-20 13:44:22,853 - AppBuilder - INFO - MS spec generated in ucf-bot-app-ms/output/msspec
2023-04-20 13:44:22,862 - AppBuilder - INFO - Building test application 'dev'
2023-04-20 13:44:22,868 - AppBuilder - INFO - Syncing any missing service versions to cache...
2023-04-20 13:44:22,869 - AppBuilder - INFO - Validating application ...
2023-04-20 13:44:22,873 - AppBuilder - INFO - Building application my-bot-dev-0.0.1 ...
2023-04-20 13:44:23,201 - AppBuilder - INFO - Application Information written to ucf-bot-app-ms/output/tests/dev/app_info.yaml
2023-04-20 13:44:23,205 - AppBuilder - INFO - Application compliance report generated at ucf-bot-app-ms/output/tests/dev/compliance_report.json
2023-04-20 13:44:23,205 - AppBuilder - INFO - Application Helm Chart generated in ucf-bot-app-ms/output/tests/dev
2023-04-20 13:44:23,205 - AppBuilder - INFO - Tests generated in ucf-bot-app-ms/output/tests
2023-04-20 13:44:23,340 - Registry - INFO - Generating test helm chart packages...
2023-04-20 13:44:23,552 - AppBuilder - INFO - Added microservice 'ucf.svc.my-bot:0.0.1' to local repository
2023-04-20 13:44:23,553 - AppBuilder - INFO - Microservice created in ucf-bot-app-ms
2023-04-20 13:44:23,566 - AppBuilder - INFO - App exported as Microservice

If successful, logs will show the location where the microservice builder input was generated (`ucf-bot-app-ms`).

The export functionality creates template test application, README, changelog and manual compliance result input. You can update these as required and rebuild the microservice.

### Using the new microservice in an application[#](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Export_App_as_MS.html#using-the-new-microservice-in-an-application "Link to this heading")

Create a new application YAML file named `speech-chatbot-app.yaml` with the following contents:

specVersion: 2.5.0

version: 0.0.1

doc: ''

name: speech-chatbot

description: speech-chatbot

dependencies:
- ucf.svc.my-bot:0.0.1
- ucf.svc.botmaker.speech-web-app:2.0.0

components:
- name: My Bot
 type: ucf.svc.my-bot
 parameters:
 imagePullSecrets:
 - name: ngc-docker-reg-secret
 secrets:
 ngc-api-key: ngc-api-key

- name: BotMaker Speech Web App
 type: ucf.svc.botmaker.speech-web-app
 parameters:
 imagePullSecrets:
 - name: ngc-docker-reg-secret

connections:
 BotMaker Speech Web App/speech-controller: My Bot/speech-controller-api

secrets:
 ngc-api-key:
 k8sSecret:
 secretName: ngc-api-key-secret
 key: NGC_API_KEY

In this application, the newly created microservice has been used. The exported `imagePullSecrets` parameters have been set, the exported `speech-controller-api` ingress endpoint has been connected to and exported `ngc-api-key` secret has been set. This application should behave identical to the **Speech Chatbot** application in Getting Started guide.

Build the application using:

$ ucf_app_builder_cli app build speech-chatbot-app.yaml
2023-04-20 14:02:07,410 - AppBuilder - INFO - Syncing any missing service versions to cache...
2023-04-20 14:02:07,411 - AppBuilder - INFO - Validating application ...
2023-04-20 14:02:07,415 - AppBuilder - INFO - Building application speech-chatbot-0.0.1 ...
2023-04-20 14:02:11,056 - AppBuilder - INFO - Application Information written to speech-chatbot-0.0.1/app_info.yaml
2023-04-20 14:02:11,071 - AppBuilder - INFO - Application compliance report generated at speech-chatbot-0.0.1/compliance_report.json
2023-04-20 14:02:11,072 - AppBuilder - INFO - Application Helm Chart generated in speech-chatbot-0.0.1
2023-04-20 14:02:11,072 - AppBuilder - INFO - App built

The application helm chart will be built in `speech-chatbot-0.0.1`. Deploy and interact with the application as described in [Deploy the Reference Application](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Reference_Apps.html#deploy-ref-apps).

### Export Information File Format[#](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Export_App_as_MS.html#export-information-file-format "Link to this heading")

Following is the expected format of the export information file:

# UCS MS Spec Version the file follows.
specVersion: 2.5.0

# Basic information for the microservice to be created
msInfo:
 # Name for the microservice. Must start with `ucf.svc.` prefix
 # Optional. If not specified, will be set to ucf.svc.<app-name>
 name: ucf.svc.my-bot

 # Version for the microservice. Must follow semantic versioning
 # Optional. If not specified, will be set to version of the application
 version: 0.0.1

 # Short description of the microservice.
 # Optional. If not specified, will be set to the description of the application.
 description: my-bot

 # User friendly display name for the microservice.
 # Optional. If not specified, will be created from the application name.
 displayName: My Bot

 # Category for the microservice.
 # Optional. If not specified, will be set to blank
 category:
 functional: Speech AI
 industry: Geneal

# Add parameters for the microservice to be exported and map them to
# parameters of individual microservices in the application.
parameters:
- name: botNgcPath # Name of parameter in exported application.
 # List of individual microservice parameters this parameter maps to
 mapsTo:
 - microservice: BotMaker Dialog Manager # Name of the microservice in the application. Must be same as component name in the application.
 parameter: botNgcPath # Parameter of the microservice in the application

- name: imagePullSecrets
 mapsTo:
 # Single parameter can map to multiple parameters
 - microservice: BotMaker Dialog Manager
 parameter: imagePullSecrets
 - microservice: BotMaker Speech Controller
 parameter: imagePullSecrets

# List of secrets added in the application to be added as secret requirements of
# microservice to be exported
secrets:
- name: ngc-api-key # Name must be same as what is added under the `secrets` section
 # in the application.

# List of ingress endpoints of microservices in the application to be
# added in the microservice to be exported.
ingress-endpoints:
- name: speech-controller-api # Name to set for ingress endpoint to be added in
 # microservice to be exported
 mapsTo: BotMaker Speech Controller/grpc-api # The actual microservice ingress endpoint it maps to.
 # Format: <component-name-in-app>/<name-of-ingress-endpoint-in-component>

- name: dialog-manager
 mapsTo: BotMaker Dialog Manager/dialog-manager

# List of egress endpoints to be added in the microservice to be exported and
# the egress endpoints of the microservices in the app it maps to.
egress-endpoints:
- name: riva-speech-api # Name of egress endpoint in the exported microservice.

 # Can map to multiple egress endpoints in the application.
 mapsTo:
 - BotMaker Dialog Manager/riva-speech # Format: <name-of-component-in-app>/<name-of-egress-endpoint>
 - BotMaker Speech Controller/riva

- name: riva-triton-grpc
 mapsTo:
 - BotMaker Dialog Manager/triton-grpc

Using Studio[#](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Export_App_as_MS.html#using-studio "Link to this heading")
----------------------------------------------------------------------------------------------------------------------

### Export App as Microservice[#](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Export_App_as_MS.html#id1 "Link to this heading")

1. Follow the steps in [Getting Started - Speech Chatbot](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Reference_Apps.html#speech-chatbot) section to first create the app. 2. Delete the **Speech Web App** Microservice by first selecting it and then right-clicking to open the context menu and clicking Delete.

> ![Image 1: UCS Studio - Export App as MS - Delete Web App](https://docs.nvidia.com/ucf/2.10.0/_images/ucf_studio_export_ms_delete_web_app.png)

1.   Add an **Export Ingress Endpoint** component to export **BotMaker Speech Controller**`grpc-api` ingress endpoint. Rename the component to `speech-controller-api` and connect it to the `grpc-api` endpoint. This will export the **BotMaker Speech Controller**`grpc-api` as `speech-controller-api` in the new exported microservice. Do the same for the **BotMaker Dialog Manager**`dialog-manager` ingress endpoint.

> ![Image 2: UCS Studio - Export App as MS - Export Ingress Endpoint](https://docs.nvidia.com/ucf/2.10.0/_images/ucf_studio_export_ms_export_ingress.gif)

1.   For each of the three microservices, select the microservice, open the **Common MS Params** section in the **Property** Window on the right and select the checkbox next to `imagePullSecrets`. This will add `imagePullSecrets` as a parameter for the new exported microservice and map it to the `imagePullSecrets` parameter of the three microservices.

> ![Image 3: UCS Studio - Export App as MS - Export Parameter](https://docs.nvidia.com/ucf/2.10.0/_images/ucf_studio_export_ms_export_param.png)

1.   Next, right-click on the empty area in the Graph Canvas to open the context menu and select **Graph Configurator**. Select **Secrets** section and select the checkbox for `Export in Microservice` for the `ngc-api-key-secret` secret. This will add the `ngc-api-key-secret` as a secret requirement in the microservice to be created and map it to the microservices which are using this secret.

> ![Image 4: UCS Studio - Export App as MS - Export Secret](https://docs.nvidia.com/ucf/2.10.0/_images/ucf_studio_export_ms_export_secret.png)

1.   From the actions toolbar, select the **Export the current app as microservice** option. This will launch the **Export as Microservice** Dialog. Update the basic information to be set for the microservice that will be created and click on **Export as Microservice** button at the bottom right of the dialog. This will open a file browser. Navigate to the directory where the **Microservice Builder Input** for the new microservice should be created and click on ok. This will start the export process.

> ![Image 5: UCS Studio - Export App as MS - Export Secret](https://docs.nvidia.com/ucf/2.10.0/_images/ucf_studio_export_ms_export.png)

1.   Once done, the success dialog should be seen along with the path where the **Microservice Builder Input** was created. The new microservice should also now be available in the microservice list on the left.

> ![Image 6: UCS Studio - Export App as MS - Export Success](https://docs.nvidia.com/ucf/2.10.0/_images/ucf_studio_ms_export_success.png)

> ![Image 7: UCS Studio - Export App as MS - MS List](https://docs.nvidia.com/ucf/2.10.0/_images/ucf_studio_export_ms_list.png)

### Using the new microservice in an application[#](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Export_App_as_MS.html#id2 "Link to this heading")

1.   Close any open graphs and create a new Graph. From the microservice list on the left, add **BotMaker Speech Web App** and **My Bot** microservices to the Graph. Connect `speech-controller` endpoint to the `speech-controller-api` endpoint.

> ![Image 8: UCS Studio - Export App as MS - Create App](https://docs.nvidia.com/ucf/2.10.0/_images/ucf_studio_ms_export_create_app_add_ms.png)

1.   Save the following content to a file (e.g. _params.yaml_) and load parameters from a file as show in [Load Parameters From File](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Reference_Apps.html#ref-app-load-params).

> 'My Bot':
>  imagePullSecrets:
>  - name: ngc-docker-reg-secret
> 
> 'BotMaker Speech Web App':
>  imagePullSecrets:
>  - name: ngc-docker-reg-secret

1.   Create a new `ngc-api-key` secret and assign it to the **My Bot** microservice as shown in [UCS Text Bot Application - Set Secrets](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Reference_Apps.html#text-chatbot-set-secrets).

2.   Follow instructions in [Build the Reference Application](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Reference_Apps.html#build-bot-app) in the **UCS Text Bot Application** application section to build the application.

3.   Deploy and interact with the application as described in [Deploy the Reference Application](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Reference_Apps.html#deploy-ref-apps).

Links/Buttons:
- [#](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Export_App_as_MS.html#id2)
- [Getting Started](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Reference_Apps.html#text-chatbot)
- [Deploy the Reference Application](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Reference_Apps.html#deploy-ref-apps)
- [Getting Started - Speech Chatbot](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Reference_Apps.html#speech-chatbot)
- [Load Parameters From File](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Reference_Apps.html#ref-app-load-params)
- [UCS Text Bot Application - Set Secrets](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Reference_Apps.html#text-chatbot-set-secrets)
- [Build the Reference Application](https://docs.nvidia.com/ucf/2.10.0/text/UCS_Reference_Apps.html#build-bot-app)
