Sunday, June 28, 2026
GitHubTwitter
GINBOK
HomeArticlesSearchAbout
|ENVIExplore
HomeArticlesSearchAbout
🇬🇧 English🇻🇳 Tiếng Việt
Articles›Open Source›Floci: The Free AWS Emulator That Shipped the Day LocalStack Died
Open Source

Floci: The Free AWS Emulator That Shipped the Day LocalStack Died

ClaudeMay 14, 20267 min read
🍿 Open Source · MIT Floci — Free AWS Emulator Drop-in replacement for LocalStack. No token. No gates. Forever free. 24ms Startup time 13 MiB Idle memory 90 MB Image size 41 AWS services github.com/floci-io/floci · 2.7k ⭐ · Built with Quarkus Native

The incident: March 2026

On March 15, 2026, LocalStack published a blog post titled "The Road Ahead for LocalStack". The Community Edition — the free tier that hundreds of thousands of developers had relied on for years — was being sunset. Security updates frozen. Auth token now mandatory. No migration path for CI pipelines that had been running docker run localstack/localstack without credentials for years.

CI pipelines broke overnight. Docker Compose stacks stopped working. Teams scrambled to either pay for LocalStack Pro or find an alternative. The alternative arrived the same day LocalStack's announcement dropped.

Floci 1.0.0 shipped on March 15, 2026.


What Floci is, precisely

Floci is a free, MIT-licensed, open-source AWS local emulator. It runs as a single Docker container, exposes all services on port 4566 (same as LocalStack), speaks the AWS wire protocol, and accepts any string as credentials. No account. No token. No telemetry. No feature gates.

It is built on Quarkus Native — the Java framework that compiles down to a native binary, eliminating JVM startup overhead entirely. The result is a ~40 MB binary that boots in under 25 ms. Named after cirrocumulus floccus, the cloud formation that looks exactly like popcorn.


The numbers

MetricFlociLocalStack CommunityDelta
Startup time~24 ms~3,300 ms137× faster
Idle memory~13 MiB~143 MiB11× less
Docker image~90 MB~1,000 MB11× smaller
Auth token required❌ Never✅ Mandatory (March 2026)—
Security updates✅ Active❌ Frozen—
LicenseMIT (permissive)Restricted—
Native binary✅ ~40 MB❌—
Stars (May 2026)4,200+—4.2k in ~7 weeks

The 137× startup difference is not academic. In a CI pipeline that spins up a fresh Floci container per test suite, 24 ms vs 3,300 ms means your test infrastructure is ready before the first test has even loaded. At 100 CI runs per day, that is 5.5 minutes recovered — per day, per developer.


Architecture

A single HTTP router (JAX-RS + Vert.x) handles all 35 services on port 4566. Services are split into three execution tiers:

Floci architecture diagram AWS SDK client sends HTTP requests to Floci's HTTP router on port 4566. The router dispatches to three tiers: stateless services (in-process, 20+ services), stateful services (S3 and DynamoDB with pluggable storage), and container services (Lambda, RDS, ElastiCache, ECS, MSK, EKS via real Docker containers). All tiers share a storage backend. Container services interface with Docker Engine directly. AWS SDK / CLI client :4566 HTTP router JAX-RS / Vert.x AWS wire protocol Floci — port 4566 Stateless services in-process · no container overhead SSM SQS / SNS IAM / STS KMS Cognito EventBridge Kinesis +12 services Step Functions CloudFormation CloudWatch · ACM Stateful services in-process · pluggable storage backend S3 DynamoDB DynamoDB Streams Container services real Docker containers · IAM + SigV4 auth Lambda RDS ElastiCache ECS MSK Docker engine (socket mounted) Storage memory · hybrid persistent · wal
Figure 1 — Floci internal architecture. Container services mount the Docker socket to spin up real containers; stateless and stateful services run in the native Quarkus binary.

The three-tier split is the key design decision. In-process services get zero network overhead. Container services get real engine fidelity — you're testing against actual PostgreSQL, actual Redis, actual Lambda runtimes, not a simulation of them.


Service coverage: what LocalStack Community didn't ship

ServiceFlociLocalStack Community
API Gateway v2 (HTTP API)✅ Full❌
Cognito (user pools, JWKS, auth flows)✅ Full❌
ElastiCache (Redis + IAM auth)✅ Real container❌
RDS (Postgres + MySQL + IAM auth)✅ Real container❌
MSK (Kafka via Redpanda)✅ Real container❌
ECS (clusters, tasks, services)✅ Real container❌
EKS (k3s, live kubeconfig)✅ Real container❌
DynamoDB Streams✅ Full + Lambda ESM⚠️ Partial
IAM (users, roles, groups, policies)✅ 65+ ops⚠️ Partial
KMS (sign, verify, re-encrypt)✅ Full⚠️ Partial
Kinesis (fan-out, split/merge)✅ Full⚠️ Partial
S3 Object Lock (COMPLIANCE mode)✅ Full⚠️ Partial
Athena (real SQL via DuckDB sidecar)✅ Upcoming❌
Glue Data Catalog✅ Full❌
SQS / SNS / SSM / Step Functions✅ Full✅ Full

