Active development — found a bug? Open an issue on GitHub
MIT Licensed · No Auth Token · 45 AWS Services · 1,925 SDK Tests

Local AWS.
Zero cost.
Zero compromise.

Floci is a fast, free, open-source AWS emulator built with Quarkus Native. Starts in 24ms, uses 13 MiB at idle. Drop-in replacement for LocalStack — no auth token, no restrictions, ever.

Get Started → ★ Star on GitHub
24ms
Startup time
138× faster than LocalStack
13 MiB
Idle memory
91% less than LocalStack
289/s
Lambda throughput
2.4× faster than LocalStack
1,925/1,925
SDK compat tests
100% pass rate
GitHub stars
github.com/floci-io/floci
S3 · REST XML SQS · FIFO + Standard Lambda · Docker Native DynamoDB · Streams Cognito · JWKS ElastiCache · IAM Auth RDS · PostgreSQL + MySQL API Gateway v1 + v2 · WebSocket Step Functions · ASL CloudFormation · Stacks EventBridge · Rules KMS · Sign + Verify EKS · Kubernetes Bedrock Runtime · Stub Athena · Query Data Firehose · S3 Glue · Data Catalog ELB v2 · ALB + NLB CodeBuild · Docker Native CodeDeploy · Lambda Shifting Textract · Document Analysis Route 53 · DNS Auto Scaling · Groups S3 · REST XML SQS · FIFO + Standard Lambda · Docker Native DynamoDB · Streams Cognito · JWKS ElastiCache · IAM Auth RDS · PostgreSQL + MySQL API Gateway v1 + v2 · WebSocket Step Functions · ASL CloudFormation · Stacks EventBridge · Rules KMS · Sign + Verify EKS · Kubernetes Bedrock Runtime · Stub Athena · Query Data Firehose · S3 Glue · Data Catalog ELB v2 · ALB + NLB CodeBuild · Docker Native CodeDeploy · Lambda Shifting Textract · Document Analysis Route 53 · DNS Auto Scaling · Groups

Built for developers who ship.

No gatekeeping. No pricing tiers. No surprises. Just a reliable AWS environment that starts instantly and works everywhere.

🚀

No auth token. Ever.

Pull the Docker image and go. No sign-ups, no API keys, no telemetry. LocalStack required an auth token starting March 2026 — Floci never will.

138× faster startup

Native binary compiled with GraalVM Mandrel. Floci starts in 24ms vs ~3,300ms for LocalStack. Your CI pipeline will thank you.

💾

91% less memory

13 MiB idle footprint vs 143 MiB. Native binary, no JVM overhead, no bundled Python runtime. Fits comfortably on the smallest CI runners.

🔓

Truly MIT licensed

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

☁️

45 AWS services

From S3 to Step Functions to RDS to Textract. Services LocalStack Community doesn't offer — ElastiCache, RDS, API Gateway v2 + WebSocket, Route53, Auto Scaling, Textract — all here, free.

🔁

Drop-in replacement

Same port 4566. Same wire protocols. Same AWS SDK calls. Switch from LocalStack by changing zero lines of application code — just update your endpoint URL.

🔒

Optional TLS / HTTPS

Enable HTTPS with one env var — Floci auto-generates a self-signed certificate at startup. Test TLS-sensitive code paths locally without managing certificates manually.

🏢

Per-account isolation

Full multi-tenancy support: each AWS account ID gets its own isolated storage. Run multiple environments — dev, staging, test — on a single Floci instance without interference.

Switching from LocalStack? Two-minute migration.

Floci is wire-compatible with LocalStack Community. Change one line in your Docker config — no application code changes required.

Before — LocalStack
image: localstack/localstack
ports:
  - "4566:4566"
environment:
  LOCALSTACK_HOST: localstack
  PERSISTENCE: "1"
After — Floci
image: floci/floci:latest
ports:
  - "4566:4566"
environment:
  
# LocalStack vars auto-translated ✓
  LOCALSTACK_HOST: floci
  PERSISTENCE: "1"
Port 4566 — unchanged
Credentials test/test — unchanged
All AWS SDK calls — no code changes
Init scripts in /etc/localstack/init/ — unchanged
LocalStack env vars auto-translated
/_localstack/health endpoint — unchanged

Performance that actually matters.

Real numbers from a 1,925-test AWS SDK compatibility suite (6 SDKs + 3 IaC tools). Floci Native vs LocalStack Community 4.14.0.

