Bring Cloud-native power to Team Development.
A lightweight WebIDE and DevEnvironment containers manager on Kubernetes. COSMO is not WebIDE but WebIDE management platform.
cosmo-demo1.mp4
-
DevEnvironment as Code :
- Define Workspace Container and its deployment configurations as Template.
- Easily create Workspace by the template for each developers.
-
Any container image for Workspace container :
-
No limit for workspace container. You can use any existing great WebIDE container such as
cdr/code-server
oreclipse/theia
or yours based on them. -
Bring your own WebIDE image that contains your favorite development tools or utilities and your team specific development configurations.
-
-
Developers Friendly :
COSMO Dashboard GUI
is included by default. It is designed to be developers-friendly who are not familier with Kubernetes.- Developers can create their own workspace by some clicks.
-
Dynamic Resource Assignment :
- Developers can create their own Workspaces as needed. Also, Workspace containers can be suspended (not deleted) for saving the server resources.
-
Dynamic and Auto-Configuration of Workspace Network :
- Developers can open development server ports dynamically such as
webpack-dev-server
by GUI or CLI. COSMO configure Workspace networks automatically.
- Developers can open development server ports dynamically such as
-
Auto authentication for all access to Workspace :
COSMO Auth Proxy
watches all of the workspace’s exposed ports and automatically attaches reverse proxy to the ports for authentication.- Developers do not have to mind about a security of Workspace dev server’s ports and Workspace itself.
-
Kubernetes-native :
- Reap the benefits of cloud natives in the development process through Kubernetes.
- For Kubernetes administrator, you can also manage development environments with Gitops or other general Kubernetes configuration management.
-
No database, easy to maintain :
- COSMO requires NO database. User data or Workspace state is stored natively in Kubernetes.
- You can maintain the state of Workspaces by existing Kubernetes management solutions.
-
Run Anywhere :
- COSMO can be installed on any Kubernetes cluster on public clouds or private servers etc.
- COSMO does not require any public reachability if you already have your Kubernetes cluster and prepared container images to your registry.
-
Easy Install :
- If you already have a Kubernetes Cluster, you can install COSMO in just a few steps.
For app project newcomers, setting up a development environment is the first barrier that requires time and effort.
It is important to be able to run the app quickly to understand what it is or how it works and to begin modifying the codes as soon as possible.
Today, with the advancement of WebIDEs such as cdr/code-server
and eclipse/theia
, it is possible to develop in the browser comparable to an IDE installed on a PC.
Based on the WebIDE containers, you can build your own container image with the programming language, language server, and necessary packages, development tools, and extensions installed.
Once you write Dockerfile, you can desceibe your development requirements and it is reproducible.
In the next steps, however, you need to deploy the containers and configure the container volumes and networkings such as load balancers or Ingress.
These tasks are very environment-dependent, and most teams have their own environment setup procedures. Each time a new developer joins, these bothersome steps need to be done.
There are existing products for this issue and they are great and have a lot of features. But they are little bit too rich and require too much knowledge for developers to build and maintain a product environment.
This is the motivation of COSMO. To compare with the similar products, see the section Comparison with other WebIDE products
COSMO has 3 main resources.
User
: Workspace running environment for each developers. In Kubernetes terms, it is aNamespace
actually.Workspace
: Workspace is containers and networks for WebIDE Containers. You can create several Workspaces and use properly for each your developing apps or projects.Template
: Template of Workspace. Workspace is a instance of WebIDE Containers created by Template.
COSMO has its own Template engine that is simple and optimized for the reproducibility of Workspace.
The core ideas are Template
and Instance
, which are defined as custom resources in Kubernetes.
-
Template
is a collection of standard Kubernetes YAML configurations (Deployment including the WebIDE container, Ingress, Service and PersistentVolumeClaims, etc.). In other words, it's like a Workspace skeleton or boilerplate. -
Instance
is a instance of the Template. By creating an Instance, the resources defined in the Template will be created with dynamic information.Workspace
is a wrapper resource ofInstance
that is specifically for use with WebIDE containers.
COSMO Template engine is picking the best of both overlay-based Kustomize
and variable-based Helm
.
Template
has variables. It is a minimal feature for text-based YAML replacement, so that you do not need to understand the detailed syntax.
Also supports overriding fixed configuration values in Instance
.
For example, it is used for dev server ports that are opened dynamically during development.
See the details in CRD-DESIGN.md
COSMO consists of System-side Components, Workspace-side Components and Utilities.
-
System-side Components :
COSMO Controller Manager
: Kubernetes Controller watching the custom resourceWorkspace
,Instance
andTemplate
.COSMO Dashboard
: GUI console forWorkspace
to create/delete/update etc. For admin, it can be used for User management.
-
Workspace-side Components :
- WebIDE Container: main WebIDE container for development. Bring your own image.
COSMO Auth Proxy
: A reverse proxy with authentication. Watches the WebIDE ports and automatically attaches proxies with authentication to the ports.
-
Utilities:
cosmoctl
: A command line utility for managing COSMO resources. It allows you to do the same task with COSMO Dashboard by CLI.
These are NOT comparable to COSMO; COSMO supports hosting these WebIDE containers.
Projects | Description | Use in COSMO | Official Docker Hub |
---|---|---|---|
cdr/code-server |
Project of VS Code in the browser. | ✅ | codercom/code-server |
eclipse/theia |
A cloud IDE framework implemented in TypeScript. | ✅ | theiaide/theia |
We recommend that you build your own Development Container Image based on these official Docker images. (with your programming language, language server, and necessary packages, development tools, and extensions)
COSMO is not WebIDE but Self-hosted WebIDE management platform. It is targeting a team development for multiple workspaces for each team members.
Name | SaaS | Self-hosted | Subscription (including free plan) | Team management | Description |
---|---|---|---|---|---|
COSMO | - | ✅ | - | ✅ For team | Lightweight WebIDE and DevContainer Manager on Kubernetes |
Eclipse Che |
✅ (RedHat) | ✅ | - | ✅ For team | The Kubernetes-Native IDE for Developer Teams |
Coder |
✅ (Coder) | ✅ | Yes | ✅ For team | The developer workspace platform. Move development to your cloud |
Gitpod |
✅ (Gitpod) | ✅ | Yes | ✅ For team | Spin up fresh, automated dev environments for each task, in the cloud, in seconds. |
AWS Cloud9 |
✅ (AWS) | - | Yes | A cloud IDE for writing, running, and debugging code | |
Google Cloud Shell Editor |
✅ (Google Cloud) | - | Yes | Manage your infrastructure and develop your applications from any browser. | |
GitHub Codespaces |
✅ (GitHub) | - | Yes | Blazing fast cloud developer environments. Visual Studio Code backed by high performance VMs that start in seconds. |
Existing products are great, but they are little bit too rich and require too much knowledge for developers to build and maintain a product itself environment.
Name | Subscription (including free plan) | Database required | Dynamic dev server network | Workspace Authentication | Dynamic Port Authentication | Running System Components | Running Workspace Components |
---|---|---|---|---|---|---|---|
COSMO | - | No database required | ✅ | ✅ | ✅ | Only Controller Manager and Dashboard | Only Your WebIDE and Auth Proxy |
Eclipse Che local install |
- | Yes (Postgres) | - | ✅ | - | Che server, Che user dashboard, Che Devfile registry, Che plug-in registry, Che and PostgreSQL and Che and Keycloak | Che Plugin, Che Editor, Che user runtimes, Che workspace JWT proxy and Che plug-ins broker |
Coder self-hosted |
Yes | Yes (Postgres) | ✅ | ✅ | ✅ | coderd and postgres | coder image |
Gitpod Self-Hosted |
Yes | Yes (MySQL) | ✅ | ✅ | ✅ | agent-smith, registry-facade, ws-daemon, registry, minio, blobserve, content-service, dashboard, image-builder, proxy, server, ws-manager-bridge, ws-manager, ws-proxy, ws-scheduler, mysql, messagebus | workspace image |
By making COSMO itself lightweight and easy to maintain, COSMO aims to allow developers to focus on their developments!