Self-hosted service
devspace-sh/devspace avatar
devspace-sh/devspace

DevSpace: A Client-Only CLI That Puts Your Dev Loop Inside Kubernetes

DevSpace - The Fastest Developer Tool for Kubernetes ⚡ Automate your deployment workflow with DevSpace and develop software directly inside Kubernetes.

5,185 stars424 forksGoApache-2.0

At a glance

What is it?
DevSpace is an Apache-2.0 Go CLI that reads a devspace.yaml, builds and deploys your app to any kube-context, and then syncs files into the running container instead of rebuilding images. It is a good fit for teams that already run Kubernetes in dev and want the workflow committed next to the code.
Who is it for?
Adopt DevSpace if your team already runs a Kubernetes cluster for development and wants the build, deploy and hot reload steps written down in a devspace.yaml that is versioned with the code, so that a developer who is not a Kubernetes specialist can run devspace deploy and get a working instance.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Go, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The Problem DevSpace Targets: Kubernetes Knowledge Spread Across a Team

The README states the problem in its own words: building distributed microservices on Kubernetes is hard, and it is harder for large teams of developers. The specific friction it names is that deploying and debugging services forces you to run commands like kubectl get pod and copy pod ids back and forth. That is a real cost, but it is not the only one, and DevSpace's answer addresses a second cost more directly: the uneven distribution of Kubernetes knowledge inside a team.

The README's model is explicit. The DevOps or Kubernetes expert on the team configures DevSpace through devspace.yaml and commits it via git. Other developers check out the project and run devspace deploy, which handles image building and deployment of the project and related components, and they end up with a running instance. Configuration is described as highly dynamic, driven by config variables, so one base configuration can still allow per-developer differences. The README gives differing sub-domains for testing as the example.

So the target user is not the platform engineer. It is the application developer who should not need to become a Kubernetes expert to get a working environment, plus the one person on the team who writes and maintains the config. If your team has no such division of labour, the value proposition is weaker.

Client-Only Architecture: A Single Binary Talking to Your Kube-Context

The README describes DevSpace as a client-only developer tool. It runs as a single binary CLI on your computer, ideally from the terminal inside your IDE. There is no server-side component. It communicates directly to your Kubernetes cluster using your kube-context, the same way kubectl does.

That single design decision explains most of the rest of the tool. Because there is nothing to install in the cluster, adoption does not require a platform team to approve and operate a new in-cluster service, and there is no shared control plane whose availability you depend on. Because it uses the kube-context, switching clusters and namespaces is a matter of switching context, and the README notes you can start on a local cluster and move to a remote one when you need cloud resources such as GPUs or a shared system like Kafka.

The trade-off follows from the same decision. Anything that would normally be handled by a long-running in-cluster agent has to be done from the client process instead. The README lists the compatibility the project claims: local clusters such as minikube, k3s, MikroK8s and kind; managed clusters on GKE, EKS, AKS and Digital Ocean; and self-managed clusters created with Rancher. Those are claims in the README, not results reproduced here.

How the Development Loop Works: Build, Deploy, Then Sync Instead of Rebuild

The workflow has two phases. The first is the deployment phase, driven by devspace deploy, which builds images, tags them, and deploys the application together with its dependencies. The README says DevSpace builds multiple images in parallel and tags them automatically. It also says DevSpace will start port-forwarding and log streaming for you, which removes the copy-a-pod-id step that the README calls out as the tedious part of working with Kubernetes.

The second phase is the development loop. Rather than rebuilding an image and redeploying a container on every change, DevSpace synchronizes files into the container that is already running. The README describes this as high performance, bi-directional file synchronization that detects code changes and moves files between your local environment and the containers in Kubernetes. Your application then reloads inside the running container, using whatever reload mechanism your stack already has. DevSpace is not described as restarting your process for you; the reload is the application's own behaviour, triggered by the changed files landing in the container.

That distinction matters when you evaluate it. The tool's responsibility ends at getting the right bytes into the right path in the container. Whether your process notices is a property of your project, which is why the sync configuration is the part most likely to need tuning per language and per framework.

Getting It Running: devspace.yaml, Config Variables and the Deploy Command

The README's quickstart section does not inline the steps. It points to the getting started guide at devspace.sh/docs/getting-started/installation for installation, so the exact install command is not something this article can state from the supplied material. What the README does establish is the shape of the workflow after installation.

You write a devspace.yaml at the root of the project. The README describes it as the single declarative config file that holds your workflows: how images are built, how the project and its dependencies are deployed, and the rest of the pipeline. That file is committed to git, which is what makes workflows versioned with the code. The README's claim is that you can get any old version of the project up and running with a single command, because the workflow definition travels with the source.

Day to day, the command named in the README is devspace deploy. For a developer who has just cloned the repository, that one command is intended to cover image building and deployment of the project and related components. Beyond that, the README mentions config variables as the mechanism for keeping one base configuration while allowing differences between developers, with per-developer sub-domains for testing as the stated example. It does not list the variable syntax or the keys in this excerpt, so treat the variable reference in the documentation as required reading rather than something you can infer from the README alone.

Where DevSpace Stops Being the Right Tool

