Free, open-source LocalStack alternative
fakecloud is a free, open-source local AWS emulator: 23 services, 1,680 operations, 100% conformance, 6 test-assertion SDKs. No account, no token, no paid tier. Drop-in replacement for LocalStack Community.
LocalStack replaced its open-source Community Edition with a proprietary image in March 2026. Running localstack:latest now requires an account and an auth token, and several previously-free services (RDS, ElastiCache, Cognito User Pools, SES v2, API Gateway v2, ECS/ECR) moved behind a paywall.
fakecloud is a free, open-source replacement. Single static binary, no account, no token, no paid tier, AGPL-3.0.
curl -fsSL https://raw.githubusercontent.com/faiscadev/fakecloud/main/install.sh | bash
fakecloudPoint any AWS SDK or CLI at http://localhost:4566 with dummy credentials. That is the whole setup.
Goal: 100% AWS, 100% conformance, 100% integrations
fakecloud aims at every AWS service, each at 100% behavioral conformance, including every cross-service integration. Services land depth-first: a service is supported when it matches real AWS across every documented operation and cross-service wire-up — not when the API surface looks filled in. 23 services are there today (see below); the rest are on the roadmap, prioritized by real-project demand.
This is why fakecloud runs real Lambda code in real runtime containers, runs real PostgreSQL/MySQL/MariaDB for RDS, runs real Redis/Valkey for ElastiCache, fires real S3 -> Lambda and SES inbound -> S3/SNS/Lambda flows, and validates every operation against AWS's own Smithy models on every commit.
What fakecloud gives you
- 23 AWS services. S3, SQS, SNS, DynamoDB, Lambda, IAM, STS, KMS, Secrets Manager, SSM, CloudWatch Logs, CloudFormation, EventBridge, EventBridge Scheduler, SES (v2 + v1 inbound), Cognito User Pools, Kinesis, RDS, ElastiCache, Step Functions, API Gateway v2, Bedrock, Bedrock Runtime.
- 1,680 API operations. 100% conformance per implemented service, validated against AWS's own Smithy models on every commit (59,000+ generated test variants).
- Tested against upstream Terraform acceptance tests. CI runs
hashicorp/terraform-provider-awsTestAcc*suites against fakecloud, catching waiter and field-presence drift that pure SDK tests miss. - Real Lambda execution. 13 runtimes in Docker containers. Not a mock, not a stub. Node, Python, Java, Go, .NET, Ruby, custom runtimes.
- Real stateful services. RDS runs real PostgreSQL/MySQL/MariaDB. ElastiCache runs real Redis/Valkey. Your Lambda talking to RDS is talking to a real Postgres.
- Real cross-service wiring. EventBridge -> Step Functions, S3 -> Lambda, SES inbound -> S3/SNS/Lambda, 15+ more end-to-end integrations.
- Fast. ~500ms startup. ~10 MiB idle memory. ~19 MB binary. No Docker required to run fakecloud itself.
- Test-assertion SDKs for TypeScript, Python, Go, PHP, Java, and Rust. Assert that an email was sent, an SNS message published, a Lambda invoked, without writing raw HTTP.
- Multi-account, SCPs, ABAC. Cross-account delivery on SQS/SNS/Lambda/S3/EventBridge/Step Functions. STS trust policies with
sts:ExternalId, session tags, permission boundaries, and session policies all enforced. - IAM, KMS key policies, bucket policies, SCPs. Opt-in strict enforcement with the full Allow/Deny/NotPrincipal semantics AWS uses.
fakecloud vs LocalStack Community (post-March 2026)
| Feature | fakecloud | LocalStack Community |
|---|---|---|
| License | AGPL-3.0 (open source) | Proprietary |
| Account / auth token | Not required | Required |
| Free for commercial use | Yes | No |
| Docker required | No (single binary) | Yes |
| Startup | ~500ms | ~3s |
| Idle memory | ~10 MiB | ~150 MiB |
| Install size | ~19 MB binary | ~1 GB image |
| Conformance methodology | Smithy-model-validated, 54k+ test variants | Not published |
| Test-assertion SDKs | TypeScript, Python, Go, PHP, Java, Rust | Python, Java |
| Cognito User Pools | 122 operations | Paid only |
| SES v2 | 110 operations, full send + templates + DKIM | Paid only |
| SES inbound email | Real receipt rule action execution | Stored but never executed |
| RDS | 163 ops, real PostgreSQL/MySQL/MariaDB via Docker | Paid only |
| ElastiCache | 75 ops, real Redis/Valkey via Docker | Paid only |
| API Gateway v2 | 28 ops, HTTP APIs + JWT/Lambda authorizers | Paid only |
| Bedrock | 111 ops (control plane + runtime) | Not available |
Performance numbers measured on Apple M1 via time fakecloud, ps -o rss, ls -lh. LocalStack numbers from a fresh localstack start on the same hardware.
Migrating from LocalStack
Most projects can migrate by changing one thing: the container image (or the install command), plus the port if it differs. The endpoint URL, dummy credentials, and SDK wiring all stay the same.
# docker-compose.yml — before (LocalStack Community)
services:
localstack:
image: localstack/localstack:latest # now requires auth token
ports:
- "4566:4566"
# docker-compose.yml — after (fakecloud)
services:
fakecloud:
image: ghcr.io/faiscadev/fakecloud:latest
ports:
- "4566:4566"For CI without Docker:
- run: curl -fsSL https://raw.githubusercontent.com/faiscadev/fakecloud/main/install.sh | bash
- run: fakecloud &
- run: sleep 1 && aws --endpoint-url http://localhost:4566 s3 ls # verifyFull migration guide: Migrating from LocalStack to fakecloud.
FAQ
Is fakecloud a drop-in replacement for LocalStack Community?
For integration testing and local development against the services fakecloud supports, yes. Your AWS SDK code, CLI commands, Terraform configs, and CDK apps work unchanged — you only switch the endpoint URL (already http://localhost:4566) and the process you run.
Is fakecloud free for commercial use?
Yes. AGPL-3.0. Using fakecloud as a dev/test dependency has zero AGPL implications for your application or your production code. The copyleft clause only kicks in if you modify fakecloud itself and redistribute it as a network service.
How is fakecloud different from Moto?
Moto is a Python library that patches boto3 inside a test process. fakecloud is a real HTTP server that listens on port 4566 and speaks the AWS wire protocol. That means fakecloud works with any language and any SDK (Go, Java, Node, Rust, PHP), and it exercises real cross-service wiring (EventBridge -> Lambda, S3 -> SNS, etc) because the services are running in the same process. Moto doesn't execute Lambda code; fakecloud runs Lambda in real Docker containers across 13 runtimes.
How is fakecloud different from SAM Local / serverless-offline?
SAM Local and serverless-offline only run Lambda (and a limited HTTP/API Gateway surface in front of it). fakecloud runs Lambda plus 22 other services, with real cross-service integrations. If your function calls SQS, fans out over SNS, or reads from DynamoDB, fakecloud has those services wired up.
Does fakecloud run on CI?
Yes. Single binary, ~19 MB, ~500ms startup. Common patterns: install-and-run as a background step in GitHub Actions / GitLab CI / CircleCI, or pull ghcr.io/faiscadev/fakecloud:latest as a service container. See integration testing AWS in CI for copy-paste configs.
What does "100% conformance" mean?
For every operation exposed by AWS's Smithy model, fakecloud accepts every documented input shape and returns the documented output shape, with every field AWS returns. Validated on every commit against 59,000+ generated test variants, plus the upstream hashicorp/terraform-provider-aws TestAcc* suites. This applies to every service listed above.
What's fakecloud's coverage goal?
100% of AWS services, each at 100% conformance with 100% of cross-service integrations. fakecloud adds services depth-first: a service only lands when it matches real AWS behavior across every documented operation and cross-service wire-up, not when the surface area looks filled in. If a service isn't on the list above, open an issue — the roadmap is driven by real-project demand.
Is this a fork of LocalStack?
No. fakecloud is written from scratch in Rust. No LocalStack code was used. LocalStack is written in Python; fakecloud is written in Rust and ships as a single binary.
Get started
- Install:
curl -fsSL https://raw.githubusercontent.com/faiscadev/fakecloud/main/install.sh | bash - Docker:
docker run --rm -p 4566:4566 ghcr.io/faiscadev/fakecloud - Cargo:
cargo install fakecloud - Repo: github.com/faiscadev/fakecloud
- Docs: fakecloud.dev/docs
- Issues: github.com/faiscadev/fakecloud/issues
If fakecloud behaves differently from real AWS, that's a bug — open an issue and it gets fixed.