# 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]]