Loft
Labs announced the release of DevPod, an open source project that allows engineers to codify
reusable dev environments for any infrastructure. DevPod is the first and only
tool for creating and managing dev environments that does not require a
heavyweight server-side setup. Instead, DevPod is entirely client-only and runs
directly on engineers' machines while connecting to cloud platforms like AWS or
remote systems like Kubernetes without a server-side component in the
middle.
The Loft team created and
currently maintains several popular open-source projects in the Kubernetes
space, including vcluster (2,500+ GitHub stars, 32M+ vclusters created) and
DevSpace (3,500+ GitHub stars, 1.2M+ downloads). DevPod's launch marks the
team's first project that extends beyond the Kubernetes ecosystem. While
working on their own products, the Loft team evaluated existing dev environment
offerings and was disappointed to see no pure open-source,
infrastructure-independent solution available that could fit the needs of
open-source contributors and enterprise engineers alike. The team created
DevPod to fill this gap.
Unlike other dev environment
offerings, DevPod
does not host or manage the dev environments. Instead, DevPod introduces a way
to define a dev environment which can then be run in any cloud infrastructure
or even on a localhost machine using Docker or Kubernetes. DevPod allows dev
teams to take full control over their dev environments, without being locked
into a specific provider. Developers can write code in any language, and run it
anywhere. For example, they can test on virtual machines, or code in Python
with VScode running on Docker Desktop, or in Go running in EKS. If the provider
they need doesn't exist, they can build it.
"We see DevPod as the
Terraform for dev environments. Define your dev-environment-as-code and then
run it anywhere you want. Just like Terraform, DevPod is
infrastructure-independent and client-only, which makes it incredibly easy to
get started with." states Lukas Gentele, CEO at Loft Labs. "One of my favorite
features in DevPod is that it automatically puts your dev environments to sleep
when you're not working. Since DevPod is client-only, we do this by injecting a
lightweight control tool into the dev environment that looks for active
connections and turns the environment off when nobody is using it."
If you have used Codespaces
before, you know how powerful a pre-configured development environment can be.
With the power of most cloud dev environments also comes a lock-in and the
inability to control everything yourself. Most dev environment offerings either
require a complex server-side setup by a system admin or they are managed
offerings that force you into a particular cloud offering. Neither one is
ideal. DevPod takes a different approach. Instead of requiring a dev
environment server, developers get an easy-to-install
client-only desktop app.
All you need is a devcontainer.json file in your project to launch a dev
environment in any cloud or even on localhost.
Specifying a
devcontainer.json to define adev environment creates a reproducible experience
for anyone using the project-no matter where they spin up the dev environment.
DevPod allows users to seamlessly switch between cloud-hosted and local
environments. Developers can work on Kubernetes in AWS for data-intensive
operations and tests that need tons of computing power, but they can easily
switch to Docker on their laptops to save costs if they don't need all that
cloud power. DevPod ensures developers can switch back and forth between
environments while retaining the same experience.
DevPod is the glue connecting
local IDEs to machines or containers for development. Depending on a project's
requirements, developers can create a workspace locally on their computers,
provision a powerful VM in the cloud, connect to a spare remote computer, or
create a dev container in Kubernetes. Under the hood, DevPod uses so-called
providers to map what's defined in the devcontainer.json to the infrastructure
a user selects to spin up the dev environment. DevPod providers can create
these containers on the local computer, any remote machine, or in a public or
private cloud. It's also possible for developers to extend DevPod and write
their own custom providers.
Why DevPod
Compared to hosted services such as Github Codespaces, GitPod,
JetBrains Spaces, or Google Cloud Workstations, DevPod has the following
advantages:
- Cost savings: DevPod is completely
FREE. It can use bare virtual machines or even your localhost laptop to run
your dev environments.
- No vendor lock-in: DevPod supports all major
cloud providers and even lets developers add their own-either just for themselves,
or for the community. Choose the best cloud provider for the task- whether that
be the most affordable or the most powerful-and switch as needed.
- Local development: Users get the same
developer experience locally, so they don't need to rely on a cloud provider.
- Cross IDE support: DevPod supports VSCode
and the full JetBrains suite; other IDEs can be connected via ssh.
- Client-only: DevPod runs solely on a
developer's computer as a lightweight desktop app, so there's no need to
install a server backend. Developerscan use the DevPod CLI if they prefer the
terminal.
- Open-Source: DevPod is 100%
open-source and extensible. If a provider doesn't exist, developers can just
create their own.
- Rich feature set: DevPod already supports
prebuilds, auto inactivity shutdown, git and docker credentials sync, with many
more features to come.
Loft Labs designed DevPod to use the devcontainer.json specification to configure the
development container, which is also used by other popular tools such as VSCode
dev containers or Github Codespaces. This means developers can already reuse
projects that use this configuration to spin up a workspace in DevPod. If no
configuration is found, DevPod will automatically try to determine the
programming language used and provide an appropriate template for users to get
started with.