Coder

Self-hosted cloud development environments

IDEs & Code Editors ★ 16.6k stars Hard setup AGPL-3.0

Coder provisions and manages remote cloud development environments defined with Terraform, accessible from any editor. It targets engineering teams wanting consistent, secure dev environments. It is deployed via Docker, Kubernetes, or a binary.

Key features

  • Terraform-defined workspaces
  • Works with VS Code and JetBrains
  • Centralized environment management
  • Templates and policies

Pros & cons

Strengths

  • Consistent dev environments
  • Editor agnostic
  • Infrastructure as code

Trade-offs

  • Complex initial setup
  • Needs compute resources

Coder replaces

Last reviewed Aug 26, 2026 · 778 words

A single used server with 64 GB of RAM and 16 cores runs Coder for a team of 8 with room to spare, which is the arithmetic that makes GitHub Codespaces bills look silly. The control plane itself needs 1 GB; the real cost is per workspace, and 4 GB plus 2 cores per developer is a comfortable starting point for web work. What Coder adds over a pile of docker run commands is the part teams actually pay for: workspaces defined in Terraform, started and stopped on schedule, reachable from VS Code, JetBrains or a terminal over an authenticated tunnel, and identical for every developer. Rated Hard in the catalogue, and the rating is about the Terraform, not the install.

The control plane install is short; the template is the work

Coder is a Go binary with PostgreSQL behind it. Run without a database URL and it starts an embedded Postgres, fine for evaluation and small teams; point CODER_PG_CONNECTION_URL at a real instance when it matters. For Docker-backed workspaces, the container needs the host's Docker socket:

services:
  coder:
    image: ghcr.io/coder/coder:latest
    ports:
      - "7080:7080"
    environment:
      CODER_HTTP_ADDRESS: "0.0.0.0:7080"
      CODER_ACCESS_URL: "https://coder.example.com"
      CODER_WILDCARD_ACCESS_URL: "*.coder.example.com"
    volumes:
      - ./coder:/home/coder/.config
      - /var/run/docker.sock:/var/run/docker.sock
    group_add:
      - "999"
    restart: unless-stopped

Replace 999 with the GID of the docker group on the host. The wildcard access URL needs a wildcard DNS record and certificate; it is what makes "open port 3000 of my workspace in a browser" work, and skipping it is the most common reason people think port forwarding is broken. First visit creates the owner account, and the coder CLI logs in with coder login https://coder.example.com.

Templates are Terraform, and that is the whole product

A template is a Terraform module that says how to build a workspace. The starter Docker template creates a container from an image, mounts a persistent home volume, and injects the Coder agent. Every workspace a developer creates from it is that module applied with their parameters. Change the template, and the next start of every workspace picks it up: new base image, new tool version, new secret path, done once for everyone.

That is the "consistent dev environments" pro in practice, and also the "complex initial setup" con: your first afternoon is Terraform, Docker image building, and deciding what belongs in the image versus a dotfiles repo. Templates for Kubernetes, AWS EC2, GCP, Azure, and community ones for Proxmox and Nomad exist, and the Proxmox or Docker piece is relevant if you are choosing which your homelab workspaces should live on. Kubernetes is the production path for teams; Docker on one big box is the honest path for a homelab and a startup of 5.

Editors: it is not a web IDE, and that is the point

Coder does not force a browser editor. The agent inside each workspace exposes SSH, so coder ssh myws works, VS Code's Remote-SSH and the official Coder extension connect directly, and JetBrains Gateway does the same for IntelliJ and friends. A browser VS Code (code-server, which the same company maintains) is available as a template module for the tablet-and-Chromebook case. Autostop after a configurable idle period reclaims the resources, autostart before standup brings them back, and a workspace that has been stopped for 30 days can be pruned by policy.

The GitHub Codespaces switching notes cover what you lose: the one-click-from-repo start, prebuilt containers on every branch, and someone else's on-call rota.

When you do not need it

One developer wanting a remote editor: code-server in a container, done. A small team that only needs "same container, different laptops": DevPod reads devcontainer.json and needs no server at all. Coder earns its 1 GB and its Terraform once there are enough people that "works on my machine" costs real hours, or once compliance says source code stays on the company's hardware.

What I'd do

Team of 4 or more, or a solo consultant who wants a fresh per-client environment on a beefy home server: Coder in Docker with external Postgres, wildcard DNS through Caddy, the starter Docker template customised with a company base image, autostop at 2 hours idle, SSO via OIDC from whatever identity server you already run. Give it 1 weekend for templates and never think about onboarding a laptop again. Below that team size, code-server or DevPod, and keep the weekend.

Compare Coder

6 head-to-head comparisons.

Similar ides & code editors apps