Free & Open Source · Apache 2.0

The AWS Emulator that
actually runs locally

Single Go binary. Zero runtime dependencies. Test S3, SQS, DynamoDB, Lambda, and 20+ AWS services on your laptop, in CI, or on Kubernetes — without touching real AWS.

Get Started Free View on GitHub
brew tap jaisrajms/homebrew-tap && brew install --cask jaiscloud-aws && jaiscloud-aws start
Why JaisCloud

Everything you need. Nothing you don't.

JaisCloud is a free AWS emulator built for developer velocity. One binary. No subscriptions. No dependencies. Real wire protocols so your existing SDK code works unmodified.

Single Static Binary

Download one file and start emulating AWS. No Python runtime, no Docker daemon, no pip install. Works on macOS, Linux, and Windows out of the box.

🔌

Exact AWS Wire Protocols

Implements the real AWS wire protocols — Query/XML, JSON/Target, REST/XML, REST/JSON — so any AWS SDK points at JaisCloud with zero code changes.

💾

Postgres Persistence (Free)

Durable state in PostgreSQL at no cost. LocalStack charges for this in Pro. Pass --dsn and every resource survives restarts, deployments, and CI re-runs.

📦

State Snapshots

Export full emulator state to a single tarball, import it on any machine in milliseconds. Share a production-like baseline across your team with one file.

🔥

Real Spark & EMR Execution

Submit an EMR job and JaisCloud actually runs it — on Kubernetes or Docker. Catch serialization bugs and memory pressure locally before they hit CI.

☸️

Kubernetes-Native

Lambda functions run as real K8s pods. EMR jobs submit as batch/v1 Jobs. JaisCloud is built for teams that deploy on Kubernetes, not just laptops.

👥

Multi-Account Isolation

Full per-account resource isolation. Test cross-account IAM policies, STS AssumeRole, and ARN scoping locally — free, no Pro tier required.

📊

Prometheus Metrics

Expose emulator metrics at /metrics with --metrics. Drop into any Grafana dashboard or CI alerting pipeline. Zero config, zero cost.

AWS Services

20+ AWS services, fully emulated

Full wire protocol implementations with real business logic, tested against the AWS SDK integration suite.

Full Implementations

Amazon S3 Amazon SQS Amazon DynamoDB Amazon SNS Amazon EventBridge AWS Lambda AWS IAM + STS AWS KMS AWS Secrets Manager AWS SSM Parameter Store AWS API Gateway AWS CloudFormation Amazon CloudWatch + Logs AWS Glue Data Catalog Amazon EMR on EC2 Amazon EMR on EKS Amazon Kinesis AWS Step Functions

Metadata & CRUD

Amazon EC2 Amazon Route 53 Amazon RDS Amazon ElastiCache Amazon ECS Amazon EKS Amazon ELBv2 Amazon ECR Amazon Redshift Amazon Athena AWS Config Kinesis Firehose

Up and running in 60 seconds

Install, start, and point your AWS SDK at JaisCloud. No configuration files, no credentials setup beyond a dummy key.

# Install on macOS
brew tap jaisrajms/homebrew-tap
brew install --cask jaiscloud-aws

# Or pull the Docker image
docker run -p 4566:4566 jaisraj/jaiscloud-aws:latest

# Start the AWS emulator
jaiscloud-aws start
# Listening on http://localhost:4566

# Point any AWS SDK at JaisCloud — set once, all calls route automatically
export AWS_ENDPOINT_URL=http://localhost:4566
export AWS_REGION=us-east-1
export AWS_ACCESS_KEY_ID=test
export AWS_SECRET_ACCESS_KEY=test

# Use exactly as you would with real AWS
aws s3 mb s3://my-bucket
aws sqs create-queue --queue-name my-queue
aws dynamodb list-tables
aws lambda invoke --function-name my-fn output.json

GitHub Actions (CI/CD)

# .github/workflows/test.yml
jobs:
  test:
    runs-on: ubuntu-latest
    services:
      jaiscloud:
        image: jaisraj/jaiscloud-aws:latest
        ports: ["4566:4566"]
        env:
          JAISCLOUD_EPHEMERAL: "true"
    steps:
      - uses: actions/checkout@v4
      - name: Wait for AWS emulator
        run: until curl -sf http://localhost:4566/_jaiscloud/health; do sleep 1; done
      - name: Run tests
        env:
          AWS_ENDPOINT_URL: http://localhost:4566
          AWS_REGION: us-east-1
          AWS_ACCESS_KEY_ID: test
          AWS_SECRET_ACCESS_KEY: test
        run: go test ./...
FAQ

Frequently asked questions

Is JaisCloud really free? What's the catch?

No catch. JaisCloud is Apache 2.0 open source. Every feature — Postgres persistence, snapshots, multi-account isolation, Prometheus metrics, Spark/EMR — ships in the free binary. There is no Pro tier, no license key, and no usage limit.

How does JaisCloud compare to LocalStack?

JaisCloud is a free LocalStack alternative built in Go. It ships as a single static binary (no Python, no Docker daemon), implements the actual AWS wire protocols, and includes features LocalStack gates behind its paid Pro tier for free. The key differentiator is real Spark/EMR execution — LocalStack simulates compute, JaisCloud actually runs the job.

Can I use my existing AWS SDK code without changes?

Yes. JaisCloud implements the exact AWS wire protocols, so any AWS SDK — Go, Python (boto3), Java, Node.js, .NET, Rust — works unmodified. Set AWS_ENDPOINT_URL=http://localhost:4566 and your code routes to JaisCloud automatically.

Does it work in GitHub Actions and Docker?

Yes. Pull jaisraj/jaiscloud-aws:latest as a service container in GitHub Actions or add it to your docker-compose.yml. The health endpoint /_jaiscloud/health lets you wait for readiness before running tests.

How do I persist state between test runs?

By default JaisCloud saves state to ~/.jaiscloud/state.json every 5 minutes and reloads it on startup. For durable persistence, pass --dsn "postgres://...". For CI where you want a clean slate, use --ephemeral or call POST /_jaiscloud/reset between test suites.

Start emulating AWS locally today

Free. Open source. One binary. No subscription, no setup scripts, no Docker daemon.

View on GitHub →