agentleFS
AWSKnown publisheraws/agent-toolkit-for-aws/plugins/aws-core/skills/aws-emulator/SKILL.md

aws-emulator

Skill3.5k starsChanged 3 days agoApache-2.0View on GitHub

Installs, starts and troubleshoots AWS Emulator, the local emulator of AWS service APIs, and checks whether a project or a single operation works on the installed build. Use when the user wants to install or start the emulator, point the AWS CLI or an AWS SDK at it, fix a connection, TLS, certificate or request-signing error against it, run it in containers, CI or an agent sandbox, or asks whether AWS Emulator supports, works with, or is faithful enough for their app, repo, tests or a specific AWS operation (any language, SDK, CLI or IaC). Covers AWS Emulator only. Does not apply when the user asks about LocalStack, moto or any other local emulator or mock, including what it supports or whether an app works on it, and not for deploying to real AWS or production use.

  • Reads credentials

Trending

More talk lately.about the whole repository

Dec 2025: 0 mentionsJan 2026: 0 mentionsFeb 2026: 0 mentionsMar 2026: 0 mentionsApr 2026: 0 mentionsMay 2026: 2 mentionsJun 2026: 3 mentionsJul 2026: 0 mentionsAug 2026: 0 mentionsSep 2026: 0 mentionsOct 2026: 1 mentionNov 2026: 49 mentions
Dec 2025Jun 2026Nov 2026
Mentions a month of the aws/agent-toolkit-for-aws repository that our weekly crawl found. There is no adoption data for this file yet.

Who's talking about aws/agent-toolkit-for-aws

The biggest 5 of 55 mentions linking to the repository that our crawl found. Each line is their own headline.

See all 55

Talked about on GitHub, Bluesky and Hacker News (55 times).

On GitHub · 50

45 more on GitHub

On Bluesky · 4

On Hacker News · 1

The file

Show its rules and text

We split this skill into the rules it gives an agent