The coverage gap isn't minor. If your stack uses Cognito for auth, RDS for storage, and MSK for event streaming — all things a real production AWS stack commonly does — you were effectively blocked from full local testing with LocalStack Community. Floci covers all three out of the box, with real containers.


Compatibility testing

Claims about emulator fidelity are easy to make. Floci backs them with an automated test suite:

ModuleLanguage / ToolTests
sdk-test-javaJava 17 · AWS SDK v2889
sdk-test-nodeNode.js · AWS SDK v3360
sdk-test-pythonPython 3 · boto3264
sdk-test-goGo · AWS SDK v2136
sdk-test-awscliBash · AWS CLI v2145
sdk-test-rustRust · AWS SDK86
compat-terraformTerraform v1.10+14
compat-cdkAWS CDK v2+17
Total1,911

Every release runs all 1,911 tests. The confidence level here is not "it worked on my machine" — it is continuous integration against 6 SDKs and 3 IaC tools simultaneously.


Storage modes

One often-overlooked detail: how Floci handles data persistence. Four modes, selectable per service via FLOCI_STORAGE_MODE:

ModeBehaviorBest forDurability
memoryEntirely in-RAM, lost on stopCI pipelines, ephemeral tests❌
hybridIn-memory + async flush every 5sLocal dev (default)✅
persistentFlush to disk on graceful shutdownSimple state preservation⚠️
walWrite-Ahead Log, every mutation persistedCritical state, debugging💎

For CI: use memory. For local dev: stay on hybrid (the default). The WAL mode is particularly useful when debugging timing-sensitive issues — you can replay the exact sequence of mutations that led to a failure.


Drop-in migration from LocalStack

If you are currently on LocalStack Community, the migration is a one-line change:

services:
  localstack:
-   image: localstack/localstack:latest
+   image: hectorvent/floci:latest
    ports:
      - "4566:4566"

No endpoint changes. No credential changes. No code changes. The AWS wire protocol is identical. Your boto3, SDK v2, SDK v3, and Terraform configs all point to http://localhost:4566 and use test/test — same as before.

For multi-container Docker Compose setups, add one environment variable so Floci returns URLs that resolve correctly between containers:

services:
  floci:
    image: hectorvent/floci:latest
    ports:
      - "4566:4566"
    environment:
      - FLOCI_HOSTNAME=floci
  my-app:
    environment:
      - AWS_ENDPOINT_URL=http://floci:4566
    depends_on:
      - floci

Decision tree: when to use Floci

Are you running local AWS development?
├── Yes
│   ├── Were you on LocalStack Community? → Switch today. One-line change.
│   ├── Starting a new project?           → Start with Floci. No setup friction.
│   └── On LocalStack Pro?
│       ├── Using Chaos Engineering or advanced Pro features? → Stay on Pro.
│       └── Just using standard services?                    → Evaluate Floci.
└── No → Not applicable.

The only reason to stay on LocalStack Pro at this point is if you rely on features that are explicitly Pro-only: Chaos Engineering, the LocalStack Web App, certain enterprise support tiers. For the vast majority of teams running S3, DynamoDB, SQS, Lambda, RDS, Cognito — Floci has everything, and it costs nothing.


Velocity: from 1.0.0 to 1.5.2 in 26 days

Floci shipped v1.0.0 on March 15, 2026. By April 10, it was at v1.5.2. What landed in those 26 days:

  • ECS service with real Docker container lifecycle
  • EC2 with 61 operations (VPCs, subnets, security groups, instances)
  • OpenSearch via real Docker container
  • EventBridge Scheduler (schedule groups, flexible time windows, DLQs)
  • SES v2 REST JSON protocol
  • Step Functions JSONata support + nested state machine execution
  • DynamoDB linearizable mutations under concurrent load
  • Cognito SRP-6a authentication
  • S3 Lambda notifications + presigned POST policies
  • API Gateway v2 management API + CloudFormation provisioning

That is not maintenance velocity. That is a project building fast because the community is pushing it and the architecture supports rapid iteration.


The repo

Open source, MIT licensed: github.com/floci-io/floci. Community Slack is active. Issues are triaged quickly. 4,200 stars in 7 weeks.

LocalStack's sunset was a forcing function. Floci is the outcome.

#aws#localstack#floci#docker#devops#open-source#local-development
← Back to Articles
GINBOK

Deep technical writing for developers and designers who care about the craft.

Content
  • All Articles
  • Engineering
  • Design
  • Product
Company
  • About Ginbok
  • Authors
  • Write for Us
  • Contact
Stay Updated
© 2026 Ginbok. All rights reserved.
PrivacyTerms