README.md

June 21, 2026 · View on GitHub

fakecloud
Local AWS cloud emulator. Free forever.

CI License GHCR crates.io Homebrew Docs


fakecloud is a free, open-source local AWS emulator for integration testing and local development. Single binary, no account, no auth token, no paid tier. Point your AWS SDK at http://localhost:4566 and it works.

In March 2026, LocalStack replaced its open-source Community Edition with a proprietary image that requires an account and auth token. fakecloud exists so teams can keep a fully local AWS testing workflow without one.

Quick start

curl -fsSL https://fakecloud.dev/install.sh | bash   # or: brew install fakecloud
fakecloud

Then point any AWS SDK or CLI at http://localhost:4566 with dummy credentials:

aws --endpoint-url http://localhost:4566 sqs create-queue --queue-name my-queue

Works as a drop-in for LocalStack in CI, with Terraform (endpoints block), CDK (cdklocal), or any AWS SDK in any language. Other install options (Homebrew, Cargo, Docker, Docker Compose, source) and full guides: fakecloud.dev/docs/getting-started.

Why fakecloud

  • Free, forever. AGPL-3.0, no paid tier, no account, no token.
  • True 100% conformance. 124,255 Smithy-model-generated test variants pass on every commit, validated against AWS's own Smithy models. CI also runs upstream terraform-provider-aws TestAcc* suites to catch waiter/field/drift bugs that SDK tests miss.
  • Real cross-service wiring. EventBridge -> Step Functions, S3 -> Lambda, SES inbound -> S3/SNS/Lambda, and 15+ more integrations execute end-to-end.
  • Real infrastructure for stateful services. Lambda (23 runtimes), RDS (Postgres/MySQL/MariaDB/Oracle/SQL Server/Db2), ElastiCache (Redis/Valkey/Memcached), ECS, and EC2 run as real containers. Use Docker (default) or native Kubernetes Pods via FAKECLOUD_CONTAINER_BACKEND=k8s. See the Kubernetes backend guide.
  • Single binary. ~19 MB, ~10 MiB idle, ~300ms startup. No Docker needed to run fakecloud itself.
  • Full Bedrock surface. 214 ops across 4 APIs with real InvokeModel/Converse streaming, guardrails, agents, and flows. Configurable responses + fault injection for deterministic tests. See /bedrock-emulator/.
  • First-party test SDKs for TypeScript, Python, Go, PHP, Java, and Rust. Assert on what your code called without raw HTTP.
  • Opt-in SigV4 verification and IAM enforcement. Off by default so tests just work; --verify-sigv4 for real signature checking and --iam soft|strict for policy evaluation across IAM/STS/SQS/SNS/S3. See security docs.
  • LocalStack and real-AWS URL compatibility. Both *.localhost.localstack.cloud and *.amazonaws.com Host headers route correctly, including every S3 virtual-hosted variant. Persisted URLs and dev scripts from either system replay unchanged.

Supported services

41 services, 3,717 operations, true 100% conformance across every implemented service. Notes below are one-liners; the parity matrix has full control-plane vs data-plane coverage and known limitations per service.

ServiceOpsNotes
S3107Versioning, lifecycle, notifications, multipart, replication, website, real SSE-KMS
SQS23FIFO, DLQs, long polling, batch, real KMS encrypt/decrypt
SNS42Fan-out to SQS/Lambda/HTTP, filter policies, KMS audit-trail
EventBridge57Pattern matching, schedules, archives, replay, API destinations
EventBridge Scheduler12at/rate/cron, SQS targets, DLQ routing, one-shot self-delete
Lambda70Real Docker, 23 runtimes, ESM with FilterCriteria + partial-batch failure
DynamoDB57Transactions, PartiQL, backups, global tables, streams, SSE-KMS
IAM176Users, roles, policies, groups, OIDC/SAML, PassRole trust enforcement
STS11AssumeRole, session tokens, federation
SSM146Parameters, documents, commands, maintenance, patch baselines, SecureString KMS
Secrets Manager23Versioning, rotation via Lambda, replication, real KMS encrypt/decrypt
CloudWatch Logs113Groups, streams, subscription filters, query language
CloudWatch46Metrics + composite alarms, dashboards, anomaly detectors, insight rules, metric streams
KMS53Encryption, aliases, grants, real ECDH, key import, cross-service hook
CloudFormation90Template parsing, resource provisioning, custom resources
SES (v2 + v1 inbound)110Sending, templates, DKIM, real receipt rule execution
Cognito User Pools122Pools, clients, MFA, IdPs, full auth flows, 12 Lambda triggers, email->SES SMS->SNS
Kinesis39Streams, records, shard iterators, retention
RDS163Real Postgres/MySQL/MariaDB/Oracle/SQL Server/Db2, aws_lambda/aws_s3 extensions, Aurora lambda bridge
ElastiCache75Real Redis, Valkey, Memcached via Docker
Step Functions37Full ASL interpreter, Lambda/SQS/SNS/EventBridge/DynamoDB tasks
API Gateway v1124REST APIs, integrations incl. real Lambda proxy, authorizers (Lambda + Cognito JWT)
API Gateway v2103HTTP APIs, routes, developer portals, authorizers (Lambda + Cognito JWT)
Bedrock101Foundation models, guardrails, custom models, invocation/eval jobs
Bedrock Runtime10InvokeModel, Converse, streaming, configurable responses, fault inject
Bedrock Agent72Agents, aliases, action groups, knowledge bases, ingestion, prompt mgmt, flows
Bedrock Agent Runtime31InvokeAgent, Retrieve, RetrieveAndGenerate, InvokeFlow, streaming
ECR58Full API, real OCI v2 push/pull, lifecycle, scanning, pull-through
ECS76Full API, real task execution, services + rolling deploys, task sets, ECS Exec
Elastic Load Balancing v251ALB/NLB/GWLB control plane, mTLS trust stores, in-process HTTP data plane for ALBs
CloudFront147Distributions, functions, policies, KVS, FLE, connection groups; full config round-trip
Route 5371Full control plane: zones, RRsets, health checks, traffic policies, DNSSEC, VPC assoc
WAF v255Full control plane: WebACLs/RuleGroups/IPSets, CheckCapacity, managed rule catalog
Application Auto Scaling14Scalable targets + step/target/predictive policies + scheduled actions, 13 namespaces
Athena70Workgroups, data catalogs, query executions (synthesized results), notebooks, sessions
ACM (Certificate Manager)17Public-cert lifecycle, DNS/EMAIL validation, import/export, tags
Glue265Full control plane; Data Catalog shared with Athena; execution synthesized (no Spark)
Firehose12Delivery stream control plane; data plane stops at acknowledgement
Organizations63Full control plane, real SCP enforcement under FAKECLOUD_IAM=strict
EC2767Full 767-op control plane; instances run as real Docker/Podman/k8s with per-subnet isolation

