DevPod - Open-Source Dev Environments as Code Cheatsheet
DevPod (by Loft) is a client-only, open-source tool that creates reproducible developer environments from a standard devcontainer.json on any backend — your local Docker, a remote SSH machine, a Kubernetes cluster, or a cloud VM. Think “self-hosted, unopinionated GitHub Codespaces”: it works with any IDE (VS Code, JetBrains, or a browser), you control where the environment runs via pluggable providers, and there is no server component to operate.
Installation
| Method | How |
|---|
| CLI | Download from GitHub Releases (Linux/macOS/Windows) |
| Desktop app | DevPod Desktop GUI available |
| Requirement | A provider backend (Docker, SSH host, K8s, cloud) |
| Verify | devpod version |
Providers (Where Environments Run)
| Command | Description |
|---|
devpod provider add docker | Use local Docker |
devpod provider add ssh --option HOST=user@host | Use a remote machine |
devpod provider add kubernetes | Run in a K8s cluster |
devpod provider add aws (gcloud, azure) | Cloud VM providers |
devpod provider list | List configured providers |
devpod provider use docker | Set the default provider |
Creating Workspaces
| Command | Description |
|---|
devpod up . | Start an env from the current repo’s devcontainer |
devpod up github.com/org/repo | From a Git repo URL |
devpod up . --ide vscode | Open in a specific IDE |
devpod up . --provider kubernetes | Choose a backend |
devpod up . --recreate | Rebuild the workspace |
Managing Workspaces
| Command | Description |
|---|
devpod list | List workspaces |
devpod stop <name> | Stop a workspace |
devpod delete <name> | Delete a workspace |
devpod ssh <name> | SSH into a workspace |
devpod status <name> | Show workspace status |
devcontainer.json (the Spec)
DevPod consumes the open Dev Container spec, so the same file works in Codespaces, VS Code, and DevPod.
{
"name": "my-project",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/devcontainers/features/node:1": { "version": "20" }
},
"postCreateCommand": "npm install",
"customizations": {
"vscode": { "extensions": ["dbaeumer.vscode-eslint"] }
}
}
| Field | Purpose |
|---|
image / dockerfile | Base environment |
features | Composable add-ons (languages, tools) |
postCreateCommand | Setup run after creation |
forwardPorts | Ports to expose |
customizations | IDE-specific settings/extensions |
IDE Integration
| IDE | How |
|---|
| VS Code | --ide vscode (desktop or browser) |
| JetBrains | --ide goland/pycharm/... |
| Browser (openvscode) | --ide openvscode |
| SSH/terminal | devpod ssh <name> |
Common Workflows
# Local Docker dev env from a repo's devcontainer
devpod provider add docker
devpod up github.com/org/project --ide vscode
# Offload heavy builds to a beefy remote machine
devpod provider add ssh --option HOST=me@build-server
devpod up . --provider ssh
# Ephemeral cloud env in Kubernetes, deleted when done
devpod up . --provider kubernetes
devpod delete my-project
DevPod vs Alternatives
| Aspect | DevPod | GitHub Codespaces | Devbox | Gitpod |
|---|
| Hosting | Any backend (your choice) | GitHub cloud | Local (Nix) | Cloud/self-host |
| Spec | devcontainer.json | devcontainer.json | devbox.json | Gitpod config |
| Server | None (client-only) | Managed | None | Server |
| Best for | Portable, any-cloud dev | Zero-config GitHub | Reproducible local | Git-triggered workspaces |
DevPod uses the same devcontainer spec as Codespaces; for local Nix-based envs see Devbox.
Resources