Home
/
Templates
/
Open in Coder

Open in Coder

Open in Coder

An "Open in Coder" button can be embedded into your git repos or internal wikis to allow developers to quickly launch a new workspace.

How it works

To support any infrastructure and software stack, Coder provides a generic approach for "Open in Coder" flows.

  1. Set up Git Authentication in your Coder deployment

  2. Modify your template to auto-clone repos:

The id in the template's coder_git_auth data source must match the CODER_GITAUTH_0_ID in the Coder deployment configuration.

  • If you want the template to clone a specific git repo

    # Require git authentication to use this template
    data "coder_git_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: The dir 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 via parameters

    # Require git authentication to use this template
    data "coder_git_auth" "github" {
        id = "primary-github"
    }
    
    # Prompt the user for the git repo URL
    data "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
    }
    
  1. Embed the "Open in Coder" button with Markdown

    [![Open in Coder](https://YOUR_ACCESS_URL/open-in-coder.svg)](https://YOUR_ACCESS_URL/templates/YOUR_TEMPLATE/workspace)
    

    Be sure to replace YOUR_ACCESS_URL with your Coder access url (e.g. https://coder.example.com) and YOUR_TEMPLATE with the name of your template.

  2. 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.

    [![Open in Coder](https://YOUR_ACCESS_URL/open-in-coder.svg)](https://YOUR_ACCESS_URL/templates/YOUR_TEMPLATE/workspace?param.git_repo=https://github.com/coder/slog&param.home_disk_size%20%28GB%29=20)
    

    Pre-filled parameters

Example: Kubernetes

For a full example of the Open in Coder flow in Kubernetes, check out this example template.

Devcontainer support

Devcontainer support is on the roadmap. Follow along here

See an opportunity to improve our docs? Make an edit.