Startup Time
Floci Native 24 ms 138× faster
LocalStack 3,300 ms
Idle Memory
Floci Native 13 MiB 91% less
LocalStack 143 MiB
Lambda Throughput (req/s)
Floci Native 289 req/s 2.4× faster
LocalStack 120 req/s
Lambda Warm Latency (avg)
Floci Native 2 ms 5× faster
LocalStack 10 ms
~90MB
Docker image
vs 1.0 GB LocalStack
100%
SDK tests pass
1,925 of 1,925 checks
41
AWS services
all free, all unlocked
$0
Forever free
no auth token
Docker Image Size
Floci Native ~90 MB
LocalStack ~1.0 GB
SDK Compatibility (selected suites)
DynamoDB Streams
12/12 ✓
LS: 8/12
API Gateway v2
5/5 ✓
LS: 0/5
STS
18/18 ✓
LS: 6/18
Kinesis
15/15 ✓
LS: 8/15
Cognito
8/8 ✓
LS: 0/8
RDS
50/50 ✓
LS: N/A

Real engines. Real protocols.

Floci doesn't just mock responses. For complex data services, it orchestrates real engines in Docker containers to guarantee 100% protocol fidelity.

λ
Lambda Runtimes

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

Isolated Execution
DB
RDS Engines

Spin up real PostgreSQL, MySQL, or MariaDB instances. Floci manages the lifecycle, handles snapshot/restore, and proxies JDBC traffic with full IAM database authentication support.

JDBC Wire Parity
R
ElastiCache (Redis)

A real Redis container is used for the data plane. Floci acts as a SigV4 proxy, allowing you to use real IAM roles to authenticate against your local Redis cluster.

RESP Protocol
E
Amazon ECS

Run containerized tasks locally. Floci orchestrates real Docker containers for your task definitions, providing a local control plane for task lifecycle management.

Container Fidelity
S
OpenSearch

Run real OpenSearch clusters. Floci manages the underlying engine nodes, providing a fully functional search backend that supports the complete OpenSearch API suite.

Search Fidelity
K
MSK (Kafka)

Orchestrate real Apache Kafka clusters via Redpanda. Perfect for testing event-driven architectures locally with the same streaming performance and semantics as Amazon MSK.

Streaming Parity
R
ECR Registry

A real OCI-compatible registry (registry:2) backs every repository. Push and pull with the stock docker client — including image-backed Lambda functions resolved automatically.

OCI Wire Parity
CodeBuild

StartBuild launches real Docker containers using the configured build image. Build output streams live to CloudWatch Logs and artifacts are uploaded to S3 via docker cp — works in Docker-in-Docker CI pipelines.

Real Build Execution
A
Athena

Query execution runs inside a container sidecar backed by DuckDB. SQL queries against S3 data run in an isolated Docker container — same execution model as AWS Athena, no mocking.

Query Fidelity
EC2 Instances

RunInstances launches real Docker containers mapped to AMIs. SSH key injection, UserData execution, and IMDS (IMDSv1 + IMDSv2, port 9169) with IAM credential serving — identical environment to production EC2.

IMDS + SSH Fidelity

Real IAM. Real security. Local.

Lambda, ElastiCache, RDS, ECS, EC2, MSK, EKS, OpenSearch, ECR, and CodeBuild all support full IAM authentication and SigV4 validation — just like production AWS.

Lambda

Function Execution with IAM

Functions run in real Docker containers with IAM role assumption and execution context. Full warm pool management, aliases, event source mappings, and Cognito Lambda triggers.

  • Docker-native execution (Node, Python, Java, Go, Ruby, .NET)
  • SQS, Kinesis, and DynamoDB Streams ESM triggers
  • EventSourceMapping provisioned via CloudFormation
  • Function URLs with IAM or public access control
  • Aliases, versions, concurrency controls
  • 25 Lambda operations supported
ElastiCache

Redis / Valkey with IAM Auth

Real Redis instance running in Docker, proxied through Floci with full IAM authentication via SigV4 token validation — identical to production.

  • Redis via Docker — real RESP protocol
  • IAM auth with SigV4 signature validation
  • Seamless cluster & replication group creation
  • Snapshot and restore support
  • 21/21 SDK tests passing
RDS

Postgres, MySQL & MariaDB with IAM

PostgreSQL, MySQL, and MariaDB databases running in Docker, with full IAM database authentication and JDBC wire protocol proxying. 50/50 SDK tests pass.

  • PostgreSQL, MySQL, and MariaDB via Docker
  • IAM database authentication over JDBC
  • Snapshot, restore, parameter groups
  • Multi-AZ configuration support
  • 50/50 SDK tests passing

