Plugins
Tumult supports two plugin models: script plugins (any language, no Rust required) and native Rust plugins (compiled into the binary).
Plugin Discovery Order
Tumult searches for plugins in this order — first found wins:
./plugins/— project-local plugins~/.tumult/plugins/— user-level plugins$TUMULT_PLUGIN_PATH— custom path override- Compiled-in native plugins (always available)
Script Plugins vs Native Plugins
| Script Plugins | Native Rust Plugins | |
|---|---|---|
| Language | Any (bash, Python, Go, …) | Rust |
| Distribution | Directory + plugin.toon manifest | Compiled into the binary |
| Dispatch | Script execution with env vars | NativeExecutor trait, registered in a NativeExecutorRegistry |
| Arguments | TUMULT_<KEY> env vars | Direct Rust function call |
| Result | stdout + exit code | Result<Value, Error> |
| Examples | stress, containers, process, db, kafka, network, pumba, loadtest | ssh, net, kubernetes |
Each native crate implements the NativeExecutor trait from tumult-plugin; the CLI is a pure composition root that registers the executors. Calling an unknown plugin or function fails with an error listing the available names.
Bundled Plugins
| Plugin | Type | Capabilities |
|---|---|---|
| tumult-ssh | Native | Remote execution over SSH (Ed25519, RSA, ECDSA, agent auth, host-key verification with verify default) |
| tumult-kubernetes | Native | Pod delete, deployment scale, node cordon/drain, status probes |
| tumult-net | Native | Privilege-free userspace TCP chaos proxy — latency, bandwidth throttle, fragmentation, byte corruption, connection termination |
| tumult-pumba | Script | Container-scoped network chaos via Pumba — netem, iptables, kill/pause/stop, stress |
| tumult-network | Script | tc netem latency, packet loss, corruption, DNS block, host partition |
| tumult-db | Script | PostgreSQL, MySQL, Redis chaos: kill connections, lock tables, latency |
| tumult-kafka | Script | Broker kill, partition, latency; consumer lag and ISR probes |
| tumult-stress | Script | CPU, memory, IO stress via stress-ng |
| tumult-containers | Script | Docker/Podman kill, stop, pause, resource limits |
| tumult-process | Script | Kill, suspend, resume processes by PID/name/pattern |
| tumult-loadtest | Script | k6 and JMeter load drivers with OTel correlation |
Writing Your Own Plugin
See the Plugin Authoring Guide and Plugin Manifest Specification.