Upload template
TL;DR
- Prepare template for a working app, agent, or configuration
- Upload template
- Submit for review or publish privately
Provide an email to receive outcome of a review.
Before creating templates, consider understanding how users consume templates from the Marketplace.
Submit a template
Prerequisites
Decide whether you wish to keep your templates private for personal use, or attempt to monetize them and make them publicly available.
- Earning path: Public templates
- Private templates
Step 1: Become a contributor
To submit a template to the Marketplace, when logged into the Cloud Marketplace, navigate to My Templates and complete the form to become an allowlisted template contributor.
Show me

Step 2: Setup template metadata
2.1 From My Templates click Create Template.
Show me

2.2 Enter
Required | Optional | |
---|---|---|
Thumbnail image | Tutorial link | |
Template name | GitHub URL | |
Template description | Socials | |
Template overview | - X | |
Use cases | - Telegram |
Show me

Step 3: Provide YAML file
3.1 Either use the YAML editor provided to define your Cloud Infrastructure or upload an existing file.
Show me

Show me a sample YAML
# Defines the version of the configuration format
version: 0.1
# Services are a collection of workloads that work together
services:
# Defines a workload named 'jupiter'
jupiter:
# Specify the container image name; Make sure image is public
image: jupyter/base-notebook@sha256:8c903974902b0e9d45d9823c2234411de0614c5c98c4bb782b3d4f55b3e435e6
# Determines when to fetch the latest version of the workload
imagePullPolicy: Always
# Defines the command to run; empty by default
command: []
# Specifies arguments for the command; empty by default
args: []
# Defines network-related settings
ports:
- containerPort: 8888 # The port on which the service will be available
protocol: TCP # The protocol used for communication
expose: true # This will generate the URL for the service, so it can be accessed from the internet
# Defines environment variables for the workload
env:
- name: APP_ENV # Environment variable name
value: "{{.ENV}}" # Placeholder for dynamic value substitution; It means whenever someone try to deploy this service, they need to provide a value for this variable.
default: development # Default value for the environment variable
- name: JUPYTER_ENABLE_LAB # Example static environment variable
value: "yes"
# Specifies the minimum resource allocation
# This also specify the template price
resourceUsage:
idle:
cpu: 200 # CPU allocation (likely in millicores, meaning 0.2 cores)
memory: 400 # Memory allocation (likely in MB)
3.2 Submit the resource for review by clicking Send For Review
Verification takes 2-3 days. If it's approved, your template becomes available in the Marketplace.
To receive an email alert, ensure you have linked an email to your Marketplace account.
- From the Cloud Marketplace, navigate to My Templates and complete the form.
This form is essentially redundant for private templates, what it does is associate user details with templates in the backend. This step is vital to become an allowlisted template contributor, however, if you never make your template public, this data remains unused.
Show me

2. Set up template metadata.
Required | Optional | |
---|---|---|
Thumbnail image | Tutorial link | |
Template name | GitHub URL | |
Template description | Socials | |
Template overview | - X | |
Use cases | - Telegram |
Show me

3. Create your template.
3.1 From My Templates click Create Template.
Show me

3.2 Either use the YAML editor provided to define your Cloud Infrastructure or upload an existing file.
Show me

Show me a sample YAML
# Defines the version of the configuration format
version: 0.1
# Services are a collection of workloads that work together
services:
# Defines a workload named 'jupiter'
jupiter:
# Specify the container image name; Make sure image is public
image: jupyter/base-notebook@sha256:8c903974902b0e9d45d9823c2234411de0614c5c98c4bb782b3d4f55b3e435e6
# Determines when to fetch the latest version of the workload
imagePullPolicy: Always
# Defines the command to run; empty by default
command: []
# Specifies arguments for the command; empty by default
args: []
# Defines network-related settings
ports:
- containerPort: 8888 # The port on which the service will be available
protocol: TCP # The protocol used for communication
expose: true # This will generate the URL for the service, so it can be accessed from the internet
# Defines environment variables for the workload
env:
- name: APP_ENV # Environment variable name
value: "{{.ENV}}" # Placeholder for dynamic value substitution; It means whenever someone try to deploy this service, they need to provide a value for this variable.
default: development # Default value for the environment variable
- name: JUPYTER_ENABLE_LAB # Example static environment variable
value: "yes"
# Specifies the minimum resource allocation
# This also specify the template price
resourceUsage:
idle:
cpu: 200 # CPU allocation (likely in millicores, meaning 0.2 cores)
memory: 400 # Memory allocation (likely in MB)
3.3 Submit the resource to your profile by clicking Send For Review.
What next?
- Understand more about template schemas and constraints
- Before using a verified or community template, you may wish to scan the resource for vulnerabilities
- Learn about how playbooks assist you to configure your Compute Infrastructure