Azure on localhost:4577
A free, MIT-licensed Azure emulator with Azurite-compatible connection strings. Give your coding agents a real Azure to build and test against: no account, no subscription, no bill.
# Install floci-cli, then start floci-az curl -fsSL https://floci.io/install.sh | sh floci az start eval $(floci az env)
24 ms startup · ~13 MiB idle · MIT licensed · no Azure account
Homebrew, Windows and Docker optionsEvery way to run it.
One CLI installs and runs all four emulators: use Homebrew, the install script or PowerShell. Or skip the CLI and run the Docker image.
1 · Install floci CLI
brew install floci-io/floci/floci2 · Start the emulator
floci az start3 · Export env vars
eval $(floci az env) # exports AZURE_STORAGE_CONNECTION_STRING
4 · Upload a file
# Create a container az storage container create \ --name my-container \ --connection-string $AZURE_STORAGE_CONNECTION_STRING # Write a file and upload it echo "Azure locally: no bill, no drama." \ > hello-floci.txt az storage blob upload \ --container-name my-container \ --name hello-floci.txt \ --file hello-floci.txt \ --connection-string $AZURE_STORAGE_CONNECTION_STRING # Download it back and read it az storage blob download \ --container-name my-container \ --name hello-floci.txt \ --file hello-back.txt \ --connection-string $AZURE_STORAGE_CONNECTION_STRING cat hello-back.txt
Teach your coding agent
# Asks which agents to install it for npx skills add floci-io/floci-cli
The Floci skill teaches Claude Code, Codex, Cursor, Kiro and other coding agents to run the emulators with floci-cli.
Other useful commands
# Check status floci az status # View logs floci az logs # Stop the emulator floci az stop # Print individual SDK endpoint vars eval $(floci az env --format sdk-vars) # exports AZURE_STORAGE_BLOB_ENDPOINT, # AZURE_APP_CONFIGURATION_ENDPOINT, # AZURE_KEY_VAULT_ENDPOINT, ...
Start with persistence
floci az start --persist ./data # state survives container restarts
Diagnose issues
floci az doctor # checks Docker, Azure CLI, connectivity
One blob upload, four SDKs.
Each sample reads AZURE_STORAGE_CONNECTION_STRING, which eval $(floci az env) sets. On the Docker path, export it from the Quick Start.
import os
from azure.storage.blob import BlobServiceClient
client = BlobServiceClient.from_connection_string(
os.environ["AZURE_STORAGE_CONNECTION_STRING"])
container = client.get_container_client("my-container")
if not container.exists():
container.create_container()
blob = container.get_blob_client("hello.txt")
blob.upload_blob(b"Hello from floci-az!", overwrite=True)
29 Azure services. All of them free.
Wire-compatible with the official Azure SDKs and the Azurite emulator. Switch by changing the endpoint; your application code stays as it is.
Runs a Docker container Docker optional: mocked by default
Azurite's connection string, and the rest of Azure.
Blob, Queue and Table answer the way Azurite does, next to Event Hubs, Service Bus, Cosmos DB, Key Vault and more on port 4577.
More than Azurite
Azurite covers Blob, Queue and Table. floci-az serves those with the same account name and key, plus 26 more services.
AMQP for native clients
Event Hubs and Service Bus also listen on AMQP ports 5672 and 5673, so native SDK clients connect without a proxy layer.
Real database engines
Azure SQL and the PostgreSQL, MySQL and MariaDB flexible servers run the real engines in Docker containers.
Native-image speed
Starts in 24 ms and idles at ~13 MiB, fast enough to start a fresh emulator for every test run.
Switching from Azurite?
Keep the account name, the key and the connection string format. Point the endpoints at port 4577 instead of Azurite's 10000, 10001 and 10002, and Queue and Table move to their own paths on the same port.
DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;
DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://localhost:4577/devstoreaccount1;QueueEndpoint=http://localhost:4577/devstoreaccount1-queue;TableEndpoint=http://localhost:4577/devstoreaccount1-table;
Default credentials
The following fixed credentials match Azurite's defaults. All Azure SDK tooling expects these values for local development.
| Property | Value |
|---|---|
| Account Name | devstoreaccount1 |
| Account Key | Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw== |
| Blob endpoint | http://localhost:4577/devstoreaccount1 |
| Queue endpoint | http://localhost:4577/devstoreaccount1-queue |
| Table endpoint | http://localhost:4577/devstoreaccount1-table |
| Event Hubs AMQP | amqp://localhost:5672 |
| Service Bus AMQP | amqp://localhost:5673 |
| Event Hubs Kafka (opt-in) | localhost:9093 |
Azure, without the subscription.
MIT licensed and built for developer workflows. No Azure account, no subscription, no credit card. Just floci-cli and localhost.
- license
- MIT
- real credentials
- none
- cloud account
- none
- cost
- $0