floci is a free, open source cloud infrastructure management project written in Java and released under MIT. It has 24,500 GitHub stars, 2,645 forks and 130 open issues, and was last pushed 6 hours ago. On this registry it ranks #6 of 43 tracked projects in Cloud Infrastructure Management, with 5 head-to-head comparisons available. It gained 204 stars over the last 3 tracked days.

What is floci?

Floci is a free, MIT-licensed, open-source local AWS emulator that gives developers, testers, and CI pipelines AWS-shaped services on their own machine without a cloud account, an auth token, or paid feature gates.

What it is

Floci is a Java-based emulator written for the AWS ecosystem. It runs AWS services locally and exposes them at http://localhost:4566, where any AWS SDK, the AWS CLI, Terraform, CDK, OpenTofu, or a test suite can point at it and keep working unchanged. Any region is accepted, and credentials may be any non-empty values unless stricter service-specific auth checks are explicitly enabled. It is the AWS member of the wider Floci emulator family, alongside floci-az for Azure on port 4577, floci-gcp for GCP on port 4588, and floci-oci for OCI on port 4599. The name comes from floccus, the cloud formation that looks like popcorn.

The concrete thing it replaces is LocalStack. Floci is documented as a drop-in replacement for it: an existing LocalStack setup can swap the container image and continue, which is the specific migration the project targets. It removes the need for a hosted or account-bound emulation service in local development and continuous integration, and it removes the feature gates and auth-token requirement that a developer would otherwise hit before running the first aws s3 mb command.

Key capabilities

  • Serves AWS service endpoints on a single port, http://localhost:4566, with the covered service set including EC2, ECS, S3, SQS, and DynamoDB among the repository topics and README examples.
  • Acts as a drop-in LocalStack replacement, so migration is an image swap rather than a rewrite of test or application configuration.
  • Ships a CLI with floci start to launch the emulator and floci env to export the local AWS environment variables into a shell.
  • Publishes an official container image, floci/floci:latest, runnable from a minimal compose.yaml that maps port 4566.
  • Provides a browser web console at http://localhost:4566/_floci/ui for inspecting resources in the running emulator.
  • Runs the console as a sidecar container (floci/floci-ui:latest by default) configured through FLOCI_SERVICES_UI_ENABLED, FLOCI_SERVICES_UI_IMAGE, FLOCI_SERVICES_UI_CONTAINER_NAME, FLOCI_SERVICES_UI_PORT (default 4500), and FLOCI_SERVICES_UI_KEEP_RUNNING_ON_SHUTDOWN.
  • Supports a documented console contract, so any console implementing it can be substituted by supplying an image name and listening on the port given in PORT.

Who uses it and how

  • Developers who want AWS behaviour on a laptop without a cloud account, an auth token, or network access to a real region.
  • CI pipelines that need emulated AWS services in a container rather than credentials and a billed account.
  • Teams already on LocalStack that want the same workflows with a self-hosted, MIT-licensed emulator and an image-name change.
  • Infrastructure-as-code users testing Terraform, CDK, or OpenTofu plans against endpoints on http://localhost:4566.
  • Test-suite authors using Testcontainers to bring emulated AWS services up alongside application tests, as the topic list indicates.
  • Users of the sibling emulators who want one consistent local cloud story across AWS, Azure, GCP, and OCI.

Getting started

The fastest route is the official CLI: run floci start, then eval $(floci env) to export the environment. Alternatively, deploy the floci/floci:latest image with docker compose up from a compose.yaml that maps 4566:4566, and set AWS_ENDPOINT_URL, AWS_DEFAULT_REGION, AWS_ACCESS_KEY_ID, and AWS_SECRET_ACCESS_KEY manually.

How it compares

The facts name LocalStack as the product Floci replaces. Floci is licensed under MIT, is self-hosted by definition since it runs on the developer's own machine, and documents itself as free with no account, no auth token, and no paid feature gates, so all emulated resources stay local and no data leaves the host. LocalStack is the incumbent being displaced, and Floci's stated advantage over it is that same free, ungated, drop-in behaviour rather than a different API surface.

When to use it — and when not

A self-hoster must run a Docker daemon, and enabling the web console additionally requires mounting /var/run/docker.sock, which grants the container control of the host Docker daemon. Anyone uncomfortable with that should set FLOCI_SERVICES_UI_ENABLED to false or run without the console. Note also that the former hectorvent/floci image no longer receives updates, so configurations must use floci/floci:latest, and the repository carries 130 open issues, which is worth weighing before adopting it as a critical CI dependency.

project readme (upstream, from github) — read inline

Any Cloud. Locally.
Light, fluffy, and always free
No account. No auth token. No feature gates. Just docker compose up.

Latest Release Build Status Docker Pulls Docker Image Size License: MIT GitHub Stars

Quick Start · Features · Services · SDKs · Testcontainers · Migration · Docs


What is Floci?

Floci is a free, open-source local AWS emulator for development, testing, and CI.

It gives you AWS-shaped services on your machine without requiring a cloud account, an auth token, or paid feature gates. Point your AWS SDK, CLI, Terraform, CDK, OpenTofu, or test suite at http://localhost:4566 and keep your existing workflows.

Already using LocalStack? Floci is a drop-in replacement: swap the image and keep going. See Migrating from LocalStack.

Floci is the AWS member of the Floci emulator family, named after floccus, the cloud formation that looks like popcorn.

Emulator Cloud Port
floci AWS 4566
floci-az Azure 4577
floci-gcp GCP 4588
floci-oci OCI 4599

