Run AWS locally.
Free forever. No account required.

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 →
LocalEmu terminal

Built for developers who use

Terraform CDK boto3 Pulumi Serverless AWS CLI

Why not just use real AWS?

Because local development deserves local infrastructure. Real AWS is built for production. Here is what happens when teams use it for development and testing.

Minutes

Per iteration

Cloud-native dev loops can stretch from seconds-on-localhost to multiple minutes per code-build-test cycle. Daily iteration counts drop accordingly.

Hundreds+

Per month per team

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

Secrets leaked yearly

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.

Minutes

CloudFormation updates

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.

Shared environments break everything

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.

CI against real AWS is flaky

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.

What happened to LocalStack?

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.

Read the full story →

LocalEmu picks up what LocalStack archived.

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.

One pip install

pip install localemu[runtime] gives you 132 AWS services. No account, no token, no Java. Start testing in 10 seconds.

Persistence included

State survives restarts. Your S3 buckets, DynamoDB tables, and Lambda functions are stored on your machine. Free. Open source. No external server.

Free forever, no asterisk

Apache 2.0 licensed. No "Pro" tier. No tokens. No telemetry. One version with everything. It runs on your machine and never phones home.

Your tools already work

AWS CLI, boto3, Terraform, CDK, Pulumi. Point to localhost:4566 and everything works. No new API to learn.

Pure-Python core

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.

No credentials to leak

Developers never need real AWS credentials locally. No keys to rotate, no secrets to manage, no risk of leaking them on GitHub.

A complete AWS emulator. A pure-Python core with real engines where it counts. No accounts. Just install and start building.

FIG 0.1

AWS services

132 services. One endpoint.

S3, DynamoDB, Lambda, SQS, ECS, RDS, and many more. All on localhost:4566.

FIG 0.2

Pure Python

Pure-Python core, real engines.

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

$0
FOREVER

Free. No tiers.

Apache 2.0. No "Pro" paywall. No tokens. No telemetry. One version with everything included.

Real AWS behavior. Not just API stubs. Actual enforcement, real latency, genuine error handling.

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

IAM Policy Enforcement

Full AWS IAM evaluation algorithm. Identity policies, resource policies, permission boundaries, SCPs. Catch AccessDenied errors before production.

Learn more →

SIMULATE_THROTTLING=1

Throttling Simulation

Per-service AWS error codes: DynamoDB ProvisionedThroughputExceededException, S3 SlowDown, Lambda TooManyRequestsException. Test your retry logic locally.

SIMULATE_LATENCY=1

Latency Injection

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

Lambda Cold Starts

First invocation gets a configurable delay. Subsequent calls are instant (warm). Goes cold after 5 minutes idle. Provisioned concurrency skips the delay.

Read about our approach to transparent emulation →

Your tools.
Already work.

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 CLI →

awsemu
$ 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
Python (boto3)
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}')
Terraform
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"
  }
}

Three commands.
That is it.

Install, start, use. No account creation. No auth token. Your first S3 bucket is 10 seconds away.

STEP 1
pip install localemu[runtime]

Install from PyPI. Brings everything you need.

STEP 2
localemu start

Start all 132 services on localhost:4566.

STEP 3
awsemu s3 ls

Use the built-in CLI wrapper. Or point boto3/Terraform to localhost:4566.

Built-in CLI.
Everything included.

Start, stop, explore. The CLI tells you what is running, what services are available, and what operations each service supports. No external documentation needed.

CLI reference →

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

132 AWS services.
All included.

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.

ACMACM-PCAAMPAmplifyAPI GatewayAPI Gateway V2App MeshApp RunnerAppConfigApplication AutoscalingAppSyncAthenaAutoscalingBackupBatchBedrockBudgetsCloudFormationCloudFrontCloudHSM V2CloudTrailCloudWatchCloudWatch LogsCodeBuildCodeCommitCodeDeployCodePipelineCognito IdentityCognito User PoolsComprehendConfigCost ExplorerDataBrewDataSyncDAXDirect ConnectDirectory ServiceDMSDynamoDBDynamoDB StreamsEBSEC2 / VPCECRECSEFSEKSElastic BeanstalkElastiCacheElasticsearchELBELBv2EMREMR ContainersEMR ServerlessEventBridgeFirehoseForecastFSxGlacierGlueGuardDutyIAMIdentity StoreInspector2IoTIoT DataKafka (MSK)KinesisKMSLake FormationLambdaMacieManaged BlockchainMediaConnectMediaConvertMediaLiveMediaPackageMediaPackage V2MemoryDBMQNeptuneOpenSearchOpenSearch ServerlessOrganizationsPersonalizePinpointPipesPollyQuickSightRAMRDSRDS DataRedshiftRedshift DataRekognitionResilience HubResource GroupsResource Groups TaggingRoute53Route53 DomainsRoute53 ResolverS3S3 ControlSageMakerSageMaker RuntimeSchedulerSecrets ManagerSecurity HubService CatalogService DiscoveryService QuotasSESSESv2ShieldSignerSnowballSNSSQSSSMStep FunctionsStorage GatewaySTSSupportSWFTextractTimestreamTranscribeTransferTranslateWAF ClassicWAFv2X-Ray

Build faster.
Test locally.

One install. 132 services. Persistent state. Free forever.