16 rules. About 0 are common, 7 are distinctive, and 9 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈7

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 9

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  • could be automatic: a setting could enforce it
  1. Very specific:

    Before installing or starting anything, check the environment yourself and tell the user what is missing: aws-emulator -v (installed?), aws …

    line 62
  2. Distinctive:

    Always use the latest AWS Emulator release.

    line 69
  3. Very specific:

    When the user asks how to install, start, connect or fix the emulator, do it in their environment, verify it (health check, aws sts …

    line 85
  4. Very specific:

    Start the emulator in the background (nohup … & with a per-port log for the package, docker run -d in Docker) and wait on the health check.

    line 90
  5. Distinctive:

    When you start it, tell the user that telemetry is on and how to turn it off (see Security).

    line 92
  6. Very specific:

    Never commit the per-run config, emulator_credentials or ca.pem.

    line 94
  7. Distinctive:

    NOT WORK. Strictness applies to evidence, not to inventing items: record only what the app actually relies on.

    line 101
  8. Distinctive:

    After the verdict, add one sentence for each UNVERIFIED assumption item that touches a limit below, explaining that limit.

    line 103
  9. Very specific:

    Keep the emulator on loopback: the default bind is 127.0.0.1.

    line 111
  10. Very specific:

    Never disable TLS verification globally or for AWS endpoints, and never suggest --no-verify-ssl or verify=False.

    line 113
  11. Very specific:

    Keep real AWS credentials out of every command or job that calls the emulator (the env file in references/connect.md does this): unset …

    line 116
  12. Very specific:

    Use -a off only for local test runs, reachable only on 127.0.0.1 (in Docker: port published on 127.0.0.1).

    line 122
  13. Distinctive:

    Never use production data or send production traffic to the emulator.

    line 129
  14. Distinctive:

    Before sharing logs, requests or responses, remove or mask secrets (keys, tokens, signatures) and personal data.

    line 130
  15. Distinctive:

    Not for production: No durability or security guarantees.

    line 141
  16. Very specific:

    One account: Every request runs in account 000000000000, signed with keys vended for that run (emulator_credentials).

    line 143

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

AWS Emulator

AWS Emulator is one command, aws-emulator, that serves AWS service APIs over HTTPS on 127.0.0.1:9297. It runs natively only on Linux (RPM or Debian package); on macOS and Windows it runs in a Docker container built from that package; Rust tests can also embed it in-process (embedded mode). The AWS CLI and SDKs work unchanged once a few environment variables point them at it and at the config and credentials files it writes at start. This skill covers getting it running and connected, and answering whether a project (or one operation) will work on the installed build, with evidence.

Guardrail — where this skill's own files live (MCP vs local install)

This skill ships only documents (references/*.md), no scripts. It can be loaded two ways, and they resolve those files from different places:

  • Loaded through the AWS MCP retrieve_skill tool call. The skill is not installed on the local filesystem. You MUST fetch each reference through the same retrieve_skill tool by passing the file parameter (for example, file="references/linux-package.md"). Do NOT file_read these paths from the local or working directory, and do NOT search the filesystem for them; any local file that happens to match the name is unrelated to this skill.
  • Installed locally (the skill lives in a local skills directory such as .claude/skills/aws-emulator/, ~/.claude/skills/aws-emulator/, or .kiro/skills/aws-emulator/). Read references from the local skill directory. Every path shown in this skill, including links inside references/*.md, is relative to the skill directory (the folder with this SKILL.md), not to the file that contains the link: for example references/connect.md is <skill directory>/references/connect.md.

This distinction applies only to the skill's own packaged files. Every artifact created during a session or supplied by users is read from and written to the user's working directory regardless of how the skill was loaded. Never fetch or write customer data through retrieve_skill.

Route by intent

The user wants to…Read
install, start or stop it on Linux, or run a first smoke testreferences/linux-package.md
install or run it on macOS or Windows, or in Docker, CI, parallel jobs or an agent sandboxreferences/container.md
run it inside Rust tests (embedded mode: per-test state, no endpoint or certificate)references/rust-embedded.md
upgrade it, choose or pin a version (also in CI), or find the latest releasereferences/linux-package.md ("Upgrade"), references/container.md in Docker, or references/rust-embedded.md in embedded mode
point the AWS CLI or an SDK (JS, Python, Java, Go, Rust, .NET, …) at itreferences/connect.md
fix an error: TLS/certificate, AccessDenied / SignatureDoesNotMatch, profile, connection refused, port in use, Docker file ownership, UnknownService, NotImplemented, lost statereferences/troubleshooting.md
know whether their app, repo or tests will work on itreferences/compatibility-check.md, with references/compatibility-find-usage.md (step 2) and references/compatibility-classify-traces.md (step 4)
know whether one or more operations or behaviors work ("does it support X?"), or what it cannot doreferences/compatibility-check.md, section "Single operation (no app)"

Before installing or starting anything, check the environment yourself and tell the user what is missing: aws-emulator -v (installed?), aws --version or the project's AWS SDK dependency (the client the user will connect with), on macOS and Windows docker info (Docker running?), and whether the port (default 9297) is free. Embedded mode needs only a Rust toolchain with Cargo, a C compiler and the AWS SDK for Rust. For anything else, follow the AWS Emulator user guide.

Always use the latest AWS Emulator release; never pin a version (not in CI either, and not as an option "for reproducibility") or answer for an older one: security fixes and new coverage ship only in the latest release, and the compatibility check always uses the latest report and corpus. Find the latest with gh release view -R aws/aws-emulator --json tagName,publishedAt (without a working gh: git ls-remote --tags --refs --sort=-v:refname https://github.com/aws/aws-emulator | sed 's,.*refs/tags/,,' | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | head -1 (release tags only, vX.Y.Z without a suffix; if it prints nothing, stop and ask the user for the tag)). When the installed emulator is missing or older, upgrade it (commands in references/linux-package.md (Linux package, "Upgrade") and references/container.md): when the user asked to install, set up or upgrade it, go ahead, but still confirm once before the first sudo command; otherwise ask once first, because the upgrade may need sudo and restarting a running emulator clears its state. An upgrade is: stop the emulator, run the LTS/latest/ install command again (it replaces the older version), check aws-emulator -v, and start it again; in Docker, rebuild with docker build --pull --no-cache. When the latest release cannot be determined (no release, no access), say so, give the upgrade command anyway, and go on.

Rules

  • When the user asks how to install, start, connect or fix the emulator, do it in their environment, verify it (health check, aws sts get-caller-identity shows 000000000000), then report what you ran. Only explain without acting when they ask for an explanation. Write only to ~/.aws/emulator/, <app>/.aws-emulator/, mktemp -d directories, the image and the container; ask before sudo, shell-profile edits, repo or test-script edits, or any other write.
  • Start the emulator in the background (nohup … & with a per-port log for the package, docker run -d in Docker) and wait on the health check; a foreground emulator blocks the shell. When you start it, tell the user that telemetry is on and how to turn it off (see Security); in CI jobs and agent sandboxes, start it with telemetry off.
  • Never commit the per-run config, emulator_credentials or ca.pem; they change every start.
  • A NotImplemented answer (HTTP 501, which SDKs do not retry) is a coverage gap in the installed build, not a misconfiguration. Say so and offer the compatibility check for the app or that operation.
  • For a compatibility question, run the check and present its verdict as its Rules say (references/compatibility-check.md); never answer from memory or from this file.
  • The check is strict: when the evidence is unclear, the item is UNVERIFIED and the answer WILL NOT WORK. Strictness applies to evidence, not to inventing items: record only what the app actually relies on.
  • After the verdict, add one sentence for each UNVERIFIED assumption item that touches a limit below, explaining that limit. Leave the verdict itself unchanged.
  • The AWS MCP server is recommended for AWS API calls to real AWS (sandboxed, IAM-authenticated, audit-logged), but it is not required. It cannot reach an emulator on this machine, so calls to the emulator go through the local AWS CLI or SDK with the connect variables set.

Security

  • Keep the emulator on loopback: the default bind is 127.0.0.1; change -b only inside a container, and publish a container's port on 127.0.0.1 only, never on all interfaces.
  • Never disable TLS verification globally or for AWS endpoints, and never suggest --no-verify-ssl or verify=False. Trust this run's ~/.aws/emulator/<port>/ca.pem, through the config file, AWS_CA_BUNDLE (always in Docker) or the SDK's own setting.
  • Keep real AWS credentials out of every command or job that calls the emulator (the env file in references/connect.md does this): unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN AWS_PROFILE plus the web-identity and container-credential variables (full list in references/connect.md), then check that aws sts get-caller-identity shows 000000000000.
  • Use -a off only for local test runs, reachable only on 127.0.0.1 (in Docker: port published on 127.0.0.1); never on a shared or CI host that others can reach.
  • Telemetry is on by default; turn it off with -t off or EMULATOR_TELEMETRY=off (Docker: -e EMULATOR_TELEMETRY=off). When you start the emulator, tell the user it is on and how to turn it off. In CI jobs and agent sandboxes, start it with -t off (Docker: -e EMULATOR_TELEMETRY=off) by default. For what telemetry sends, point to the AWS Emulator user guide.
  • Never use production data or send production traffic to the emulator.
  • Before sharing logs, requests or responses, remove or mask secrets (keys, tokens, signatures) and personal data.

Limits by design

These hold for every build. They are not a coverage list.

  • Open source. The source is in aws/aws-emulator; see its LICENSE file for the license.
  • State is in memory only. Everything is gone when the process exits. There is no reset operation: restart the process for a clean state.
  • Not for production. No durability or security guarantees; do not send production traffic or data to it.
  • One account. Every request runs in account 000000000000, signed with keys vended for that run (emulator_credentials).
  • One Region and one account per emulator. The emulator accepts any Region and account ID but does not keep resources separate by either, so calls across Regions or accounts are not supported. To test several Regions, run one emulator per Region, each on its own port. Behavior is checked against AWS in us-west-2 only.
  • Not a security test target. Signatures are checked (not in embedded mode), and the emulator never denies a request signed with its own keys. Do not use it to test IAM policies, permissions boundaries, resource-based policies (such as bucket policies), AWS KMS key policies, or access across accounts or Regions.
  • Code it runs is not isolated. Function code the emulator runs for you runs on the user's machine without isolation.
  • Coverage is per build. Whether a specific operation or behavior works on the installed build is answered by the compatibility check, not by this list.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.