mayfly
Ephemeral environments.
Delightfully fast.
One YAML spec spins up a test environment in an isolated Kubernetes namespace: an emulated AWS harness — S3, RDS, ElastiCache, Kafka, DynamoDB — plus your apps, wired up through real AWS APIs.
Spin up. Test. Tear down. A TTL reaper destroys anything left behind.
lives fast. gone by sunset.
One spec, full stack
Declare S3 buckets, RDS databases, ElastiCache, Kafka topics, and app deployments in one YAML file. An in-cluster AWS emulator plays the cloud — your apps can't tell. Everything spins up together. Everything tears down together.
Truly isolated
Each environment is one Kubernetes namespace, deterministically named from a seed. Teardown is namespace deletion — no leftovers, ever.
Self-cleaning
TTLs on everything. mayfly reap and the reaper delete expired environments automatically. Live fast, clean fast. Leave no trace.
/ how it works
> Local emulation, cloud-compatible
AWS-compatible emulator running in-cluster behind http://aws:4566. Swap it out if you like. Your apps don't care.
> No Docker socket. No privileged pods.
We don't mount your Docker socket.
We don't need privileged pods.
We don't touch real AWS.
Sleep well.
> Secrets as the contract
Every service's endpoints and credentials are delivered as Kubernetes Secrets. Your apps consume Secrets. That's it.
> Deterministic naming
Names derived from the seed.
Predictable, shareable, scriptable.
Perfect for PRs and previews.
/ cli reference
mayfly up env.yaml
--seed/--set for per-PR variants)
mayfly status env.yaml
mayfly list
mayfly render env.yaml
mayfly extend env.yaml --ttl 4h
mayfly restart env.yaml
mayfly down env.yaml
mayfly reap
/ install
Requires: kubectl + any Kubernetes cluster (k3d is plenty).
Or: pip install mayfly-cli