# Cloud Development Environment (CDE) A Cloud Development Environment (CDE) is a fully-configured development setup ; editor, source tree, toolchain, services ; that runs on a remote machine instead of the developer's laptop. The developer interacts via a browser-based or remote-attached editor; compute, storage, and runtime live in the cloud. The category name became standard around 2022 once [[GitHub Codespaces]], Gitpod, Coder, and JetBrains Space made the pattern broadly accessible. Before that the same idea went by "cloud IDE" or "remote workstation." ## Why The Pattern Exists Three pressures converged: 1. **Onboarding cost**: setting up a polyglot codebase locally is a multi-day exercise. CDEs collapse it to a click. 2. **Hardware mismatch**: laptops are constrained, mobile, and battery-bound; modern builds, AI tooling, and containerized stacks want more cores and more RAM than a thin client carries. 3. **Spec-as-code**: standards like the [Dev Containers spec](https://containers.dev/) made the environment portable enough that it became worthwhile to spin one up on demand. ## Core Capabilities - **Declarative setup**: a config file (`devcontainer.json`, `.gitpod.yml`) defines the OS, tools, ports, and post-create scripts - **Editor over the wire**: VS Code in the browser, JetBrains Gateway, Cursor remote, Vim over SSH ; whatever the developer prefers - **Port forwarding**: local-feeling URLs to remote dev servers - **Pre-builds**: warm pool of pre-initialized environments - **Persistent storage**: tree and tool caches survive between sessions - **Idle suspend**: machines stop after inactivity to control cost ## Notable Implementations - **[[GitHub Codespaces]]**: GitHub-native, Azure-backed, dev-containers spec - **Gitpod**: cloud-agnostic, dev-containers + workspace classes, self-hostable - **JetBrains Space / Gateway**: JetBrains-IDE-first - **Coder**: open-source, BYO-cloud, self-hostable; popular in regulated enterprises - **AWS Cloud9** (sunset): the early cloud IDE - **Replit**: CDE adjacent ; targets prototyping and learning more than production work ## CDE vs Adjacent Patterns - **vs local declarative envs ([[DevBox]], Nix, devcontainers locally)**: same config, but compute stays on your laptop - **vs [[GitHub Actions|CI runners]]**: Actions is one-shot non-interactive; CDEs are long-lived and interactive - **vs remote testboxes ([[Crabbox]])**: a CDE *is* the developer's editor environment; a remote testbox is *only* the execution environment, called from a still-local editor - **vs [[Ephemeral Environments]]**: CDEs are typically per-developer and longer-lived; ephemeral environments are typically per-PR/per-feature for review ## When To Adopt Adopt CDEs when onboarding pain is real, the toolchain is heavy, contributors are remote/global, or compliance forbids local source on personal devices. Skip them when the team is small, the stack is light, and laptops are well-provisioned ; the per-hour cost and editor-latency tax are not free. ## References - Dev Containers spec: https://containers.dev/ - Why CDEs (Gitpod's primer): https://www.gitpod.io/cde - Coder docs: https://coder.com/docs ## Related - [[GitHub Codespaces]] - [[DevBox]] - [[Crabbox]] - [[Ephemeral Environments]] - [[GitHub Actions]]