cloudformation (parlel)

A zero-dependency, in-process fake of AWS CloudFormation. Speaks the AWS Query (XML) wire protocol, API version 2010-05-15.

FieldValue
Servicecloudformation
Port4564
ProtocolAWS Query / XML
HealthGET /_parlel/health
ResetPOST /_parlel/reset

Default connection

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

Any credentials are accepted.

Supported operations

OperationNotes
CreateStackParses a JSON template's Resources/Outputs/Parameters.
DescribeStacksReturns status, parameters, outputs, tags.
UpdateStackRe-applies template/parameters; status UPDATE_COMPLETE.
DeleteStackIdempotent; status DELETE_COMPLETE.
ListStacksOptional StackStatusFilter.
GetTemplateReturns the original template body.
CreateChangeSetCREATE or UPDATE; computes resource changes.
DescribeChangeSetReturns change list + parameters.
ExecuteChangeSetApplies the change set to the stack.
ListChangeSetsPer-stack change set summaries.
DescribeStackResourcesPer-resource detail.
ListStackResourcesResource summaries.
ListExportsOutputs with an Export.Name.
ValidateTemplateReturns template parameters + description.

SDK example

import { CloudFormationClient, CreateStackCommand } from "@aws-sdk/client-cloudformation";

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

await cfn.send(new CreateStackCommand({
  StackName: "demo",
  TemplateBody: JSON.stringify({ Resources: { B: { Type: "AWS::S3::Bucket" } } }),
}));

Access via MCP / preview URL

When running under the parlel pool, this service is reachable through the MCP gateway and the preview URL assigned to the pool. Use the same operations over the preview URL host; credentials are still ignored.

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
TemplatesJSON only (no full YAML parser).
IntrinsicsOnly simple { "Ref": "Param" } resolved in outputs.
ProvisioningResources are simulated, not actually created.
Drift / rollbackNot modeled (status always NOT_CHECKED).
Async statesAll operations complete synchronously.
<!-- 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_CLOUDFORMATION=http://parlel-bridge:4564
AWS_ENDPOINT_URL=http://parlel-bridge:4564
<!-- parlel:testenv:end -->