Skip to content

cosmo-workspace/cosmo

Repository files navigation

COSMO - Open source WebIDE & DevEnvironment Platform on Kubernetes

kubernetes GitHub license GoReportCard Artifact Hub

An Open Source WebIDE & Cloud DevEnvironment Platform on Kubernetes, like GitHub CodeSpaces or AWS Cloud9.

COSMO manages the WebIDE as a container. Integrating with the great ecosystem of Kubernetes, you can create a robust, scalable, flexible private cloud development environment.

Feature

  • Flexible: Any WebIDE as you like
  • Minimal: A small set of kubernetes-native components to manage WebIDE containers and integrate with kubernetes ecosystem.
  • Authentication: User authentication for each Workspaces
  • Dynamic dev-server ports: Open dev-server port on WebIDE container and expose them with authentication

136062440-5d6df8e6-8269-4248-873e-471fa127c06e.mp4

Any WebIDE as you like

Existing cloud devenvironment services such as GitHub CodeSpaces and AWS Cloud9 are easy to try. However they force developers to use unfamilier WebIDE bundled with the service.

In addition, "Node.js development template" is never the single template in real projects. Different projects require different packages and libraries or different version and tool combinations.

COSMO does not bundle WebIDE itself but BROI, Bring Your Own WebIDE Container Image.

The easiest way is to use a pre-built WebIDE container image provided by great open soruce projects like:

We recommend to build your own container image base on the above image with the programming languages, extensions, development tools, etc. which required for your project, in order to start developing your project ASAP by just launching Workspace.

Minimal set of managing WebIDE containers

COSMO is a minimal set of components, Kubernetes CRD, Controller and Dashboard.

There is No database and all states are stored on Kubernetes.

Integrating with the great ecosystem of Kubernetes, you can run a robust, scalable, flexible cloud development environment.

Authentication

COSMO bundles a traefik authentication plugin and you can protect Workspace URLs by default.

Dynamic dev-server ports

You can expose dynamic dev-server ports in WebIDE container. Automatically configure routing and secure URL with User authentication.

Architecture overview

architecture

  • Dashboard: User Interface for managing COSMO resources.
  • Controller: Sync Instances of Template continually by applying Kubernetes manifests in the Template.
  • Traefik & AuthPlugin: Traefik is router of Workspaces and Traefik plugin does User authentication to protect Workspaces.

COSMO has 3 main concepts, which is implemented as Kubernetes CRD.

  • Workspace: A single WebIDE instance of Template.
  • Template: A set of Kubernetes manifests required for a WebIDE container to run. For most cases, they are Kubernetes Deployment, Service and PersistentVolumeClaim. Template can include any kind of Kubernetes manifests.
  • User: An identity of a developer. User can run one or more Workspaces to choose properly Template for developing each apps or projects. In Kubernetes terms, it is a Namespace actually. You can protect your workspace network traefik by User authentication.
  • UserAddon: A set of Kubernetes manifests required for each Users. For example, you can include like AWS IAM Role for ServiceAccount, Kubernetes RBAC, PersitentVolume for shared filesystem and so on.

See CRD-DESIGN.md for more details.

Getting Started

See GETTING-STARTED.md

Distinguished by other self-hosted products

Name Subscription (including free plan) Database required Dynamic dev server network Workspace Authentication Dynamic Port Authentication Custom WebIDE Image
COSMO - No database required
Eclipse Che local install - Yes (Postgres) -> No from 7.62.0 - - ✅ devfile
Coder self-hosted Yes Yes (Postgres)
Gitpod Self-Hosted No longer suppoerted Yes (MySQL)

Existing products are so great and rich features but they requires learning about the products. Gitpod choosed that no longer support self-hosted. they says:

Despite all that effort, self-hosted Gitpod has been increasingly difficult for us to support and it has shown to be a burden for our clients to manage and operate their own Gitpod instances.

While COSMO does not have much features, it is designed to be minimumn and remove feature that can be use Kubernetes ecosystem. And that is easy for standard Kubernetes administrators to operate with only knowledge of Kubernetes, as it only requires a set of native Kubernetes manifests (known as YAML) to be defined as a Template.