Coder powers secure, scalable development across key industries — automotive, finance, government, and technology — enabling faster builds, tighter compliance, and seamless AI adoption in enterprise-grade cloud environments.
You create and edit Coder templates as
Terraform configuration files
(.tf) and any supporting files, like a README or configuration files for other
services.
Who creates templates?
The Template Admin role (and
above) can create templates. End users, like developers, create workspaces from
them. Templates can also be managed with git, allowing
any developer to propose changes to a template.
The template builder is the
recommended way to create templates. It guides you through selecting a base
infrastructure template, adding modules (IDEs, tools, integrations), and
configuring template settings without writing Terraform.
Starter templates for common cloud providers (AWS, Azure) and orchestrators
(Kubernetes, Docker) are available as base templates within the builder. You can
modify the generated template to use your own images, VPC, cloud credentials,
and so on. Coder supports all Terraform resources and properties.
If you prefer to use Coder on the
command line, use coder templates init to
pull a starter template, then coder templates push to upload it.
Coder starter templates are also available on our
GitHub repo.
Community Templates
As well as Coder's starter templates, you can see a list of community templates
by our users here.
Edit templates
Our templates are meant to be modified for your use cases. You can edit any
template's files directly in the Coder dashboard.
If you'd prefer to use the CLI, use coder templates pull, edit the template
files, then coder templates push.
Coder tracks a template's versions, keeping all developer workspaces up-to-date.
When you publish a new version, developers are notified to get the latest
infrastructure, software, or security patches. Learn more about
change management.
Template update policies
Note
Template update policies are a Premium feature.
Learn more.
Licensed template admins may want workspaces to always remain on the latest
version of their parent template. To do so, enable Template Update Policies
in the template's general settings. All non-admin users of the template will be
forced to update their workspaces before starting them once the setting is
applied. Workspaces which leverage autostart or start-on-connect will be
automatically updated on the next startup.
Refresh template data
Coder reads Terraform data sources once, when it imports a template version.
Every workspace built from that version reuses those stored results.
Refreshing imports the active version's source files again and publishes the
result as the new active version. Use it to pick up changes to a data source,
or to give an older version the metadata that
Dynamic Parameters needs.
To refresh a template's data:
Navigate to the template, then select Settings > Parameters.
Select Refresh template data, then confirm.
The Template data section on that page shows which version is active and
when Coder last imported it.
New workspaces use the refreshed version as soon as the import finishes.
Workspaces that are already running stay on their current version until you
update them.
Refreshing a template's data requires permission to update the template, which
the Template Admin role and above have.
Workspace renaming
Workspace renaming is disabled by default on every template. Enable it per
template, once you have confirmed that a rename won't destroy anything.
Terraform exposes the workspace name as data.coder_workspace.me.name. If a
template uses that value in an attribute Terraform can't change in place,
renaming the workspace makes Terraform destroy the resource and create a new one
on the next build. When that resource is the home volume, the developer loses
their data.
Other uses of the name are harmless. A Kubernetes label or an environment
variable changes without replacing anything. Coder can't tell the two cases
apart, so the decision stays with the template admin.
Check whether your template is safe to rename
Search the template for uses of the workspace name:
grep -rn 'coder_workspace\.[a-z_]*\.name' .
For each result, ask whether Terraform would replace the resource if that value
changed. Attributes such as a volume name, a disk name, or an instance name
usually force replacement. Labels, tags, and environment variables usually
don't.
If a resource would be replaced, reference an immutable identifier instead, such
as data.coder_workspace.me.id. Refer to
Resource persistence for the
full set of practices.
Enable renaming for a template
Go to the template, then select Settings.
On the General page, under Operations, select Allow users to rename
their workspaces.
Select Save.
Developers can then rename a workspace from the workspace's Settings page,
or with coder rename.
While the setting is off, the workspace name field is disabled and the API
rejects renames.
Warning
The deployment-wide CODER_ALLOW_WORKSPACE_RENAMES option is deprecated.
While it is set, renaming is enabled for every template in the deployment,
and the per-template setting can't turn it off. Unset it, then enable
renaming on the templates that need it.
Delete templates
You can delete a template using both the coder CLI and UI. Only
template admins and owners can delete a
template, and the template must not have any running workspaces associated to
it.
In the UI, navigate to the template you want to delete, and select the dropdown
in the right-hand corner of the page to delete the template.
Using the CLI, login to Coder and run the following command to delete a
template: