Open in Coder
You can embed an "Open in Coder" button into your git repos or internal wikis tolet developers quickly launch a new workspace.
How it works
To support any infrastructure and software stack, Coder provides a genericapproach for "Open in Coder" flows.
1. Set up git authentication
SeeExternal Authentication to set up Git authenticationin your Coder deployment.
2. Modify your template to auto-clone repos
The id in the template'scoder_external_auth
data source must match theCODER_EXTERNAL_AUTH_X_ID
in the Coder deployment configuration.
If you want the template to clone a specific git repo:
# Require external authentication to use this templatedata "coder_external_auth" "github" { id = "primary-github"}resource "coder_agent" "dev" { # ... dir = "~/coder" startup_script =<<EOF # Clone repo from GitHub if [ ! -d "coder" ] then git clone https://github.com/coder/coder fi EOF}
Note
Thedir
attribute can be set in multiple ways, for example:
~/coder
/home/coder/coder
coder
(relative to the home directory)
If you want the template to support any repository viaparameters
# Require external authentication to use this templatedata "coder_external_auth" "github" { id = "primary-github"}# Prompt the user for the git repo URLdata "coder_parameter" "git_repo" { name = "git_repo" display_name = "Git repository" default = "https://github.com/coder/coder"}locals { folder_name = try(element(split("/", data.coder_parameter.git_repo.value), length(split("/", data.coder_parameter.git_repo.value)) - 1), "")}resource "coder_agent" "dev" { # ... dir = "~/${local.folder_name}" startup_script =<<EOF # Clone repo from GitHub if [ ! -d "${local.folder_name}" ] then git clone ${data.coder_parameter.git_repo.value} fi EOF}
3. Embed the "Open in Coder" button with Markdown
[](https://YOUR_ACCESS_URL/templates/YOUR_TEMPLATE/workspace)
Be sure to replaceYOUR_ACCESS_URL
with your Coder access url (e.g.https://coder.example.com) andYOUR_TEMPLATE
with the name of your template.
4. Optional: pre-fill parameter values in the "Create Workspace" page
This can be used to pre-fill the git repo URL, disk size, image, etc.
[](https://YOUR_ACCESS_URL/templates/YOUR_TEMPLATE/workspace?param.git_repo=https://github.com/coder/slog¶m.home_disk_size%20%28GB%29=20)

5. Optional: disable specific parameter fields by including their names as
specified in your template in thedisable_params
search params list
[](https://YOUR_ACCESS_URL/templates/YOUR_TEMPLATE/workspace?disable_params=first_parameter,second_parameter)
Example: Kubernetes
For a full example of the Open in Coder flow in Kubernetes, check outthis example template.