Managing Templates
Creating a Template
To create a new template:
- Navigate to the
Templatespage via theAdministrationmenu and select+ Template. - Fill out the form presented:
Template Information
-
Name: The name of the template, used to identify it in the system. -
Description: A description of the template, used to provide details about its purpose. -
Template Icon: Select an icon to represent the template and spaces created from it. This can be a built-in icon or a user-added icon.
Platform and Job Description
-
Platform: Choose the platform to run the template: Docker, Podman, Nomad, or Manual.- Manual templates: Require the knot agent to be started manually on the remote server.
-
Nomad Job (HCL)orContainer Specification (YAML): Provide the job description in either Nomad HCL or YAML format, depending on the selected platform. This field is not shown forManualtemplates.Next to the label is a wand icon that opens the template spec wizard — a UI-driven builder that picks a base image from the catalog, sets memory/CPU, ports, environment variables, and bind mounts, then writes the spec for you. The wizard only enables for specs it can safely round-trip (single-task Nomad
dockerjobs, or any well-formed container spec); multi-task Nomad jobs disable the wizard with an explanatory tooltip.
Volume Definition
Volume Definition (YAML): Optionally define volumes or managed host paths to be created for the space. This field is unavailable forManualtemplates. Inpaths,~resolves to the server user’s home directory, absolute paths start with/, and relative paths are resolved from the agent working directory.
Resource Allocation & Scripts
-
System Startup Script: An optional script to run when the space starts. This field is unavailable forManualtemplates. The script must be one defined under scripts. -
System Shutdown Script: An optional script to run when the space stops. This field is unavailable forManualtemplates. The script must be one defined under scripts. -
Allow stopped spaces to be migrated between nodes: Available only for local-container templates (Local Container,Docker,Podman, andApple). When enabled, a stopped space created from the template can be reassigned to a different live node from the edit space form. In Knot Pro Pro , combining node migration with auto-restart on failure enables automatic recovery from failed nodes. -
Compute Units: The number of compute units the space will use. This is used to calculate the cost of running the space. Set to0for no cost. -
Storage Units: The number of storage units the space will use. This is used to calculate the cost of creating the space. Set to0for no cost. -
Maximum Uptime: The maximum time a space can run. Specify the time in minutes, hours, or days.
Scheduling
Schedule: Define the days and times the space is allowed to run. Spaces running outside the schedule will be automatically stopped.Auto Start: Automatically start a stopped space when its scheduled start time is reached.
Zones and Access Control
-
Limit to Zones: Specify the zones where the template is available. Prefix a zone name with!to make the template available in all zones except the specified one.A reserved zone name
<leaf-node>is available for controlling template availability on leaf node servers:<leaf-node>: The template is only shown on leaf node servers!<leaf-node>: The template is excluded from leaf node servers (available only on the cluster)
Custom Fields and Features
-
Custom Fields: Add optional fields to pass additional information into a space.Variable Name: The name of the variable for the field.Field Label / Description: A description of the field, displayed in the space creation and edit forms.
-
Features: Define the features available to the space (e.g., Visual Studio Code Tunnels). Users require the appropriate role permissions to access these features. -
Restrict to Groups: Specify the groups that can access the template. Only users in these groups can see the template and create spaces from it. -
Active: If unchecked, disables the template, preventing new spaces from being created from it.
Deleting a Template
To delete a template:
- Select the menu item next to the template.
- Click
Deleteto open a confirmation dialog. - Confirm the action to remove the template.
Templates with existing spaces cannot be deleted.
Editing a Template
Editing a template is similar to creating one:
- Select the
Editoption from the template menu. - Update the template details as needed.
Exporting and Importing Templates
Templates can be exported to a portable YAML format for version control, backup, or transfer between knot instances.
Export
knot template export "Ubuntu Desktop" > ubuntu.yamlThe YAML file contains the full template definition: metadata, job spec (HCL/YAML), volume definitions, schedule, custom fields, feature flags, and health check configuration. Template variables (${{ .X }}) are preserved verbatim. Scripts are referenced by name (not UUID) for portability.
Import
# From a file
knot template import --file ubuntu.yaml
# From stdin
cat ubuntu.yaml | knot template import
# With a name override
knot template import --file ubuntu.yaml --name "Ubuntu Dev"The import creates a new template on the server. Script names are resolved to IDs automatically — if a script doesn’t exist on the target server, it’s skipped with a warning.
YAML format
name: Ubuntu Desktop
description: Base Ubuntu 26.04 with dev tools
platform: nomad
icon_url: /icons/ubuntu-linux-alt.svg
active: true
compute_units: 1
features:
with_terminal: true
with_ssh: true
groups:
- developers
zones:
- zone1
max_uptime: 8
max_uptime_unit: h
startup_script: install-tools.sh
job: |
job "${{.space.name}}" {
...
}
volumes: |
volumes:
- name: data
type: csi