Thiago (Zozô) Ozores

Thiago (Zozô) Ozores

Platform Engineer | SRE | Teacher | Scoutmaster

🧠 My brain has reached its free quota. Any excess content will be dumped here without prior notice. ⚠️

Goodbye Localstack, long live Ministack

Published on in Posts
Updated on
Short link: https://s.zozor.es/s/a
Share this post
A ⇄ 文

Goodbye Localstack long live Ministack

As many of you know, LocalStack is no longer free. Most core services have been moved into a paid plan, and they have archived the GitHub repository. In other words, yet another project that ignores the community which was truly responsible for the product’s growth, for purely commercial reasons. They have the right to do so, unfortunately.

But fortunately, the Open Source community is quick, and there is already an alternative, and a great one at that: Ministack.

Today, it allows you to emulate 33 AWS services on a single port (4566). Unlike other emulators that merely “simulate” responses, MiniStack spins up real containers for critical services:

  • RDS: Starts real Postgres or MySQL containers.

  • ElastiCache: Starts real Redis instances.

  • ECS: Runs real Docker containers via the RunTask command.

  • Athena: Executes real SQL queries via DuckDB.

It supports most of the commonly used AWS services, including S3, SQS, SNS, DynamoDB, Lambda, IAM, Secrets Manager, CloudWatch, EventBridge, Kinesis, SES, Step Functions, API Gateway, Route53, Cognito, EC2, EMR, EBS, EFS, ALB (Load Balancers), and WAF v2.

It also features full compatibility with tools like AWS CLI, Terraform, CDK, Pulumi, and SDKs (such as boto3 for Python).

In addition to being free and licensed under the MIT license—with no “Pro” versions or features locked behind subscriptions—it doesn’t require creating accounts, license keys, or telemetry (meaning it respects your privacy). Furthermore, it is lightweight and fast:

  • Docker Image: ~150MB (vs. ~1GB for LocalStack).

  • RAM Consumption: ~30MB on standby (vs. ~500MB for LocalStack).

  • Startup: Less than 2 seconds.

If you already use LocalStack, you can switch to MiniStack just by changing the endpoint URL, without altering your code or tools.

Installation is very simple; you can choose to run it in a Docker container:

docker run -p 4566:4566 nahuelnucera/ministack

Or install it via pip, the Python package manager:

pip install ministack
ministack

To use MiniStack with your tools, simply point to the local endpoint (http://localhost:4566), just like in Localstack. However, it has the advantage of using a single port; in Localstack, you had to use different ports for certain services.

AWS CLI

aws --endpoint-url=http://localhost:4566 s3 mb s3://my-bucket

OpenTofu/Terraform

provider "aws" {
  region                      = "us-east-1"
  access_key                  = "test"
  secret_key                  = "test"
  skip_credentials_validation = true
  endpoints {
    s3 = "http://localhost:4566"
    dynamodb = "http://localhost:4566"
  }
}

SDK (Boto3/Python)

import boto3
s3 = boto3.client('s3', endpoint_url="http://localhost:4566")
s3.create_bucket(Bucket='local-test')

So that’s it, folks. Goodbye Localstack and long live Ministack. May the OpenSource movement continue to bless us with projects like this, coming from the community for the community.

Tags: , , , , , , , , ,

Categories: , ,

Thiago Ozores
Interactions & Comments