45 AWS services. All of them free.

Every service is fully unlocked, no paid tier required. Services marked with ★ are exclusive to Floci — not available in LocalStack Community.

S3REST XML
SQSQuery / JSON
SNSQuery / JSON
DynamoDB + StreamsJSON 1.1
LambdaREST JSON
API Gateway RESTREST JSON
API Gateway v2 ★HTTP + WebSocket
IAMQuery (68+ ops)
STSQuery (7 ops)
Cognito ★JSON 1.1
KMSJSON 1.1
KinesisJSON 1.1
Secrets ManagerJSON 1.1
SSM Parameter StoreJSON 1.1
CloudFormationQuery
Step FunctionsJSON 1.1
ElastiCache ★Redis + IAM
RDS ★PG + MySQL + IAM
EventBridge + SchedulerJSON 1.1
CloudWatch LogsJSON 1.1
CloudWatch MetricsQuery
MSK (Kafka)REST JSON
ECSJSON 1.1
EC2Query
ACMJSON 1.1
ECRJSON 1.1
SES + SES v2Query / JSON
OpenSearchREST JSON
AppConfig + AppConfigDataREST JSON
AthenaDocker · REST JSON
GlueREST JSON
Data FirehoseREST JSON
Bedrock RuntimeREST JSON
EKSREST JSON
ELB v2 ★REST JSON
CodeBuild ★REST JSON
CodeDeploy ★REST JSON
Auto Scaling ★Query
AWS Backup ★REST JSON
Route 53 ★REST XML
Textract ★REST JSON

★ Services not available in LocalStack Community Edition

Azure Emulator
Also need local Azure? floci-az

Same native speed, same MIT license. Blob, Queue, Table, and Functions on a single port — no Azure account required.

Blob Queue Table Functions Port 4577 MIT
View on GitHub →
# All Azure services on :4577
docker run --rm -p 4577:4577 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  floci/floci-az:latest

Floci vs LocalStack Community

LocalStack required an auth token starting March 2026 and locked down their community edition. Floci fills that gap completely.

Feature Floci LocalStack Community
PriceFree foreverAuth token required
LicenseMITRestricted / BSL
Security updates✓ Active✗ Frozen (March 2026)
Startup time~24 ms~3.3 s
Idle memory~13 MiB~143 MiB
Docker image size~90 MB~1.0 GB
ECS / EKS / EC2 / RDS / ElastiCache✓ Real Docker engines✗ Not available
SDK compatibility100% (1,925/1,925)Partial

Up and running in 30 seconds.

One Docker command. All 45 services on port 4566. No configuration required.

Docker

# Pull and run — all services on :4566
docker run --rm -p 4566:4566 \
  floci/floci:latest

AWS CLI

# Point CLI at Floci
aws --endpoint-url http://localhost:4566 \
  s3 mb s3://my-bucket


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

docker-compose (Lambda + ElastiCache + RDS)

services:
  floci:
    image: floci/floci:latest
    ports:
      - "4566:4566"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./data:/app/data
    environment:
      FLOCI_STORAGE_MODE: hybrid
      FLOCI_SERVICES_DOCKER_NETWORK: myapp_default

Java SDK v2

S3Client s3 = S3Client.builder()
  .endpointOverride(URI.create("http://localhost:4566"))
  .region(Region.US_EAST_1)
  .credentialsProvider(
    StaticCredentialsProvider.create(
      AwsBasicCredentials.create("test", "test")))
  .build();

Real workflows. Local environment.

End-to-end recipes for services that go beyond a simple API call — no cloud account needed.

# Set up environment — no --endpoint-url needed after this
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


# 1 — Start Floci (Docker socket required for real k3s clusters)
docker run -d --name floci -p 4566:4566 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -u root floci/floci:latest


# 2 — Create an 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-00000001


# 3 — Pull kubeconfig (Floci returns a live kubeconfig for the k3s API)
aws eks update-kubeconfig --name dev-cluster

# 4 — Deploy a workload — same kubectl commands as prod
kubectl run nginx --image=nginx:alpine --port=80
kubectl expose pod nginx --type=NodePort --port=80
kubectl get pods,svc


# 5 — Clean up
aws eks delete-cluster --name dev-cluster
MIT License · No Auth Token · Open Source Forever

Light, fluffy, and always free.

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

Read the Docs → View on GitHub