Quick Start

The fastest way to run Floci is with the official CLI

floci start

Export the AWS environment variables:

eval $(floci env)

Use your existing AWS tools normally:

aws s3 mb s3://my-bucket

aws dynamodb create-table \
  --table-name demo-table \
  --attribute-definitions AttributeName=pk,AttributeType=S \
  --key-schema AttributeName=pk,KeyType=HASH \
  --billing-mode PAY_PER_REQUEST

aws dynamodb list-tables

Watch it run

This short demo shows the CLI flow: start Floci, export the local AWS environment, run standard AWS CLI commands, and stop the emulator.

https://github.com/user-attachments/assets/b55714dc-ef36-40ae-a734-cd2cadc288a8

All AWS services are available at http://localhost:4566. Any region works. Credentials can be any non-empty values unless you explicitly enable stricter service-specific auth checks.

Prefer Docker Compose?

Create a compose.yaml file:

services:
  floci:
    image: floci/floci:latest
    ports:
      - "4566:4566"

Start Floci:

docker compose up

Then configure your AWS environment manually:

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
Using the old hectorvent/floci image?

Update your image name:

# Before
image: hectorvent/floci:latest

# After
image: floci/floci:latest

The old hectorvent/floci repository no longer receives updates.

Web Console

Floci ships a browser console for inspecting the resources in your local emulator.

Open it at: http://localhost:4566/_floci/ui

Nothing runs at boot. The first request pulls the console image, starts it as a sidecar container on Floci's Docker network, hands it Floci's own reachable address plus the standard AWS environment, polls its health endpoint, and redirects the browser once it reports it can reach Floci. The sidecar's port is bound by Docker, so it needs no ports: entry of your own, and its logs are streamed into CloudWatch Logs under /floci/ui.

Starting a container needs the Docker socket:

services:
  floci:
    image: floci/floci:latest
    ports:
      - "4566:4566"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
Variable Default Description
FLOCI_SERVICES_UI_ENABLED true Enable the console sidecar
FLOCI_SERVICES_UI_IMAGE floci/floci-ui:latest Console image to run
FLOCI_SERVICES_UI_CONTAINER_NAME floci-ui Name of the sidecar container
FLOCI_SERVICES_UI_PORT 4500 Host port the console is published on
FLOCI_SERVICES_UI_KEEP_RUNNING_ON_SHUTDOWN false Leave the sidecar running when Floci stops

Running a different console

The console is not fixed to the one Floci ships. Any console implementing the Floci console contract runs with nothing but an image name: listen on the port in PORT, serve GET /api/health, talk to Floci at AWS_ENDPOINT_URL.

environment:
  FLOCI_SERVICES_UI_IMAGE: acme/my-console:1.0

A console that differs from the contract's defaults says so in its own io.floci.console.* image labels, so its operators do not have to. StackPort, for example, listens on 8080 rather than 4500; on an image that predates the labels, say it by hand:

environment:
  FLOCI_SERVICES_UI_IMAGE: davireis/stackport:latest
  FLOCI_SERVICES_UI_CONTAINER_NAME: floci-stackport
  FLOCI_SERVICES_UI_PORT: "8080"
  FLOCI_SERVICES_UI_INTERNAL_PORT: "8080"

Floci Dash is another. It honours PORT, so only the two things it does differ on need naming:

environment:
  FLOCI_SERVICES_UI_IMAGE: ghcr.io/ofsazib/floci-dash:latest
  FLOCI_SERVICES_UI_CONTAINER_NAME: floci-dash
  FLOCI_SERVICES_UI_ENDPOINT_ENV: FLOCI_URL
  FLOCI_SERVICES_UI_STATUS_PATH: /api/healthz

The endpoint itself is never configured by hand: Floci resolves its own reachable address at start time and injects it as AWS_ENDPOINT_URL.

Full reference: Web Console and Console Contract v1.

Features

Local AWS without the cloud account

Run AWS-compatible services locally without an AWS account, auth token, or paid feature gates.

Real Docker where fidelity matters

Lambda, RDS, Neptune, ElastiCache, MSK, ECS, EC2, EKS, OpenSearch, CodeBuild, and Managed Service for Apache Flink use real Docker-backed execution instead of shallow mocks.

Drop-in AWS compatibility

Point standard AWS clients at http://localhost:4566. Existing credentials, regions, SDKs, CLI commands, and IaC workflows stay familiar.

Terraform can provision AWS-shaped resources locally through Floci using the standard HashiCorp AWS provider. See the Terraform with Floci guide for provider configuration, resource examples, and optional emulated S3 state.

Fast enough for CI

The native image starts in milliseconds and keeps idle memory low, making it practical for local development and test pipelines.

Configurable persistence

Choose from in-memory, persistent, hybrid, and write-ahead log storage depending on the durability profile you need.

Why Floci?

LocalStack's community edition sunset in March 2026, requiring auth tokens and freezing security updates. Floci is the no-strings-attached alternative.

Capability Floci LocalStack Community
Auth token required No Yes
Security updates Yes Frozen
Startup time ~24 ms ~3.3 s
Idle m

readme truncated — read the full docs on github

Frequently asked questions

Is floci free to use?

floci is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does floci do?

Light, fluffy, and always free - The AWS Local Emulator alternative

What is floci written in?

floci is primarily written in Java. Its source is publicly available at https://github.com/floci-io/floci, and it has 24,500 GitHub stars.