Enhance your platform

Open-Source Extension Runtime

Host & scale extensions effortlessly

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.

Built for production workloads

Everything you need to run untrusted or first-party extension code safely, reliably, and at scale.

Command-Based API

Extensions expose functionality through commands — typed, schema-validated functions that are easy to invoke and compose.

Process Isolation

Each extension runs in a dedicated, tenant-scoped process. Failures are contained and never cascade across extensions.

RabbitMQ-Driven Workloads

Extensions receive work through RabbitMQ queues, enabling reliable message delivery, load balancing, and horizontal scaling.

Centralized Logging

All extension logs are automatically collected and streamed through Kafka for real-time monitoring and debugging.

SDK & CLI

HTTP gateway client SDKs and CLI tools for seamless integration. Manage extensions, secrets, and resources programmatically.

Multi-Provider & Language

Load extensions from npm, GitHub, Maven or Docker. First-class JavaScript support today, with Python and Java on the roadmap.

Kubernetes Autoscaling

Natively supports HPA

Registry

Search and manage your extensions in the built-in registry. Push updates, track versions, and control access with ease.

Get started in minutes

Install using helm, write your extension, and ship.

1. Deploy with Helm

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 update

Basic installation:

helm install exhyve exhyve/exhyve-cluster

Configure extensions and enable services:

helm install exhyve exhyve/exhyve-cluster \
  --set rabbitmq.enabled=true \
  --set registry.enabled=true
View Helm charts →

2. Write an extension

Install the JavaScript SDK and define metadata and commands with full type-safety.

$ npm install @dre44/extension
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;
View on npm →