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.
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.
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.
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.
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.
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.
Submit an EMR job and JaisCloud actually runs it — on Kubernetes or Docker. Catch serialization bugs and memory pressure locally before they hit CI.
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.
Full per-account resource isolation. Test cross-account IAM policies, STS AssumeRole, and ARN scoping locally — free, no Pro tier required.
Expose emulator metrics at /metrics with --metrics. Drop into any Grafana dashboard or CI alerting pipeline. Zero config, zero cost.
Full wire protocol implementations with real business logic, tested against the AWS SDK integration suite.
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/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 ./...
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.
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.
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.
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.
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.
Free. Open source. One binary. No subscription, no setup scripts, no Docker daemon.
View on GitHub →