How to add WebAssembly components to IDPBuilder
IDPBuilder is an open source tool that enables you to run a complete internal developer platform (IDP) on your local machine, using standard cloud-native technologies like Kubernetes and Argo CD—and requiring only Docker or a compatible container system as a dependency.
Cosmonic Control is easy to deploy with IDPBuilder, which can be helpful for platform teams working with WebAssembly (Wasm). A deployment of Cosmonic Control with IDPBuilder generally uses the following open source tools:
- Gitea - Self-hosted Git server that runs inside the Kubernetes cluster
- Argo CD - Continuous delivery system that enables GitOps workflows
- Envoy - Service proxy that provides cluster ingress
Users can push code to the local Git server to trigger Argo workflows and roll out WebAssembly workloads on Cosmonic Control.
Why use IDPBuilder and Wasm?
For teams leveraging the isolation, efficiency, and composability of Wasm, IDPBuilder provides...
- Wasm helps platform teams Shift Down: Application team tenants can use a lightweight abstraction that is more secure, portable, and easier to to maintain.
- Accelerated application development: Cosmonic Control features accelerative development experiences like SandboxMCP.ai, enabling developers to generate MCP tools straight from OpenAPI specs and compile to Wasm artifacts.
- Simplified IDP development: Platform teams can quickly spin up a platform development environment that utilizes WebAssembly components, requiring only the open source Wasm Shell CLI to build and publish Wasm artifacts.
- Integration testing for platforms: Use an IDPBuilder environment for integration testing on applications and services that utilize Wasm.
- Reference implementations: Create a single binary which can demonstrate an IDP reference implementation.
Walkthrough
The instructions below demonstrate how to launch an IDP environment that is pre-integrated with Cosmonic Control. After successful deployment, the following endpoints will be available:
- Cosmonic Control Console (http://localhost:8081/) to manage and monitor your WebAssembly workloads.
- Argo CD Console (https://argocd.localhost.cosmonic.sh:8443/) for GitOps workflow management.
- Welcome Tour App (http://welcome-tour.localhost.cosmonic.sh/) as an example WebAssembly application.
Requirements
- Docker Engine or compatible container system
kubectl
Install IDPBuilder
You can install the idpbuilder CLI tool via Homebrew or from the project's GitHub releases page.
Using Homebrew:
brew install cnoe-io/tap/idpbuilderSee the IDPbuilder documentation for more information.
Deploy the IDP stack
Use the idpbuilder CLI tool to create a new IDP environment based on the Cosmonic Labs example repository:
idpbuilder create --host localhost.cosmonic.sh --extra-ports "80:80" -p https://github.com/cosmonic-labs/idp-stack//cosmonic-controlOnce the IDP is successfully created, you can find the admin password for the cluster's Argo CD UI by running:
idpbuilder get secrets -p argocdLog in with the username admin and the returned password to access the Argo CD UI.

Port-forward the Console UI
Start a port-forward the Console UI:
kubectl -n cosmonic-system port-forward svc/console 8081:8081Now you can open the Console UI at http://localhost:8081/.
Log in with the following demo credentials (configurable at installation):
- User:
test_admin - Password:
wasm123
Deploy a Wasm component
You can use Helm to deploy another Wasm component from the Cosmonic Template Catalog, such as the Hono Swagger UI Example, directly to the cluster:
helm install hono-swagger-ui --version 0.1.2 oci://ghcr.io/cosmonic-labs/charts/http-trigger -f https://raw.githubusercontent.com/cosmonic-labs/control-demos/refs/heads/main/hono-swagger-ui/values.http-trigger.yamlHelm should return a result like:
Pulled: ghcr.io/cosmonic-labs/charts/http-trigger:0.1.2
Digest: sha256:df04451ac7093fc134a6a6c594c8961c0fa2a12a5c81a9605fc5a8f8e8f61e29
NAME: hono-swagger-ui
LAST DEPLOYED: Mon Nov 3 07:21:45 2025
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The hono-swagger-ui trigger has been deployed successfully.
The HTTP Server is serving on http://hono-swagger-ui.localhost.cosmonic.sh/uiThe HTTP-trigger Chart leverages the HTTP Trigger CRD and is customized with the values for the hono-swagger-ui example:
# For the 'http-trigger' helm chart
components:
- name: hono-swagger-ui
image: ghcr.io/cosmonic-labs/control-demos/hono-swagger-ui:0.1.2
ingress:
host: "hono-swagger-ui.localhost.cosmonic.sh"
hostInterfaces:
- namespace: wasi
package: config
version: 0.2.0-draft
interfaces:
- runtime
- namespace: wasi
package: logging
version: 0.1.0-draft
interfaces:
- logging
pathNote: "/ui"Try other examples, such as the "Blobby" blobstore fileserver example):
helm install blobby --version 0.1.2 oci://ghcr.io/cosmonic-labs/charts/http-trigger -f https://raw.githubusercontent.com/cosmonic-labs/control-demos/refs/heads/main/blobby/values.http-trigger.yamlSee the Blobby documentation for instructions on usage.
In review
In alignment with upstream standards for both WebAssembly and Kubernetes, we have deployed Cosmonic Control integrated with IDPBuilder.
We deployed Custom Resource Definitions (CRDs) for wasmCloud and Cosmonic Control:
kubectl get crd -A | grep -E "wasmcloud|cosmonic"artifacts.runtime.wasmcloud.dev 2025-11-02T16:11:48Z
hosts.runtime.wasmcloud.dev 2025-11-02T16:11:48Z
httptriggers.control.cosmonic.io 2025-11-02T16:11:48Z
projectenvironments.control.cosmonic.io 2025-11-02T16:11:48Z
workloaddeployments.runtime.wasmcloud.dev 2025-11-02T16:11:48Z
workloadreplicasets.runtime.wasmcloud.dev 2025-11-02T16:11:48Z
workloads.runtime.wasmcloud.dev 2025-11-02T16:11:48ZThe Cosmonic operator was deployed to watch those CRDs:
kubectl get deploy -A | grep -i operatorcosmonic-system operator 1/1 1 1 20hWe setup three HTTPTriggers, each running in their own sandbox, in two different namespaces, on a single multi-tenant wasmCloud host:
kubectl get workloads -ANAMESPACE NAME HOSTID READY
cosmonic-system welcome-tour-94dbb874f-7dcb86c9c6-56c59c99f8 f752cb64-3861-4e4d-9a70-21ec4a7ef001 True
default blobby-8488c98f44-6855b68dfc-6466cf6c6c f752cb64-3861-4e4d-9a70-21ec4a7ef001 True
default hono-swagger-ui-85d4547558-84d47ddc96-c9b8768b9 f752cb64-3861-4e4d-9a70-21ec4a7ef001 TrueClean up
Delete the IDP:
idpbuilder deleteMake sure the kind cluster has been deleted:
kind delete cluster