// the find
ministackorg/ministack
Ministack: Free, open-source local AWS emulator - 55+ services, Terraform compatible, real databases. Free forever. MIT licensed.
MiniStack is a drop-in LocalStack alternative that emulates 55+ AWS services locally, positioned explicitly as the free replacement now that LocalStack moved core services behind a paywall. It runs as a single Python process or Docker container on port 4566, compatible with boto3, AWS CLI, Terraform, and CDK without any config changes.
The multi-tenancy trick — using a 12-digit numeric access key as the account ID — is genuinely clever and requires zero configuration to isolate CI pipelines or team members sharing one endpoint. The /_ministack/reset endpoint is the right call for test suites: wiping state between tests without restarting the container is much faster and makes setUp/tearDown actually usable. The image is lean at ~270MB vs LocalStack's ~1GB, which matters in CI where you're pulling it on every run. RDS and ElastiCache spinning up real Postgres/MySQL/Redis containers rather than faking the protocol means your SQL queries and connection pooling actually work, which is where most emulators quietly lie to you.
The repo is very new (based on the positioning against LocalStack's recent paywalling) and the test coverage, while broad in file count, covers happy paths — the real question is how faithfully edge cases like S3 conditional writes, DynamoDB transaction conflicts, and SQS visibility timeout races are implemented, and there's no documentation on known gaps. Lambda's 'warm worker pool' for Python and Node sounds good but the implementation details for things like /tmp filesystem isolation, environment variable scoping between invocations, and cold-start simulation aren't documented, so you may find behavioral divergence from real Lambda at inconvenient times. The CloudFormation support covers the common resources but stops well short of the full AWS resource catalog, meaning any non-trivial IaC stack will hit unsupported resource types with no clear fallback. There's also no persistence story beyond the opt-in S3_PERSIST flag — everything else is in-memory, so any process restart in CI wipes your state, which is fine until it isn't.