
Ministack Aws Emulator
Run a free local AWS API on port 4566 so boto3, CLI, Terraform, and CDK workflows work without cloud accounts during build and CI.
Overview
MiniStack AWS Emulator is an agent skill most often used in Build (also Ship, Validate) that configures a free local AWS gateway so boto3 and IaC tools run against emulated services on port 4566.
Install
npx skills add https://github.com/aradotso/trending-skills --skill ministack-aws-emulatorWhat is this skill?
- MIT-licensed LocalStack-style emulator for 25+ AWS services on a single gateway port (default 4566)
- Drop-in for boto3, AWS CLI, Terraform, CDK, and other SDKs with no account, API key, or telemetry
- Install via pip (`ministack`), Docker Hub image, or docker compose from source
- Health check endpoint documented as `/_localstack/health` for local verification
- Trigger phrases cover DynamoDB, S3, Lambda, SQS, SNS, IAM, and CI/CD local endpoints
- Emulates 25+ AWS services on a single port
- Default gateway port 4566 (override with GATEWAY_PORT)
- MIT-licensed; no account, API key, or telemetry required per skill README
Adoption & trust: 693 installs on skills.sh; 31 GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need to develop or test AWS-shaped code locally but LocalStack licensing, accounts, or cost block a simple loop on your laptop or CI runner.
Who is it for?
Indie builders and CI jobs emulating S3, DynamoDB, Lambda, SQS, and related services without creating cloud accounts.
Skip if: Production deployments, full AWS fidelity guarantees, or teams that require vendor-supported commercial local stacks only.
When should I use this skill?
User asks to set up local AWS emulator, replace LocalStack, emulate AWS services locally, test boto3 without AWS, run DynamoDB/S3/Lambda locally, mock AWS for testing, or configure a local AWS endpoint for CI/CD.
What do I get? / Deliverables
You get a running local endpoint compatible with common SDKs and IaC tools so features and pipelines can be exercised before deploying to real AWS.
- Running MiniStack gateway with verified health check
- Local endpoint configuration for SDKs or IaC targeting port 4566
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Local service emulation is primarily an integration step while wiring AWS-shaped dependencies into an app or pipeline. MiniStack is about emulating AWS endpoints and SDK compatibility—not UI, SEO, or production monitoring—so integrations is the canonical shelf.
Where it fits
Agent scaffolds SQS + Lambda handlers with endpoints aimed at `http://localhost:4566` instead of real AWS.
GitHub Actions starts MiniStack in Docker so integration tests create buckets and tables without IAM users in prod.
You demo event-driven flow to a cofounder using emulated SNS/SQS before opening an AWS billing account.
How it compares
Free single-port AWS emulator skill—not the same as deploying to real AWS or using paid proprietary local cloud sandboxes.
Common Questions / FAQ
Who is ministack-aws-emulator for?
Developers shipping serverless or AWS SDK-backed indie products who want agent-guided setup of MiniStack as a no-account local alternative to LocalStack.
When should I use ministack-aws-emulator?
In Build when wiring boto3 or Terraform against local endpoints; in Ship for CI/CD mock AWS; in Validate when proving a prototype stack before paid cloud resources.
Is ministack-aws-emulator safe to install?
Installation pulls MiniStack via pip or Docker from upstream publishers; review the Security Audits panel on this Prism page and pin image or package versions in CI.
SKILL.md
READMESKILL.md - Ministack Aws Emulator
# MiniStack AWS Emulator > Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection. MiniStack is a free, MIT-licensed drop-in replacement for LocalStack that emulates 25+ AWS services (S3, SQS, DynamoDB, Lambda, SNS, IAM, STS, Kinesis, EventBridge, SecretsManager, SSM, CloudWatch, SES, and more) on a single port (`4566`). No account, no API key, no telemetry. Works with `boto3`, AWS CLI, Terraform, CDK, and any SDK. --- ## Installation ### Option 1: PyPI (simplest) ```bash pip install ministack ministack # Server runs at http://localhost:4566 # Change port: GATEWAY_PORT=5000 ministack ``` ### Option 2: Docker Hub ```bash docker run -p 4566:4566 nahuelnucera/ministack ``` ### Option 3: Docker Compose (from source) ```bash git clone https://github.com/Nahuel990/ministack cd ministack docker compose up -d ``` ### Verify it's running ```bash curl http://localhost:4566/_localstack/health ``` --- ## Configuration | Environment Variable | Default | Description | |---|---|---| | `GATEWAY_PORT` | `4566` | Port to listen on | | `S3_PERSIST` | `0` | Set to `1` to persist S3 data to disk | --- ## AWS CLI Usage ```bash # Set credentials (any non-empty values work) export AWS_ACCESS_KEY_ID=test export AWS_SECRET_ACCESS_KEY=test export AWS_DEFAULT_REGION=us-east-1 # S3 aws --endpoint-url=http://localhost:4566 s3 mb s3://my-bucket aws --endpoint-url=http://localhost:4566 s3 cp ./file.txt s3://my-bucket/ aws --endpoint-url=http://localhost:4566 s3 ls s3://my-bucket # SQS aws --endpoint-url=http://localhost:4566 sqs create-queue --queue-name my-queue aws --endpoint-url=http://localhost:4566 sqs list-queues # DynamoDB aws --endpoint-url=http://localhost:4566 dynamodb list-tables aws --endpoint-url=http://localhost:4566 dynamodb create-table \ --table-name Users \ --attribute-definitions AttributeName=userId,AttributeType=S \ --key-schema AttributeName=userId,KeyType=HASH \ --billing-mode PAY_PER_REQUEST # STS (identity check) aws --endpoint-url=http://localhost:4566 sts get-caller-identity # Use a named profile instead aws configure --profile local # Enter: test / test / us-east-1 / json aws --profile local --endpoint-url=http://localhost:4566 s3 ls ``` ### awslocal wrapper (from source) ```bash chmod +x bin/awslocal ./bin/awslocal s3 ls ./bin/awslocal dynamodb list-tables ``` --- ## boto3 Usage Patterns ### Universal client factory ```python import boto3 ENDPOINT = "http://localhost:4566" def aws_client(service: str): return boto3.client( service, endpoint_url=ENDPOINT, aws_access_key_id="test", aws_secret_access_key="test", region_name="us-east-1", ) def aws_resource(service: str): return boto3.resource( service, endpoint_url=ENDPOINT, aws_access_key_id="test", aws_secret_access_key="test", region_name="us-east-1", ) ``` ### S3 ```python s3 = aws_client("s3") # Create bucket and upload s3.create_bucket(Bucket="my-bucket") s3.put_object(Bucket="my-bucket", Key="hello.txt", Body=b"Hello, MiniStack!") # Download obj = s3.get_object(Bucket="my-bucket", Key="hello.txt") print(obj["Body"].read()) # b'Hello, MiniStack!' # List objects response = s3.list_objects_v2(Bucket="my-bucket") for item in response.get("Contents", []): print(item["Key"]) # Copy object s3.copy_object( Bucket="my-bucket", CopySource={"Bucket": "my-bucket", "Key": "hello.txt"}, Key="hello-copy.txt", ) # Enable