Per-service docs and feature matrices: fakecloud.dev/docs/services.

Compared to LocalStack Community

FeaturefakecloudLocalStack Community (post-March 2026)
LicenseAGPL-3.0Proprietary
Auth requiredNoYes (account + token)
Commercial useFreePaid plans only
Docker requiredNo (standalone binary)Yes
Startup time~300ms~3s
Idle memory~10 MiB~150 MiB
Install size~19 MB binary~1 GB Docker image
Test assertion SDKsTypeScript, Python, Go, PHP, Java, RustPython, Java
Cognito User Pools122 opsPaid only
SES v2 + inboundFull send/templates/DKIM + real receipt-rule executionPaid only / stored but never executed
RDS163 ops, 6 real engines via Docker, lambda + s3 extensionsPaid only
ElastiCache75 ops, real Redis/Valkey/MemcachedPaid only
API Gateway v1 / v2124 / 103 ops, real Lambda proxy data planePaid only
Bedrock214 ops across 4 APIsNot available
ECR / ECS58 / 76 ops, real docker push/pull, real task executionPaid only
Elastic Load Balancing v251 ops incl. mTLS + in-process HTTP data planePaid only
CloudFront147 ops, full distribution config round-tripPaid only

Performance numbers measured on Apple M1 via time fakecloud, ps -o rss, ls -lh.

First-party SDKs

Normal AWS SDKs handle your application code. fakecloud's own SDKs let your tests assert on what happened: sent emails, SNS messages, Lambda invocations, Bedrock calls, and more.

LanguageInstall
TypeScriptnpm install fakecloud
Pythonpip install fakecloud
Gogo get github.com/faiscadev/fakecloud/sdks/go
PHPcomposer require fakecloud/fakecloud
Javadev.fakecloud:fakecloud (Maven Central)
Rustcargo add fakecloud-sdk
import { FakeCloud } from "fakecloud";

const fc = new FakeCloud();

// Your app sends through the normal AWS SDK.
// Your test asserts the side effect directly.
const { emails } = await fc.ses.getEmails();
expect(emails).toHaveLength(1);

await fc.reset();

Full SDK reference for all six languages: fakecloud.dev/docs/sdks.

Use with AI coding tools

Add one of these snippets to your project so AI coding assistants (Claude Code, Cursor, GitHub Copilot) automatically use fakecloud for AWS integration tests.

Claude Code — add to CLAUDE.md
## AWS Testing

For integration tests, use fakecloud as a local AWS emulator.

- Install: `curl -fsSL https://fakecloud.dev/install.sh | bash`
- Run: `fakecloud` (listens on http://localhost:4566)
- Configure AWS SDK endpoint to http://localhost:4566 with dummy credentials (access_key=test, secret_key=test)
- Docs: https://fakecloud.dev/llms.txt
Cursor — add to .cursor/rules
For AWS integration tests, use fakecloud (local AWS emulator) at http://localhost:4566.
Install: curl -fsSL https://fakecloud.dev/install.sh | bash
Run: fakecloud
Use dummy credentials (access_key=test, secret_key=test).
Docs: https://fakecloud.dev/llms.txt
GitHub Copilot — add to .github/copilot-instructions.md
## AWS Testing

Use fakecloud as a local AWS emulator for integration tests.

- Run: `fakecloud` (listens on http://localhost:4566)
- Configure endpoint_url to http://localhost:4566 with dummy credentials
- Docs: https://fakecloud.dev/llms.txt

Docs and guides

Contributing

Contributions welcome. Fork, branch, write tests, open a PR.

  • Conventional commits (feat:, fix:, chore:, test:, refactor:)
  • E2E tests for every new action
  • cargo test --workspace && cargo clippy --workspace -- -D warnings && cargo fmt --check

See CONTRIBUTING.md for more.

License

fakecloud is free and open-source, licensed under AGPL-3.0-or-later. Using fakecloud as a dev/test dependency has zero AGPL implications for your application — the copyleft clause only applies if you modify and redistribute fakecloud itself as a network service.


Part of the faisca project family | fakecloud.dev