Kailash Enterprise
free to use · proprietary · source withheld · not open source
High-performance Rust-powered workflow engine — a drop-in replacement for the kailash Python SDK.
kailashis the complete, open, Foundation-owned reference engine — build the whole protocol on it, free, forever.kailash-enterpriseis Integrum's own optimized build of the same capability, also free to use; the one reserved right is reselling the engine itself as a rival engine.
Licence
kailash-enterprise is free to use under a proprietary, binary-only licence —
you may install, run, build upon, and redistribute it bundled inside your own
applications, for any purpose. It is proprietary and source-withheld (a
compiled wheel; the Rust source is not distributed) and is not open source.
The full terms are in LICENSE-EULA; the single reserved right
is reselling the engine itself, standalone, as a rival governance engine.
Changelog
This repository's source is private, so there is no public URL to link here.
Instead, CHANGELOG.md ships
inside every wheel (its own file, next to LICENSE-EULA): after
pip install kailash-enterprise, run
python -c "import importlib.metadata as m, pathlib; print(pathlib.Path(m.distribution('kailash-enterprise').locate_file('CHANGELOG.md')))"
or unzip the wheel directly. It is a headline-only summary (version, date,
one line per change) generated from this SDK's internal engineering
changelog — if you are upgrading to resolve a specific report, search it for
the issue number or symptom before assuming a fix is not yet released.
Capability parity
The "same capability as kailash" statement above is a maintained fact, not a
slogan: the Foundation's kailash implements the full governance/trust
capability in the open (pure Python, native-independent), and parity between the
two implementations is held by the cross-implementation conformance vectors under
tests/parity/ and the PACT conformance vectors under
crates/kailash-pact/tests/conformance/. A divergence in either is treated as a
narrative-integrity incident, not merely a test failure.
Installation
pip install kailash-enterprise
Replaces pip install kailash. Existing code works without changes.
Usage
# Existing kailash code — no changes needed
from kailash.runtime import LocalRuntime
from kailash.workflow.builder import WorkflowBuilder
builder = WorkflowBuilder()
builder.add_node("NoOpNode", "step1")
workflow = builder.build()
runtime = LocalRuntime()
results, run_id = runtime.execute(workflow)
Why Enterprise?
- 22–261x faster execution via compiled Rust engine
- 100–300x less memory than the pure Python SDK
- Same API — zero migration effort
- Binary-only — source code stays protected
Compatibility
Full backward compatibility with kailash v0.12. The legacy API emits deprecation warnings to guide migration to the new v2 API.
New v2 API:
import kailash
reg = kailash.NodeRegistry()
builder = kailash.WorkflowBuilder()
builder.add_node("NoOpNode", "step1")
workflow = builder.build(reg)
runtime = kailash.Runtime(reg)
result = runtime.execute(workflow)
# result["results"], result["run_id"], result["metadata"]
Domain event bus (kailash.events)
A pluggable publish/subscribe event bus for cross-service domain events,
with structured envelopes (correlation/causation tracking, schema
version, JSON payload). Distinct from kailash.EventBus (which is the
Nexus lifecycle broadcast bus and is unchanged).
from kailash.events import EventBus, DomainEvent
bus = EventBus()
received = []
bus.subscribe("orders", lambda e: received.append(e))
event = DomainEvent(
"order.created", "orders", "checkout-service", {"order_id": 42}
).with_correlation("44444444-4444-4444-8444-444444444444")
bus.publish(event)
time.sleep(0.05)
Each subscriber receives a dict with the event's fields (id,
event_type, topic, actor, schema_version, correlation_id,
causation_id, timestamp, payload, metadata).
Choosing an event-bus backend
kailash.events ships two backends. They are not unified — the
choice is a deployment-topology decision, not a convenience toggle:
| Backend | Delivery scope | Durability | When to use |
|---|---|---|---|
InMemoryEventBus |
Same Python process ONLY | None | Dev / test / single-process. EventBus is an alias for this. |
NatsEventBus |
Cross-process, cross-host | At-least-once | Multi-process / multi-service production (requires a NATS JetStream broker). |
Cross-process divergence is deliberate and silent if mis-chosen: a
subscriber registered in one process on InMemoryEventBus will NEVER see
events published from a different process — that is a no-delivery, not a
degraded delivery. Pick NatsEventBus whenever publisher and subscriber
are not the same OS process:
import os
from kailash.events import NatsEventBus, DomainEvent
# URL threaded in explicitly — the binding never reads the environment
# itself. TLS is required by default; allow_plaintext=True is only for a
# localhost test broker.
bus = NatsEventBus(os.environ["KAILASH_NATS_URL"])
bus.subscribe("kailash.events.acme.orders.created", lambda e: ...)
bus.publish(
DomainEvent("order.created", "kailash.events.acme.orders.created",
"checkout-service", {"order_id": 42})
)
bus.shutdown()
NatsEventBus delivers at-least-once via JetStream durable consumers;
subjects MUST live under kailash.events.<tenant>.<domain>.<event> (the
broker's stream captures that subtree for tenant-isolated routing).
Metadata
Release files for kailash-enterprise 4.47.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| kailash_enterprise-4.47.0-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details |
| kailash_enterprise-4.47.0-cp310-abi3-manylinux_2_28_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.28+ x86-64 | Details |
| kailash_enterprise-4.47.0-cp310-abi3-manylinux_2_28_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.28+ ARM64 | Details |
| kailash_enterprise-4.47.0-cp310-abi3-macosx_11_0_arm64.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64 | Details |
Total release size: 89.3 MB
Release files / kailash_enterprise-4.47.0-cp310-abi3-win_amd64.whl
| Download URL | kailash_enterprise-4.47.0-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 22.3 MB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
c7ebd75a74e57aaaf3ce070e8fca16fc4af99d43ec55cbe6c0b0cdec8b1751d2
|
|
BLAKE2b-256 checksum How to use checksums |
a6be1b4fcd02e83014e6ef1eae861c73e03603902f561104349d4ba321e7fa4d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.21
|
Release files / kailash_enterprise-4.47.0-cp310-abi3-manylinux_2_28_x86_64.whl
| Download URL | kailash_enterprise-4.47.0-cp310-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 23.9 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
6e396eda9e250a8bac247e75892466e78e768163349dd1eb41a950af7e6bfdcf
|
|
BLAKE2b-256 checksum How to use checksums |
ff58341d2778e7ab39197816d7df5a8541b7154599bac51196eec0418793afe7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / kailash_enterprise-4.47.0-cp310-abi3-manylinux_2_28_aarch64.whl
| Download URL | kailash_enterprise-4.47.0-cp310-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 22.3 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
6524c5ad682ded38648023ab8599df56c478cbc7c161322fda8f3085de03b3e8
|
|
BLAKE2b-256 checksum How to use checksums |
15b96ac0631453bef545641e677aa6683af4db62cf4d3ade38ca4bbd81cbd33c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / kailash_enterprise-4.47.0-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | kailash_enterprise-4.47.0-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 20.8 MB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a07369c3b6c2f73051905f7fb3199e53142b87b85f4950cde0da7c3e1de51b2d
|
|
BLAKE2b-256 checksum How to use checksums |
3b2e9639d6bd441cdd6715a94eae992f7133b56084928de75bfa6b092029974f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|