Plugins
Tumult supports two plugin models: script plugins (any language, no Rust required) and native Rust plugins (compiled in via feature flags).
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 (e.g.
--features kubernetes)
Script Plugins vs Native Plugins
| Script Plugins | Native Rust Plugins | |
|---|---|---|
| Language | Any (bash, Python, Go, …) | Rust |
| Distribution | Directory + plugin.toon manifest | Compiled via Cargo feature flag |
| Arguments | TUMULT_<KEY> env vars | Direct Rust function call |
| Result | stdout + exit code | Result<Value, Error> |
| Examples | stress, containers, process, db, kafka, network, loadtest | ssh, kubernetes |
Bundled Plugins
| Plugin | Type | Capabilities |
|---|---|---|
| tumult-ssh | Native | Remote execution over SSH (Ed25519, RSA, ECDSA, agent auth) |
| tumult-kubernetes | Native | Pod delete, deployment scale, node cordon/drain, status probes |
| 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.