The client-only design has a boundary that the README does not dwell on. File synchronization assumes the container is running and reachable from your machine through the cluster API. That is fine for a long-lived dev pod. It is a poor fit for workloads where the container is short-lived or where the interesting state lives outside the container filesystem, because there is nothing stable to sync into.

The second limitation is organizational rather than technical. The README's own description of the workflow depends on one person owning devspace.yaml. If nobody owns it, the config drifts, and the promise that a new developer runs one command and gets a working instance stops holding. The config-variable mechanism makes this easier to get wrong rather than harder: per-developer overrides are convenient, and they are also how a single base configuration turns into a set of branches that only their authors understand.

The third is cluster access. DevSpace uses your kube-context, so the tool is only as available as the cluster behind that context. The README itself notes that giving everyone on a team on-demand access to a Kubernetes cluster is a challenging problem for administrators, and points to loft.sh for sharing dev clusters. If your team does not have that problem solved, DevSpace does not solve it for you.

The Realistic Alternative: kubectl and Helm Plus a Sync Tool

The alternative most teams actually weigh is the combination they already have: Helm for templating and releasing, kubectl for inspection, and a separate file-sync or port-forward process for the inner loop. That stack is assembled from parts, each of which does one thing, and each of which the team already understands.

The difference in approach is where the workflow definition lives and who can act on it. With Helm plus kubectl, the deployable artifact is a chart, and the developer's inner loop is a set of commands they run themselves or scripts they maintain locally. Nothing forces those local scripts into the repository, so a new developer inherits the chart but not the workflow. DevSpace's bet is the opposite: put the whole thing, build and deploy and sync and port-forward, into devspace.yaml, commit it, and let devspace deploy be the entry point. The README's framing of codifying workflow knowledge and versioning it with the code is precisely this bet.

The cost of that bet is a new config format and a new CLI in the path between the developer and the cluster. Helm charts remain usable underneath, since the topics list includes helm, but the workflow layer is DevSpace's own. A team that has already invested in making Helm charts self-service, with documented make targets or scripts in the repository, gets less from the switch than a team whose workflow knowledge currently lives in a few people's heads.

Licence, Releases and What Maintenance Looks Like

DevSpace is Apache-2.0 and the repository is not archived. The README states that the project was created by Loft Labs and is a CNCF sandbox project, and that participation is governed by the CNCF code of conduct. The README also carries an OpenSSF Best Practices badge for the project.

On release cadence, the material shows v6.4.0-rc.1 and v6.4.0-rc.0 in late April 2026, with v6.3.19 as the most recent stable-looking tag a few days earlier, and a last push to main in early September 2026. That pattern, a stable line plus release candidates ahead of it, suggests active development rather than a frozen project, though a two-part version number like 6.3.19 with frequent patch releases is also the shape you see when a tool is fixing regressions steadily.

Apache-2.0 is permissive: it allows commercial use and modification, and it includes an explicit patent grant. It does not, on its own, give you any support commitment from Loft Labs or from the CNCF, and a sandbox project is not the same as a graduated one. This is a description of the licence text, not legal advice; if your organization has rules about which licences it accepts, that review is yours to run. The practical upgrade cost is the usual one for a client-side CLI: developers upgrade their own binary, and the thing to watch is whether a devspace.yaml written against one minor version still behaves the same on the next, especially around the sync rules.

Who Should Take the Dependency

The strongest case for DevSpace is a team that already runs Kubernetes for development, has at least one person willing to own devspace.yaml, and has developers who currently lose time on build, deploy and pod-inspection mechanics. For that team, the client-only design means no cluster-side installation to negotiate, and the committed config means the workflow survives a new hire.

The weakest case is a team without a shared cluster, or one whose development already happens comfortably with docker compose and local processes. Adding Kubernetes to the inner loop to gain file synchronization is a poor trade when the inner loop was never the bottleneck. A team that has already made Helm charts self-service through repository scripts should compare the two workflows honestly rather than assuming the CLI adds much.

What to verify before you commit is narrow and concrete. Read the config variable reference in the documentation, since the README gives the concept and the sub-domain example but not the syntax. Test the file synchronization against your actual framework's reload behaviour, because that is where the tool meets your code and where a mismatch shows up as a container that never picks up an edit. And confirm the image build path works on your cluster, since with no server-side component the build has to succeed from the client side against whatever registry and cluster you use.

Editorial conclusion

Adopt DevSpace if your team already runs a Kubernetes cluster for development and wants the build, deploy and hot reload steps written down in a devspace.yaml that is versioned with the code, so that a developer who is not a Kubernetes specialist can run devspace deploy and get a working instance. Do not adopt it if you have no shared cluster or if your team cannot agree on who owns the config file, because the README's own model assumes one Kubernetes expert maintains devspace.yaml while everyone else consumes it. Before committing, verify three things on your own cluster: that the file synchronization behaves correctly against your language's build or watch tooling, that your cluster's image build path works without a server-side component, and that the config variables you introduce for per-developer differences (the README's example is differing sub-domains for testing) do not multiply into a config nobody can read.

Official sources

  1. devspace-sh/devspace on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Community notes

Community notes