hash_id. You can optionally override specific values at creation time.
Templates are useful for:
- Standardization — ensure all team members launch instances with consistent configurations
- Convenience — avoid repeating the same image, env, and onstart parameters across commands
- Sharing — distribute configurations via template hash ID
Template Fields Reference
When creating or editing a template, the following fields can be configured:Template Identifiers
Templates have two identifiers. Which one you use depends on the operation:Create a Template
Usevastai create template to define a reusable configuration:
id and hash_id — you’ll need them for different operations.
You can also attach default machine search filters using --search_params:
Search for Templates
Find templates usingvastai search templates with the same query syntax used by search offers:
Query Syntax
Quote the query string to prevent shell interpretation of
> and < characters.Searchable Fields
Create an Instance from a Template
Pass--template_hash to create instance to use a template as the base configuration. You don’t need to specify --image or other fields already defined in the template:
Override Template Values
When you create an instance with both a template and additional flags, the following precedence rules apply:Example: Overriding the Image
Example: Merging Environment Variables
If your template defines:MODEL_ID=mistralai/Mistral-7B-v0.1— request overrides templateMAX_TOKENS=4096— retained from templateHF_TOKEN=hf_xxx— added from request
Edit a Template
Update an existing template usingvastai update template with the template’s hash_id as the positional argument. Editing creates a new version of the template. Values from the previous version are not carried over, so pass the full set of flags the new version should have. The flags are the same ones create template accepts:
The new version gets a new
id and hash_id because the hash is derived from the template’s content. Use the new hash_id returned in the output for subsequent operations. The previous version keeps its identifiers, so running instances and shared links stay valid. A command whose values match the current version exactly creates nothing and returns the existing hash_id.Delete a Template
Delete a template using either its numericid or its hash_id:
Deleting a template removes your relationship to it. It does not destroy the underlying template record.
Common Pitfalls
Using the wrong identifier for the operation
Using the wrong identifier for the operation
Templates have two identifiers and each is used in different contexts:
create instance --template_hashtakes the hash_id (string)update templatetakes the hash_id as a positional argumentdelete template --template-idtakes the numeric id (integer)
id where a hash_id is expected (or vice versa), the operation will fail.Environment variables aren't applying
Environment variables aren't applying
The Port mappings are also specified in this string using
--env flag expects Docker flag format as a single string, not key=value pairs:-p:Template image overridden unexpectedly
Template image overridden unexpectedly
When you specify both
--template_hash and --image, the --image flag overrides the template’s image. If you want to use the template’s image, omit the --image flag entirely.Volume didn't mount from template
Volume didn't mount from template
The
volume_info field stored in templates is a UI hint only. To actually mount a volume, pass the volume flags in the create instance command:hash_id changed after editing
hash_id changed after editing
This is expected behavior. The
hash_id is content-based, so any edit that changes a value produces a new version with a new hash. Always capture the hash_id from the update command output or search for your template again before referencing it.