Skip to content
ellingwood.dev

LocalCloud

A wire-compatible AWS and GCP cloud emulator that runs as a single Go binary. Point your existing SDKs at localhost and develop without an internet connection.

Go SQLite React AWS GCP

Overview

LocalCloud is a local cloud emulator that provides wire-compatible implementations of AWS and GCP services. It runs as a single Go binary — start it with localcloud start, point your existing SDKs at localhost:4566, and develop without an internet connection or cloud account.

Your existing tools work as-is. Boto3, AWS SDK v2, the gcloud CLI — just change the endpoint URL. Everything else stays the same.

Supported Services

AWS (9 services): S3, VPC/EC2, Route53, CloudFront, DynamoDB, SQS (standard + FIFO), SNS, EventBridge, and ElastiCache (Valkey/Redis-compatible via RESP protocol).

GCP (8 services): Cloud Storage, VPC Networks, Cloud DNS, Cloud CDN, Firestore, Pub/Sub, Memorystore, and Eventarc.

Architecture

LocalCloud uses a plugin architecture where every service implements the same interface, registers at compile time via init(), and gets its routes mounted automatically. Adding a new service means implementing the interface and adding one import line.

Key design decisions:

  • Single binary — all 17 services, one process, one port
  • SQLite with WAL mode for all metadata storage
  • Filesystem-backed object storage for S3 and GCS
  • Native RESP protocol server for ElastiCache, so Redis clients connect without any adapter
  • SigV4 auth parsing for multi-tenant isolation without requiring shared secrets
  • Multi-provider routing — the gateway detects AWS vs GCP requests from headers and URL patterns, routing through a single port

Admin UI

LocalCloud ships with a React admin dashboard that provides visibility into everything running locally. Browse S3 buckets, send SQS messages, inspect DynamoDB tables, view request logs, and manage organizations from your browser.

Getting Started

# Clone and build
git clone https://github.com/ellingwood/localcloud.git
cd localcloud
go build -o localcloud ./cmd/localcloud

# Start the emulator
./localcloud start

# Use your existing SDKs — just change the endpoint
aws --endpoint-url http://localhost:4566 s3 mb s3://my-bucket

Related Posts