parlel/sts

A zero-dependency, in-process fake of AWS STS (Security Token Service). Speaks the AWS Query/XML wire protocol (API version 2011-06-15).

PropertyValue
Service namests
Port4729
ProtocolAWS Query (form POST /, XML)
API version2011-06-15
HealthcheckGET /_parlel/health
Account ID000000000000

Default connection

AWS_ENDPOINT_URL=http://127.0.0.1:4729
AWS_REGION=us-east-1
AWS_ACCESS_KEY_ID=parlel
AWS_SECRET_ACCESS_KEY=parlel

Any credentials are accepted.

Supported operations

OperationNotes
GetCallerIdentityReturns Account, Arn, UserId.
AssumeRoleReturns Credentials + AssumedRoleUser.
GetSessionTokenReturns temporary Credentials.
AssumeRoleWithWebIdentityReturns Credentials + SubjectFromWebIdentityToken.
GetFederationTokenReturns Credentials + FederatedUser.
DecodeAuthorizationMessageReturns a synthetic decoded authorization message.

All temporary access keys are generated with the ASIA prefix and include a secret, a session token, and an ISO-8601 expiration timestamp.

SDK example

import { STSClient, AssumeRoleCommand } from "@aws-sdk/client-sts";

const sts = new STSClient({
  region: "us-east-1",
  endpoint: "http://127.0.0.1:4729",
  credentials: { accessKeyId: "parlel", secretAccessKey: "parlel" },
});

const res = await sts.send(
  new AssumeRoleCommand({ RoleArn: "arn:aws:iam::000000000000:role/app", RoleSessionName: "demo" }),
);
console.log(res.Credentials.AccessKeyId); // ASIA...

Access via MCP / preview URL

When run inside parlel, STS is reachable through the pool's MCP bridge and any assigned preview URL. Point AWS_ENDPOINT_URL at the preview URL to drive it from an agent or remote client.

Surface coverage

This emulator faithfully replicates the API surface most application code and agents exercise. Anything below the supported lines is either an intentional design choice for a fast, zero-cost local emulator (✓ By design) or a candidate for a future release (⟳ Roadmap) — never a silent inaccuracy.

Legend: ✅ fully supported · ◐ accepted (stored, not strictly enforced) · ✓ by design · ⟳ on the roadmap.

AreaLimitation
ValidationRole trust policies and identity tokens are not verified.
CredentialsReturned credentials are not usable against real AWS.
Policy sizePackedPolicySize is a fixed synthetic value.
StateIssued sessions are tracked in memory and cleared on reset.
<!-- parlel:testenv:start -->

Configuration — test.env

Copy these into your test.env (used by the bridge sidecar flow). Tokens are Parlel's seeded test credentials — any non-empty value is accepted by the emulator, so you rarely need to change them. Swap in real credentials only when pointing at the live service in prod.env.

AWS_ACCESS_KEY_ID=parlel
AWS_SECRET_ACCESS_KEY=parlel
AWS_REGION=us-east-1
AWS_ENDPOINT_URL=http://parlel-bridge:4729
<!-- parlel:testenv:end -->