Light, fluffy, and always free - Azure Local Emulator
50K+
Any Cloud. Locally.
Light, fluffy, and always free: the Azure local emulator
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.
| Emulator | Cloud | Port |
|---|---|---|
| floci | AWS | 4566 |
| floci-az | Azure | 4577 |
| floci-gcp | GCP | 4588 |
| floci-oci | OCI | 4599 |
# 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
azurermTerraform provider both require HTTPS. SetFLOCI_AZ_TLS_ENABLED=trueand HTTP and HTTPS are served on the same port via a protocol-sniffing proxy. The self-signed cert is generated at startup and fetchable fromGET /_floci/tls-cert, so there is nothing to bundle or import manually.
| Capability | Floci AZ | Azurite | Functions Core Tools |
|---|---|---|---|
| Blob, Queue, Table Storage | Yes | Yes | No |
| Azure Functions | Yes | No | Yes |
| Cosmos DB, Key Vault, App Configuration | Yes | No | No |
| Event Hubs, Service Bus, Event Grid | Yes | No | No |
| Azure SQL, PostgreSQL, Redis | Yes | No | No |
| AKS, ACR, ACI, API Management | Yes | No | No |
| Entra ID, Managed Identity, Graph | Yes | No | No |
| Unified port | Yes (4577) | No | No |
| Storage modes (persistent, WAL, hybrid) | Yes | No | No |
| Native binary | Yes | No | Yes |
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.
| Service | Routing |
|---|---|
| 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 Hubs | AMQP :5672, Kafka :9093 |
| Service Bus | /{account}-servicebus/ + AMQP :5673 |
| Azure SQL Database | ARM + /{account}-sql/ |
| Azure Database for PostgreSQL | ARM (Microsoft.DBforPostgreSQL) |
| Azure Kubernetes Service | ARM (Microsoft.ContainerService) |
| API Management | ARM + /{account}-apim/{service}/ |
| Virtual Network, Virtual Machines | ARM (Microsoft.Network, Microsoft.Compute) |
| Azure Cache for Redis | ARM (Microsoft.Cache) |
| Container Registry, Container Instances | ARM (Microsoft.ContainerRegistry, Microsoft.ContainerInstance) |
| Event Grid | ARM + /{topic}-eventgrid/api/events |
| Azure Monitor / Log Analytics | ARM + Logs Ingestion + KQL query |
| Communication Services Email | /emails:send + inspection mailbox |
| Managed Identity | ARM + IMDS /metadata/identity/oauth2/token |
| Microsoft Entra ID, Microsoft Graph slice | OIDC / 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).
| Module | Language / Tool | Tests |
|---|---|---|
sdk-test-java | Java 21 | 252 |
sdk-test-python | Python 3 | 124 |
sdk-test-node | Node.js | 72 |
compat-opentofu | OpenTofu (azurerm) | 14 |
compat-azcli | Azure CLI | 13 |
compat-terraform | Terraform (azurerm) | 12 |
sdk-test-cpp | C++ 17 | 10 |
497 automated compatibility tests across 4 SDKs, the Azure CLI, and 2 IaC tools.
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;
| Variable | Default | Description |
|---|---|---|
FLOCI_AZ_PORT | 4577 | Port exposed by the API |
FLOCI_AZ_BASE_URL | http://localhost:4577 | Base URL for returned service URLs |
FLOCI_AZ_HOSTNAME | (unset) | Hostname in returned URLs and TLS cert SANs |
FLOCI_AZ_TLS_ENABLED | false | HTTP and HTTPS on the same port |
FLOCI_AZ_STORAGE_MODE | memory | memory, persistent, hybrid, or wal |
FLOCI_AZ_STORAGE_PATH | /app/data | Directory for persisted state |
FLOCI_AZ_DOCKER_DOCKER_HOST | unix:///var/run/docker.sock | Socket 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
| Channel | Tag |
|---|---|
| Release, floating | latest |
| Release, pinned | x.y.z |
| Nightly | nightly, 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.
MIT. Use it however you want.
Content type
Image
Digest
sha256:3a71953fb…
Size
43.1 MB
Last updated
6 days ago
docker pull floci/floci-azPulls:
5,997
Last week