Sign inSign up

floci/floci-az

Sponsored OSS

By Floci

Updated about 10 hours ago

Light, fluffy, and always free - Azure Local Emulator

Image
Developer tools
3

50K+

floci/floci-az repository overview

floci-az

Floci AZ

Any Cloud. Locally.
Light, fluffy, and always free: the Azure local emulator

Latest Release Docker Pulls License: MIT Stars


A free, open-source local Azure emulator for development, testing, and CI. No account. No auth token. No feature gates.

Point your Azure SDK, CLI, or Terraform at http://localhost:4577. Azurite covers Blob, Queue, and Table on three ports. Floci AZ covers those plus Functions, Cosmos DB, Key Vault, Event Hubs, Service Bus, AKS, and more, all on one.

EmulatorCloudPort
flociAWS4566
floci-azAzure4577
floci-gcpGCP4588
floci-ociOCI4599

Quick Start

# docker-compose.yml
services:
  floci-az:
    image: floci/floci-az:latest
    ports:
      - "4577:4577"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock  # required for Azure Functions
docker compose up

The standard development storage connection string works out of the box:

DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02...;BlobEndpoint=http://localhost:4577/devstoreaccount1;QueueEndpoint=http://localhost:4577/devstoreaccount1-queue;TableEndpoint=http://localhost:4577/devstoreaccount1-table;

In dev auth mode credentials are not validated. Use any account name and key.

TLS: the Cosmos DB Java SDK and the azurerm Terraform provider both require HTTPS. Set FLOCI_AZ_TLS_ENABLED=true and HTTP and HTTPS are served on the same port via a protocol-sniffing proxy. The self-signed cert is generated at startup and fetchable from GET /_floci/tls-cert, so there is nothing to bundle or import manually.

Why Floci AZ?

CapabilityFloci AZAzuriteFunctions Core Tools
Blob, Queue, Table StorageYesYesNo
Azure FunctionsYesNoYes
Cosmos DB, Key Vault, App ConfigurationYesNoNo
Event Hubs, Service Bus, Event GridYesNoNo
Azure SQL, PostgreSQL, RedisYesNoNo
AKS, ACR, ACI, API ManagementYesNoNo
Entra ID, Managed Identity, GraphYesNoNo
Unified portYes (4577)NoNo
Storage modes (persistent, WAL, hybrid)YesNoNo
Native binaryYesNoYes

Against the official Azure Cosmos DB Emulator: that one is Windows-first, multi-gigabyte, and takes tens of seconds to start. Floci AZ runs Linux-native, starts only the requested Cosmos API engine, and backs each API with the engine that matches its protocol.

Services

ServiceRouting
Blob Storage (+ ADLS Gen2)/{account}/
Queue Storage/{account}-queue/
Table Storage/{account}-table/
Azure Functions/{account}-functions/
App Configuration/{account}-appconfig/
Cosmos DB (NoSQL)/{account}-cosmos/
Key Vault/{account}-keyvault/
Event HubsAMQP :5672, Kafka :9093
Service Bus/{account}-servicebus/ + AMQP :5673
Azure SQL DatabaseARM + /{account}-sql/
Azure Database for PostgreSQLARM (Microsoft.DBforPostgreSQL)
Azure Kubernetes ServiceARM (Microsoft.ContainerService)
API ManagementARM + /{account}-apim/{service}/
Virtual Network, Virtual MachinesARM (Microsoft.Network, Microsoft.Compute)
Azure Cache for RedisARM (Microsoft.Cache)
Container Registry, Container InstancesARM (Microsoft.ContainerRegistry, Microsoft.ContainerInstance)
Event GridARM + /{topic}-eventgrid/api/events
Azure Monitor / Log AnalyticsARM + Logs Ingestion + KQL query
Communication Services Email/emails:send + inspection mailbox
Managed IdentityARM + IMDS /metadata/identity/oauth2/token
Microsoft Entra ID, Microsoft Graph sliceOIDC / OAuth2 token issuance, service principal and group lookup

Cosmos DB multi-API engines: NoSQL runs embedded in-process with no Docker. MongoDB (mongo:7), PostgreSQL (citusdata/citus), Cassandra (scylladb/scylla), and Gremlin (tinkerpop/gremlin-server) are Docker-backed and disabled by default.

Real Docker where fidelity matters: Functions (mcr.microsoft.com/azure-functions/*), Event Hubs AMQP (Artemis), Event Hubs Kafka (Redpanda), Azure SQL (mssql/server:2025-latest), PostgreSQL (postgres:17-alpine), AKS (rancher/k3s), Redis (valkey/valkey:8-alpine), and ACR (registry:2).

Compatibility Testing

ModuleLanguage / ToolTests
sdk-test-javaJava 21252
sdk-test-pythonPython 3124
sdk-test-nodeNode.js72
compat-opentofuOpenTofu (azurerm)14
compat-azcliAzure CLI13
compat-terraformTerraform (azurerm)12
sdk-test-cppC++ 1710

497 automated compatibility tests across 4 SDKs, the Azure CLI, and 2 IaC tools.

Migrating from Azurite

Same account name and key. One endpoint change, and all three services consolidate onto port 4577.

# Before
BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;

# After
BlobEndpoint=http://localhost:4577/devstoreaccount1;QueueEndpoint=http://localhost:4577/devstoreaccount1-queue;TableEndpoint=http://localhost:4577/devstoreaccount1-table;

Configuration

VariableDefaultDescription
FLOCI_AZ_PORT4577Port exposed by the API
FLOCI_AZ_BASE_URLhttp://localhost:4577Base URL for returned service URLs
FLOCI_AZ_HOSTNAME(unset)Hostname in returned URLs and TLS cert SANs
FLOCI_AZ_TLS_ENABLEDfalseHTTP and HTTPS on the same port
FLOCI_AZ_STORAGE_MODEmemorymemory, persistent, hybrid, or wal
FLOCI_AZ_STORAGE_PATH/app/dataDirectory for persisted state
FLOCI_AZ_DOCKER_DOCKER_HOSTunix:///var/run/docker.sockSocket used to spawn function and sidecar containers

Storage mode can be overridden per service, for example FLOCI_AZ_STORAGE_SERVICES_BLOB_MODE=wal. Per-service enable flags use FLOCI_AZ_SERVICES_<SERVICE>_ENABLED.

Full reference: floci.io/floci-az

Image Tags

ChannelTag
Release, floatinglatest
Release, pinnedx.y.z
Nightlynightly, nightly-mmddyyyy

All images are native and multi-arch (linux/amd64 and linux/arm64). Stable releases ship on the 1st and 3rd Tuesday of each month. nightly tracks main.

Resources

License

MIT. Use it however you want.

Tag summary

Content type

Image

Digest

sha256:3a71953fb

Size

43.1 MB

Last updated

6 days ago

docker pull floci/floci-az

This week's pulls

Pulls:

5,997

Last week