Skip to content
cloudemu

§ Documentation

Introduction

In-memory cloud emulation for AWS, Azure, and GCP — real SDKs, no cloud accounts.

cloudemu is a real cloud emulator for AWS, Azure, and GCP that runs entirely in memory. Point your real app, SDK, or CLI at it — running in-process, as a standalone server, or in Docker — and it answers like the real thing. No mocks, no cloud accounts, no bills; in-process calls complete in about 10 ms.

How it works#

cloudemu speaks the actual cloud wire protocols — S3 REST, DynamoDB JSON-RPC, EC2 query, ARM JSON, GCP REST, Smithy CBOR — so a real client can't tell it apart from s3.amazonaws.com. Run it however fits your stack, then point your existing client at the endpoint. That endpoint is the only thing that changes.

Run it, point real code at it#

Start it as a standalone server (or docker run the image) and aim any SDK or CLI — in any language — at the printed endpoint:

docker run -p 4566:4566 -p 4568:4568 -p 4569:4569 ghcr.io/stackshy/cloudemu

# your real app, SDK, or CLI — any language:
aws --endpoint-url http://localhost:4566 s3 mb s3://prod

See Standalone server for ports, flags, and the reset endpoint, and Integrating cloudemu for wiring it into an app you already have.

Or embed it in Go#

Skip the network and run cloudemu inside a Go process (or test) with httptest — same real SDK, only the endpoint changes:

main.go
cloud := cloudemu.NewAWS()
ts := httptest.NewServer(awsserver.New(awsserver.Drivers{
    S3: cloud.S3, DynamoDB: cloud.DynamoDB, /* ... */
}))

// Real aws-sdk-go-v2 client — only the endpoint changes.
client := s3.NewFromConfig(cfg, func(o *s3.Options) {
    o.BaseEndpoint = aws.String(ts.URL)
})
client.PutObject(ctx, &s3.PutObjectInput{ /* your real production code */ })

Comparison with alternatives#

ApproachCostSpeedReal SDKs
Real cloud (AWS/Azure/GCP)$$$Seconds
LocalStack / emulators$100 ms+✓ (Docker only)
Hand-rolled mocksFreeFast✗ — rewrite every call site
cloudemuFree~10 ms✓ — no rewrites; run in-process or standalone

What's included#

  • SDK-compatible HTTP server — real SDK wire protocols across AWS, Azure, and GCP, spanning dozens of services per cloud: compute, storage, NoSQL and relational databases, serverless, Kubernetes, networking, monitoring, logging, message queues, DNS, load balancing, cache, secrets, notification, event bus, IAM, container registry, resource discovery, and provider-specific generative AI (Bedrock/SageMaker/Vertex AI) and Databricks
  • Three cloud providers — AWS, Azure, and GCP in one binary
  • Realistic behaviors — state machines, auto-metrics, alarm evaluation, FIFO dedup, DLQs, TTL expiry
  • Chaos engineering — inject failures, latency spikes, and throttling in time-bounded windows
  • Network topology — evaluate real reachability across VPCs, peering, security groups, ACLs, and routes
  • Portable Go API — direct in-process calls covering every service category, an alternative to HTTP when you'd rather skip the wire protocol
  • Cross-cutting features — call recording, metrics, error injection, rate limiting, fake clock, latency simulation
  • Zero runtime dependencies

Where to go next#

On this page

On this page