Enhance your platform
Open-Source Extension Runtime
A container-native runtime for running user extensions at scale. Deploy with Docker, autoscale with Kubernetes, write extensions in JavaScript. Support for additional languages coming soon.
Everything you need to run untrusted or first-party extension code safely, reliably, and at scale.
Extensions expose functionality through commands — typed, schema-validated functions that are easy to invoke and compose.
Each extension runs in a dedicated, tenant-scoped process. Failures are contained and never cascade across extensions.
Extensions receive work through RabbitMQ queues, enabling reliable message delivery, load balancing, and horizontal scaling.
All extension logs are automatically collected and streamed through Kafka for real-time monitoring and debugging.
HTTP gateway client SDKs and CLI tools for seamless integration. Manage extensions, secrets, and resources programmatically.
Load extensions from npm, GitHub, Maven or Docker. First-class JavaScript support today, with Python and Java on the roadmap.
Natively supports HPA
Search and manage your extensions in the built-in registry. Push updates, track versions, and control access with ease.
Install using helm, write your extension, and ship.
Deploy the full exhyve cluster to Kubernetes using our Helm chart. Includes all services: extension host, registry, RabbitMQ, Kafka, and MongoDB.
Add the Helm repository:
helm repo add exhyve oci://ghcr.io/exhyve/charts
helm repo updateBasic installation:
helm install exhyve exhyve/exhyve-clusterConfigure extensions and enable services:
helm install exhyve exhyve/exhyve-cluster \
--set rabbitmq.enabled=true \
--set registry.enabled=trueInstall the JavaScript SDK and define metadata and commands with full type-safety.
import { Extension } from "@dre44/extension";
import { z } from "zod";
export class MathExtension extends Extension {
override init() {
this.defineMetadata("ui", {
title: "Math",
description: "Math operations",
});
this.defineCommand(
"multiply",
({ a, b }) => {
return a * b;
},
{
description: "Multiply two numbers",
paramsSchema: z.object({
a: z.number(),
b: z.number(),
}),
resultSchema: z.number(),
},
);
}
}
export default MathExtension;