AWS 101 Blog Services Testing 101 Compare Features

The free LocalStack
replacement

LocalStack is no longer free. MiniStack is. Free forever.
30+ AWS services on a single port — with real Postgres, Redis, and Docker containers. No account, no license key, no telemetry.

MiniStack - The free LocalStack replacement | Product Hunt
$docker run -p 4566:4566 nahuelnucera/ministack
30+
AWS Services
~2s
Startup
~30MB
RAM at idle
~250MB
Docker Image
900+
Tests passing
⚠️
LocalStack moved core services behind a paid plan. If you relied on LocalStack Community for local dev and CI/CD, MiniStack is your free, MIT-licensed drop-in replacement. No sign-up, no API key, no telemetry.
ministack — bash
# Start MiniStack $ docker run -p 4566:4566 nahuelnucera/ministack # Works with any AWS tool — no config changes $ aws --endpoint-url=http://localhost:4566 s3 mb s3://my-bucket make_bucket: my-bucket # Real database — RDS spins up actual Postgres $ aws --endpoint-url=http://localhost:4566 rds create-db-instance \ --db-instance-identifier mydb --engine postgres \ --master-username admin --master-user-password secret ✓ Real Postgres container running on localhost:15432 # Real Redis via ElastiCache $ aws --endpoint-url=http://localhost:4566 elasticache \ create-cache-cluster --cache-cluster-id my-redis --engine redis ✓ Real Redis container running on localhost:16379

30+ Services

Everything you need, locally

Core AWS services plus real infrastructure — RDS runs actual databases, ElastiCache runs real Redis, ECS starts real Docker containers, Athena executes real SQL via DuckDB (when installed).


Testing 101

Start Testing in Seconds

Integrating Ministack is as simple as overriding the AWS endpoint URL. Select your tool below to see exactly how to write your local test code.

# 1. Ensure MiniStack is running on port 4566 import boto3 # 2. Point boto3 to local endpoint s3 = boto3.client('s3', endpoint_url='http://localhost:4566', region_name='us-east-1', aws_access_key_id='test', aws_secret_access_key='test' ) # 3. Code logic interacts with Ministack instantly! s3.create_bucket(Bucket='my-local-bucket') print("✓ Successfully created bucket")
# Configure endpoints in your AWS provider provider "aws" { access_key = "test" secret_key = "test" region = "us-east-1" skip_credentials_validation = true skip_metadata_api_check = true skip_requesting_account_id = true endpoints { s3 = "http://localhost:4566" dynamodb = "http://localhost:4566" lambda = "http://localhost:4566" # Add other services needed... } }
import { S3Client, CreateBucketCommand } from "@aws-sdk/client-s3"; // Override the endpoint const s3 = new S3Client({ endpoint: "http://localhost:4566", region: "us-east-1", credentials: { accessKeyId: "test", secretAccessKey: "test" } }); await s3.send(new CreateBucketCommand({ Bucket: "my-test-bucket" }));
# Just append --endpoint-url parameter aws s3 mb s3://my-local-bucket \ --endpoint-url http://localhost:4566 \ --region us-east-1 aws dynamodb create-table \ --table-name Users \ --attribute-definitions AttributeName=Id,AttributeType=S \ --key-schema AttributeName=Id,KeyType=HASH \ --billing-mode PAY_PER_REQUEST \ --endpoint-url http://localhost:4566

Comparison

LocalStack vs MiniStack

Same developer experience. Fraction of the cost and footprint.

Feature LocalStack Free LocalStack Pro MiniStack ⚡
Core services (S3, SQS, DDB…) Now paid ✅ Free
Lambda, IAM, SSM, EventBridge Paid ✅ Free
RDS (real DB containers) ✅ Real Postgres/MySQL
ElastiCache (real Redis) ✅ Real Redis
ECS (real Docker) ✅ Real Docker
Athena (real SQL) ✅ DuckDB (optional)
Glue Catalog + Jobs
API Gateway v2 (HTTP APIs) ✅ + data plane
API Gateway v1 (REST APIs) ✅ + data plane
Firehose ✅ S3 delivery
Route53
Cognito (user pools + identity) Paid ✅ Free
EC2 (instances, VPC, subnets, SGs) Paid ✅ Free
EMR (clusters, steps, instance groups) Paid ✅ Free
EBS (volumes, snapshots, attach/detach) Paid ✅ Free
EFS (file systems, mount targets, access points) Paid ✅ Free
ALB / ELBv2 (LBs, listeners, rules + Lambda data plane) Paid ✅ Free
SNS→SQS fanout + SQS→Lambda ESM
CloudFormation Paid ✅ Free
Startup time ~15-30s ~15-30s ~2s
Memory at idle ~500MB ~500MB ~30MB
Docker image ~1 GB ~1 GB ~250 MB
License BSL (restricted) Proprietary MIT
Price Now paid $35+/mo $0 forever

Built different

Real infrastructure, not mocks

Where it matters most — RDS, ElastiCache, and ECS run real Docker containers. No fake endpoints, no stubbed responses.


Stop paying for local development

One command. 30+ services. Real infrastructure. Free.

$docker run -p 4566:4566 nahuelnucera/ministack