fakecloud
Local AWS cloud emulator. Free forever.
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.
curl -fsSL https://raw.githubusercontent.com/faiscadev/fakecloud/main/install.sh | bash
fakecloudThen 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-queueOther install options (Cargo, Docker, Docker Compose, source) are documented at fakecloud.dev/docs/getting-started.
- Free, forever. AGPL-3.0, no paid tier, no account, no token.
- 100% conformance per implemented service. Every operation validated against AWS's own Smithy models — 54,000+ generated test variants on every commit.
- Tested against upstream Terraform acceptance tests. CI runs
hashicorp/terraform-provider-awsTestAcc*suites against fakecloud. Catches waiter/field-presence/drift bugs that pure SDK tests miss. - Real cross-service wiring. EventBridge → Step Functions, S3 → Lambda, SES inbound → S3/SNS/Lambda, and 15+ more integrations actually execute end-to-end.
- Real infrastructure for stateful services. Lambda runs in Docker containers (13 runtimes). RDS runs real Postgres/MySQL/MariaDB. ElastiCache runs real Redis/Valkey.
- Single binary. ~19 MB, ~10 MiB idle memory, ~500ms startup. No Docker required to run fakecloud itself (only to exercise the services that need real containers).
- First-party test SDKs for TypeScript, Python, Go, and Rust. Assert on what your code called without writing raw HTTP.
22 services, 1,668 operations, 100% conformance per implemented service.
| Service | Ops | Notes |
|---|---|---|
| S3 | 107 | Versioning, lifecycle, notifications, multipart, replication, website |
| SQS | 23 | FIFO, DLQs, long polling, batch |
| SNS | 42 | Fan-out to SQS/Lambda/HTTP, filter policies |
| EventBridge | 57 | Pattern matching, schedules, archives, replay, API destinations |
| Lambda | 85 | Real code execution in Docker, 13 runtimes, event source mappings |
| DynamoDB | 57 | Transactions, PartiQL, backups, global tables, streams |
| IAM | 176 | Users, roles, policies, groups, instance profiles, OIDC/SAML |
| STS | 11 | AssumeRole, session tokens, federation |
| SSM | 146 | Parameters, documents, commands, maintenance, patch baselines |
| Secrets Manager | 23 | Versioning, rotation via Lambda, replication |
| CloudWatch Logs | 113 | Groups, streams, subscription filters, query language |
| KMS | 53 | Encryption, aliases, grants, real ECDH, key import |
| CloudFormation | 90 | Template parsing, resource provisioning, custom resources |
| SES (v2 + v1 inbound) | 110 | Sending, templates, DKIM, real receipt rule execution |
| Cognito User Pools | 122 | Pools, clients, MFA, identity providers, full auth flows |
| Kinesis | 39 | Streams, records, shard iterators, retention |
| RDS | 163 | Real Postgres, MySQL, MariaDB via Docker |
| ElastiCache | 75 | Real Redis, Valkey via Docker |
| Step Functions | 37 | Full ASL interpreter, Lambda/SQS/SNS/EventBridge/DynamoDB tasks |
| API Gateway v2 | 28 | HTTP APIs, Lambda proxy, JWT/Lambda authorizers, CORS |
| Bedrock | 101 | Foundation models, guardrails, custom models, invocation/eval jobs |
| Bedrock Runtime | 10 | InvokeModel, Converse, streaming, configurable responses, fault inject |
Per-service docs and feature matrices: fakecloud.dev/docs/services.
| Feature | fakecloud | LocalStack Community (post-March 2026) |
|---|---|---|
| License | AGPL-3.0 | Proprietary |
| Auth required | No | Yes (account + token) |
| Commercial use | Free | Paid plans only |
| Docker required | No (standalone binary) | Yes |
| Startup time | ~500ms | ~3s |
| Idle memory | ~10 MiB | ~150 MiB |
| Install size | ~19 MB binary | ~1 GB Docker image |
| Test assertion SDKs | TypeScript, Python, Go, Rust | Python, Java |
| Cognito User Pools | 122 operations | Paid only |
| SES v2 | Full send + templates + DKIM + suppression | Paid only |
| SES inbound email | Real receipt rule action execution | Stored but never executed |
| RDS | 163 operations, PostgreSQL/MySQL/MariaDB via Docker | Paid only |
| ElastiCache | 75 operations, Redis and Valkey via Docker | Paid only |
| API Gateway v2 | 28 operations, full HTTP API support | Paid only |
| Bedrock | 111 operations (control plane + runtime) | Not available |
Performance numbers measured on Apple M1 via
time fakecloud,ps -o rss,ls -lh.
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.
| Language | Install |
|---|---|
| TypeScript | npm install fakecloud |
| Python | pip install fakecloud |
| Go | go get github.com/faiscadev/fakecloud/sdks/go |
| Rust | cargo 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 four languages: fakecloud.dev/docs/sdks.
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://raw.githubusercontent.com/faiscadev/fakecloud/main/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.txtCursor — add to .cursor/rules
For AWS integration tests, use fakecloud (local AWS emulator) at http://localhost:4566.
Install: curl -fsSL https://raw.githubusercontent.com/faiscadev/fakecloud/main/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- fakecloud.dev — website
- Getting started — install, first test, SDK setup
- Guides — in-depth how-tos (testing Bedrock, cross-service integration, CI setup)
- Reference — configuration, introspection endpoints, persistence
- Blog — essays and hot takes on testing, AWS, and AI-assisted development
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.
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