A free, open-source AWS emulator. One pip install, one command. Same CLI, same SDK, same Terraform. No paid tier, no account, no telemetry. Persistent state included.
pip install localemu[runtime]
Read the docs →
Built for developers who use
Because local development deserves local infrastructure. Real AWS is built for production. Here is what happens when teams use it for development and testing.
Cloud-native dev loops can stretch from seconds-on-localhost to multiple minutes per code-build-test cycle. Daily iteration counts drop accordingly.
Dev/test AWS costs commonly run from hundreds to thousands of dollars per month. Forgotten or orphaned resources regularly produce four- and five-figure surprise bills per team.
Millions of secrets leak to public and private repositories every year. AWS IAM keys are among the most frequently exposed credential types and are commonly exploited within minutes of becoming public.
CloudFormation deploys for non-trivial ECS or Lambda stacks routinely take several minutes. Terraform pipelines grow as resources increase. Local emulation reduces both to seconds.
Multiple developers hitting the same AWS account causes resource conflicts, Terraform state lock collisions, and naming collisions. One developer can overwrite another's changes. The fix (separate accounts per developer) is expensive and complex.
Eventual consistency means IAM changes take seconds to propagate. Tests that create a resource and immediately verify it randomly fail. Rate limiting kicks in when multiple CI jobs share an account. Network hiccups kill builds.
On March 23, 2026, LocalStack archived its Community Edition GitHub repository and consolidated into a commercial product requiring authentication. Many features that were previously free now require a paid plan.
CI pipelines broke overnight. Developers reported their builds failing mid-day with no warning. The community expressed concerns about the transition.
A complete AWS emulator that is free, open-source, and works out of the box. No account, no token, no Java. A pure-Python core, one pip install; Docker powers the services that run a real engine.
pip install localemu[runtime] gives you 132 AWS services. No account, no token, no Java. Start testing in 10 seconds.
State survives restarts. Your S3 buckets, DynamoDB tables, and Lambda functions are stored on your machine. Free. Open source. No external server.
Apache 2.0 licensed. No "Pro" tier. No tokens. No telemetry. One version with everything. It runs on your machine and never phones home.
AWS CLI, boto3, Terraform, CDK, Pulumi. Point to localhost:4566 and everything works. No new API to learn.
No Java, one pip install. Most services are pure Python; Lambda, EC2, RDS, ECS, EKS and OpenSearch run real engines in Docker when you need them.
Developers never need real AWS credentials locally. No keys to rotate, no secrets to manage, no risk of leaking them on GitHub.
FIG 0.1
S3, DynamoDB, Lambda, SQS, ECS, RDS, and many more. All on localhost:4566.
FIG 0.2
The control plane is pure Python: one pip install, no Java. The services that need real behavior run real engines in Docker: Lambda, EC2, RDS, ECS, EKS, OpenSearch.
FIG 0.3
Apache 2.0. No "Pro" paywall. No tokens. No telemetry. One version with everything included.
Most emulators accept every request and return 200. LocalEmu runs the real thing where it counts: your Lambda code executes in the official AWS runtime images, EC2 instances are real containers on a real VPC with security groups enforced by actual packet filtering, RDS is a real PostgreSQL or MySQL you connect to, and Cognito issues real signed JWTs. On top of that, opt-in flags turn on the fidelity details.
IAM_ENFORCEMENT=1 Full AWS IAM evaluation algorithm. Identity policies, resource policies, permission boundaries, SCPs. Catch AccessDenied errors before production.
SIMULATE_THROTTLING=1 Per-service AWS error codes: DynamoDB ProvisionedThroughputExceededException, S3 SlowDown, Lambda TooManyRequestsException. Test your retry logic locally.
SIMULATE_LATENCY=1 Realistic per-service delays with Gaussian jitter. DynamoDB ~8ms, S3 ~50ms, Lambda Invoke ~150ms. Test timeout handling and performance budgets.
LAMBDA_COLD_START_DELAY=3 First invocation gets a configurable delay. Subsequent calls are instant (warm). Goes cold after 5 minutes idle. Provisioned concurrency skips the delay.
LocalEmu ships awsemu, a built-in
wrapper around the AWS CLI that automatically sets credentials, region, and endpoint.
Zero configuration. Or use boto3, Terraform, CDK, anything that speaks AWS.
$ awsemu s3 mb s3://my-bucket
make_bucket: my-bucket
$ awsemu sqs create-queue --queue-name tasks
QueueUrl: http://localhost:4566/.../tasks
$ awsemu lambda invoke --function-name hello \
--payload '{"name":"world"}' out.json
StatusCode: 200 import boto3
s3 = boto3.client("s3",
endpoint_url="http://localhost:4566",
aws_access_key_id="AKIAIOSFODNN7EXAMPLE",
aws_secret_access_key="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
)
s3.create_bucket(Bucket="my-bucket")
s3.put_object(Bucket="my-bucket",
Key="data.json", Body=b'{"ok":true}') provider "aws" {
region = "us-east-1"
access_key = "AKIAIOSFODNN7EXAMPLE"
secret_key = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
skip_credentials_validation = true
skip_requesting_account_id = true
endpoints {
s3 = "http://localhost:4566"
dynamodb = "http://localhost:4566"
lambda = "http://localhost:4566"
sqs = "http://localhost:4566"
}
} Install, start, use. No account creation. No auth token. Your first S3 bucket is 10 seconds away.
pip install localemu[runtime] Install from PyPI. Brings everything you need.
localemu start Start all 132 services on localhost:4566.
awsemu s3 ls Use the built-in CLI wrapper. Or point boto3/Terraform to localhost:4566.
Start, stop, explore. The CLI tells you what is running, what services are available, and what operations each service supports. No external documentation needed.
localemu start Start all services
localemu stop Stop everything
localemu status Running services
localemu services All services
localemu services s3 S3 operations
awsemu <cmd> AWS CLI wrapper
Every service runs on your machine: pure Python for most, real engines in Docker for Lambda, EC2,
RDS, ECS, EKS and OpenSearch. pip install is all you need.
One install. 132 services. Persistent state. Free forever.