Home
Softono
miniblue

miniblue

Open source MIT Go
420
Stars
49
Forks
40
Issues
4
Watchers
3 weeks
Last Commit

About miniblue

Local Azure development. One binary. No account needed. 25+ emulated services for testing, CI and local dev.

Platforms

Web Self-hosted Cloud

Languages

Go

miniblue

miniblue

The free, open-source Azure emulator. Develop and test your Azure apps locally.

Go Version License CI Docker Docs

Local Azure development. One binary. No account needed.

Disclaimer: miniblue is an independent open-source project. It is not affiliated with, endorsed by, or associated with Microsoft or Azure.


Quick Start

# Homebrew
brew tap moabukar/tap && brew install miniblue

# Or Docker
docker run -p 4566:4566 -p 4567:4567 moabukar/miniblue:latest

Then interact with it:

azlocal health
azlocal group create --name myRG --location eastus
azlocal keyvault secret set --vault myvault --name db-pass --value secret123
azlocal storage blob upload --account myacct --container data --name file.txt --data "Hello!"

No Azure account or credentials needed.

What it does

27 Azure services emulated behind a single port. Works with Terraform, Pulumi, Azure SDKs, and curl.

Service Service Service
Resource Groups Blob Storage Table Storage
Queue Storage Key Vault Cosmos DB
Service Bus Azure Functions Virtual Networks
DNS Zones Container Registry Event Grid
App Configuration Managed Identity DB for PostgreSQL
DB for MySQL Azure SQL Database Azure Cache for Redis
Container Instances Kubernetes Service (AKS) Public IP Addresses
Network Security Groups Load Balancer Application Gateway
Storage Accounts

How it compares

LocalStack (AWS) MiniStack (AWS) Azurite (Azure) miniblue
Services 80+ 36 3 (storage only) 27
Docker image ~1GB ~200MB ~300MB ~8MB
Startup ~10s ~5s ~3s <1s
Real backends DynamoDB Local RDS, S3, SQS No Postgres, Redis, Docker
Terraform Yes Yes No Yes
License BSL MIT MIT MIT

Terraform

https://github.com/user-attachments/assets/eea72535-6eb7-419d-9f9c-6f42b80d5efc

bash scripts/trust-cert.sh  # one-time cert trust
provider "azurerm" {
  features {}
  metadata_host              = "localhost:4567"
  skip_provider_registration = true
  subscription_id            = "00000000-0000-0000-0000-000000000000"
  tenant_id                  = "00000000-0000-0000-0000-000000000001"
  client_id                  = "miniblue"
  client_secret              = "miniblue"
}

See examples/terraform/ for full examples including three-tier, serverless, and microservices scenarios.

Real Backends (optional)

Feature Env var
Real PostgreSQL databases POSTGRES_URL=postgres://user:pass@host:5432/db
Real Redis connectivity REDIS_URL=redis://host:6379
Real Docker containers (ACI) Docker daemon running
Real k3s cluster per AKS resource AKS_BACKEND=k3s (Docker daemon required)
File persistence PERSISTENCE=1
Postgres persistence DATABASE_URL=postgres://...

Real backends shell out to the host Docker daemon. The default moabukar/miniblue:latest image is FROM scratch and has no docker CLI, so use the binary install (Homebrew, releases page) or the full Docker target which adds it:

docker build --target=full -t miniblue:full .
docker run -v /var/run/docker.sock:/var/run/docker.sock \
  -p 4566:4566 -p 4567:4567 \
  -e AKS_BACKEND=k3s miniblue:full

miniblue tears down its k3s containers on graceful shutdown (SIGTERM/SIGINT/docker stop); orphans from a forced kill are reaped by the next start.

Configuration

Variable Default Description
PORT 4566 HTTP port
TLS_PORT 4567 HTTPS port
LOG_LEVEL info debug, info, warn, error
SERVICES all Comma-separated list to enable selectively
PERSISTENCE off Set to 1 for file-based persistence

Full configuration reference in the docs.

Documentation

Full docs at miniblue.io covering:

Contributing

See CONTRIBUTING.md. Each service is its own Go package under internal/services/.

Sponsors

CoderCo

miniblue is sponsored by CoderCo.

Want to sponsor this project? Reach out at [email protected].

License

MIT - see LICENSE.