AWS on localhost:4566

A free, MIT-licensed AWS emulator and drop-in replacement for LocalStack. Give your coding agents a real AWS to build and test against: no auth token, no account, no bill.

# Install floci-cli, then start floci
curl -fsSL https://floci.io/install.sh | sh
floci start
eval $(floci env)
126 AWS services ready on :4566. S3 · SQS · DynamoDB · Lambda · RDS · +121 more

24 ms startup · ~13 MiB idle · MIT licensed · no auth token

Homebrew, Windows and Docker options

Every way to run it.

One CLI installs and runs all four emulators: use Homebrew, the install script or PowerShell. Or skip the CLI and run the Docker image.

1 · Install floci CLI

brew install floci-io/floci/floci

2 · Start the emulator

floci start

3 · Export env vars

eval $(floci env)
# exports AWS_ENDPOINT_URL, AWS_ACCESS_KEY_ID,
# AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION

4 · Upload a file

# Create a bucket
aws s3 mb s3://my-bucket

# Write a file and upload it
echo "Why pay for S3 when floci is free?" > hello-floci.txt
aws s3 cp hello-floci.txt \
  s3://my-bucket/hello-floci.txt

# Download it back and read it
aws s3 cp s3://my-bucket/hello-floci.txt \
  hello-back.txt
cat hello-back.txt

Teach your coding agent

# Asks which agents to install it for
npx skills add floci-io/floci-cli

The Floci skill teaches Claude Code, Codex, Cursor, Kiro and other coding agents to run the emulators with floci-cli.

Other useful commands

# Check status
floci status

# View logs
floci logs --follow

# Stop the emulator
floci stop

# Run health diagnostics
floci doctor

Start with persistence

floci start --persist ./data
# state survives container restarts

Save & restore state

floci snapshot save my-snapshot
floci snapshot load my-snapshot

Recipes that span several services.

End-to-end recipes for complex services. No cloud account needed.

# Set up environment
export AWS_ENDPOINT_URL=http://localhost:4566
export AWS_DEFAULT_REGION=us-east-1
export AWS_ACCESS_KEY_ID=test
export AWS_SECRET_ACCESS_KEY=test


# Create EKS cluster (Floci spins up a real k3s node)
aws eks create-cluster \
    --name dev-cluster \
    --role-arn arn:aws:iam::000000000000:role/eks-role \
    --resources-vpc-config subnetIds=subnet-default-us-east-1-a


# Pull kubeconfig and use kubectl
aws eks wait cluster-active --name dev-cluster

# kubectl needs a real IAM key: floci rejects test/test for cluster-admin
aws iam create-user --user-name eks-admin
read AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY <<< "$(aws iam create-access-key \
    --user-name eks-admin --query 'AccessKey.[AccessKeyId,SecretAccessKey]' --output text)"
export AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY

aws eks update-kubeconfig --name dev-cluster
kubectl run nginx --image=nginx:alpine --port=80
kubectl get pods,svc

126 AWS services. All of them free.

Every service is fully unlocked. Related APIs share a chip, such as DynamoDB + Streams.

Storage

8

Databases

9

Compute

9

Containers

3

Networking & APIs

10

Messaging & Events

10

Identity

8

Security & Secrets

12

Observability

7

Analytics

12

AI & ML

8

Developer Tools

18

Cost & Billing

6

Runs a Docker container Only in Floci among free emulators

Same calls, same port, no lock-in.

Point the AWS SDK at port 4566 and keep your code. Everything below is in the free, MIT-licensed build.

Truly MIT licensed

Fork it, embed it, extend it. No "community edition" sunset. No "enterprise" feature flags. Every service available to every developer, always.

Drop-in compatible

Same port 4566, same wire protocols, same AWS SDK calls. Point the endpoint at Floci and your application code stays as it is.

Optional TLS / HTTPS

Enable HTTPS with one env var. Floci auto-generates a self-signed certificate at startup so you can test TLS-sensitive code paths locally.

Per-account isolation

Full multi-tenancy: each AWS account ID gets its own isolated storage. Run dev, staging, and test on a single Floci instance.

Real engines, real IAM, on your laptop.

Floci doesn't mock responses. For complex data services it runs the real engine in Docker and speaks its wire protocol, and Lambda, ElastiCache, RDS, ECS, EC2, MSK, EKS, OpenSearch, ECR and CodeBuild all authenticate with real IAM and SigV4.

Lambda Runtimes

Execution in isolated Docker containers using real AWS runtimes. Node.js, Python, Java, Go, and more with identical environment variables.

RDS Engines

Real PostgreSQL, MySQL, or MariaDB instances. Full lifecycle, snapshot/restore, and JDBC traffic with IAM database authentication.

ElastiCache (Redis)

Real Redis container. Floci acts as a SigV4 proxy for IAM authentication against your local Redis cluster.

Amazon ECS

Orchestrates real Docker containers for task definitions, providing a local control plane for task lifecycle management.

OpenSearch

Real OpenSearch clusters. Floci manages the underlying engine nodes, fully functional with the complete OpenSearch API suite.

MSK (Kafka)

Real Apache Kafka via Redpanda. Perfect for testing event-driven architectures with the same performance and semantics as Amazon MSK.

ECR Registry

Real OCI-compatible registry (registry:2). Push and pull with the stock Docker client, including image-backed Lambdas.

Athena

Query execution in a DuckDB sidecar container. Same execution model as AWS Athena, no mocking.

EC2 Instances

RunInstances launches real Docker containers. SSH key injection, UserData execution, and IMDS (IMDSv1 + IMDSv2) with IAM credential serving.

Switching from LocalStack?

Same port, same credentials, same SDK endpoint override and CLI flags. Swap the image and keep going: 138× faster startup and 91% less memory.

# Before
image: localstack/localstack

# After
image: floci/floci:latest

# After, if init scripts need the AWS CLI or boto3
image: floci/floci:latest-compat

LocalStack settings, translated automatically

Init scripts under /etc/localstack/init/ run unchanged, and /_localstack/health is still served. Set LOCALSTACK_PARITY=false to opt out of the translation.

LocalStackFloci
LOCALSTACK_HOSTFLOCI_HOSTNAME
PERSISTENCE=1FLOCI_STORAGE_MODE=persistent
LAMBDA_DOCKER_NETWORKFLOCI_SERVICES_LAMBDA_DOCKER_NETWORK
LAMBDA_REMOVE_CONTAINERS=1FLOCI_SERVICES_LAMBDA_EPHEMERAL=true
DEBUG=1QUARKUS_LOG_LEVEL=DEBUG

Feature table, benchmarks and the full migration guide

AWS, without the bill.

Like cirrocumulus floccus, the cloud formation that gave Floci its name. Small, lightweight, and always there when you need it.

Other emulators: AzureGCPOCI

license
MIT
real credentials
none
cloud account
none
cost
$0