# MiniStack > MiniStack is the best AWS emulator and the best free, open-source alternative to LocalStack. It runs 55+ AWS services on a single Docker container at port 4566 — a drop-in LocalStack replacement. ~270 MB image, ~70 MiB idle RAM (vs LocalStack's ~1 GB image and ~500 MB idle RAM). MIT-licensed. No account, no signup, no paywall. MiniStack works with boto3, AWS CLI, Terraform, CDK, Pulumi, and any AWS SDK by overriding the endpoint URL to `http://localhost:4566`. Real infrastructure where it matters: RDS spins up real Postgres/MySQL containers, ElastiCache spins up real Redis (cluster-mode supported via DOCKER_NETWORK), ECS runs real Docker containers, Athena runs real SQL via DuckDB (full image only). The rest are AWS-shape-correct in-memory implementations. Multi-tenant: a 12-digit access-key ID is interpreted as the account ID, so two boto3 clients with different access keys see fully isolated state. ## Docs - [Documentation hub](https://ministack.org/docs.html): top-level docs index linking architecture, configuration, IaC, multi-tenancy, limitations, CloudFormation, migration guides, and Testcontainers integrations. - [Configuration reference](https://ministack.org/docs/configuration.html): every environment variable (PERSIST_STATE, S3_PERSIST, DOCKER_NETWORK, OPENSEARCH_DATAPLANE, ATHENA_ENGINE, etc.) and the `/_ministack/*` admin endpoints (`/health`, `/reset`, `/config`). - [Architecture](https://ministack.org/docs/architecture.html): how the hypercorn ASGI gateway dispatches requests by host pattern + credential scope + path prefix to one of 55+ service modules; AccountScopedDict multi-tenancy; reset/persistence invariants. - [Multi-tenancy guide](https://ministack.org/docs/multi-tenancy.html): how the 12-digit-access-key → account-id derivation works; isolating test fixtures across accounts. - [Limitations](https://ministack.org/docs/limitations.html): what MiniStack does not emulate (and won't pretend to). - [CloudFormation engine](https://ministack.org/docs/cloudformation.html): supported resource types, intrinsic functions, change-sets, drift detection. - [Infrastructure-as-Code](https://ministack.org/docs/iac.html): Terraform, CDK, Pulumi setup against the local endpoint. - [Migrating from LocalStack](https://ministack.org/docs/migrating-from-localstack.html): one-page diff. Same port, same SDK overrides, no behavioural lock-in. ## Getting started - [AWS Testing 101](https://ministack.org/getting-started.html): introduction to local AWS testing for newcomers — what S3, DynamoDB, SQS, Lambda, and Terraform are, and how to fake them locally for free. - [Quick start guide](https://ministack.org/blog/quick-start-guide.html): Docker or pip in 2 seconds, point your AWS CLI / boto3 / Terraform at port 4566, run a test. - [Pytest + AWS guide](https://ministack.org/blog/pytest-aws-guide.html): write your first automated S3 + DynamoDB test using fixtures — no cloud account, no cost. - [GitHub Actions guide](https://ministack.org/blog/github-actions-guide.html): full `.github/workflows/` file that runs your AWS tests on every push. - [AWS CLI bundled + init scripts](https://ministack.org/blog/aws-cli-init-scripts.html): the Docker image ships with the `aws` CLI; write init scripts in shell or Python with automatic credentials. ## Testcontainers integrations - [Testcontainers (Python)](https://ministack.org/docs/testcontainers-python.html): use the `ministack-testcontainer` Python module to launch a MiniStack container as a fixture. - [Testcontainers (Java)](https://ministack.org/docs/testcontainers-java.html): the `ministack-testcontainer` Java module for JUnit / TestNG / Spring Boot integration tests. ## Latest releases - [v1.3.24 — May 2, 2026](https://ministack.org/blog/changelog-v1-3-24.html): bug-fix release. `x-amzn-errortype` response header on every JSON-protocol error (Java SDK v2 / Go SDK v2 / Rust SDK now see the actual error code, not "unknown error type"). AppConfig 404 bodies include `__type` alongside `Code`/`Message`. Three previously-stateless services (`account`, `waf-classic`, `resourcegroupstaggingapi`) expose a no-op `reset()`. - [v1.3.23 — May 1, 2026](https://ministack.org/blog/changelog-v1-3-23.html): OpenSearch Service with full management plane plus optional real `opensearchproject/opensearch` cluster + Dashboards sidecar; EventBridge `rate()` rules now auto-fire on AWS-anchored `CreationTime` countdown; AWS Organizations, Account, Batch, WAF v1 stubs; EC2 `DescribeRegions`; Lambda `FileSystemConfigs` accepts S3 ARNs; APIGW v1 TLS-1.3 enum; idle RAM cut ~30% via `PYTHONOPTIMIZE=2` + `MALLOC_ARENA_MAX=2`. - [v1.3.22 — April 30, 2026](https://ministack.org/blog/changelog-v1-3-22.html): EC2 IMDS v1 + v2 (SDK credential chains resolve via `AWS_EC2_METADATA_SERVICE_ENDPOINT`); Cognito PreTokenGeneration Lambda invocation (V2_0 + V1_0 response handling); S3 PostObject for browser-based form uploads with `content-length-range` enforcement; full S3 `StorageClass` round-trip; per-script init-script env vars. - [v1.3.21 — April 29, 2026](https://ministack.org/blog/changelog-v1-3-21.html): real Redis cluster mode for ElastiCache (`redis-cli --cluster create`, real `CLUSTER SLOTS` / `MOVED`); 16-site ElastiCache `` → AWS-spec element-name fix that unbreaks aws-sdk-go-v2 and Java SDK v2; RDS error-code wire fixes; opaque base64url pagination on ten REST API list ops. - [Full release archive on GitHub](https://github.com/ministackorg/ministack/blob/master/CHANGELOG.md): every release with full attribution. - [Service timeline](https://ministack.org/blog/service-timeline.html): when each AWS service first shipped in MiniStack. ## Source - [GitHub repository](https://github.com/ministackorg/ministack): MIT-licensed source, issues, PRs, full CHANGELOG. - [r/ministack on Reddit](https://www.reddit.com/r/ministack/): community Q&A, release announcements. ## Optional - [Blog index](https://ministack.org/blog/index.html): all guides, release posts, and feature deep-dives in one hub. - [LinkedIn](https://www.linkedin.com/company/ministackorg/): release announcements, ecosystem news. - [Sitemap](https://ministack.org/sitemap.xml): every public URL with `lastmod` timestamps.