Customize your template
In Launch your first workspace, you installed the coder CLI, started the Coder server, and built a workspace from the Quickstart template.
That template is a good starting point, but it has gaps:
- It may not include every language in which you write code.
- It comes with a base toolset, but not the personal command-line tools you install on every machine.
- It clones public repositories, but it can't reach your private repositories without manual authentication.
This part of the Quickstart closes those gaps one at a time. Most of these guides edit the same template and introduce one Terraform building block. One guide instead works inside a running workspace. Each guide ties its change to something you can observe.
What you'll do
Work through the guides in order, or pick the one that solves your problem:
- Add a programming language: expose a new language through a parameter and install it at startup.
- Install your own command-line tools: install personal command-line tools and make them persist.
- Clone private repositories: authenticate to GitHub with an external-auth data source.
Each guide takes about 10 minutes.
Templates in brief
A template is a Terraform blueprint for a workspace.
It consists of one or more Terraform files (*.tf), and it can include templated scripts (*.tftpl), a README, and any other supporting file.
Every Coder template declares the coder provider inside a required_providers block:
terraform {
required_providers {
coder = {
source = "coder/coder"
}
}
}
A template is built from a few kinds of Terraform block:
- A provider is a plugin that connects Terraform to a platform or service.
The
coderprovider connects Terraform to Coder. - A resource is any infrastructure object you want to manage with Terraform, such as a workspace agent or a cloud storage bucket.
- A data source reads data from a provider without creating or changing infrastructure. Parameters and external auth are data sources.
- A module is a reusable bundle of resources, data sources, providers, and other Terraform blocks you pull in by reference. Modules reduce the need to define the same Terraform code multiple times. You can pull modules from the Coder Registry.
To go deeper on any of these, visit the Terraform documentation.
Open the template for editing
Most guides in this part edit the Quickstart template.
Open it for editing now, either in the Coder web editor or in your local editor with the coder CLI.
- Log in to Coder and select Templates.
- Find the Coder Quickstart template you created and open it.
- Select the three-dots menu next to Create Workspace, then select Edit files.
The template web editor opens:
Coder template web editor
The template has 3 files:
install-languages.sh.tftpl, a startup script that installs the selected languages.main.tf, the Terraform that defines the workspace.README.md.
The guides in this part edit main.tf and install-languages.sh.tftpl.
Each guide publishes a new template version after you edit these files.
The guides use the CLI command coder templates push, which reads from the ~/coder-quickstart folder you pulled.
If you opened the template in the web editor instead, publish the new version from the editor each time a guide tells you to push.
What's next?
Start with Add a programming language, then work through the rest of the series in order.
Learn more
- Extending templates in the Coder documentation
- Terraform documentation from HashiCorp

