Skip to content

Tiers & targets

loomster ships one source tree with three tiers. naming.tier selects the tier; no tier has its own files. Every difference below is a parameter resolved off the tier, so light and production-ha synthesize from the same composites.

A tier is orthogonal to where it deploys. Any tier can target Floci (a local emulator) or real AWS; the target is chosen by whether AWS_ENDPOINT_URL is set, nothing else in the code changes.

lightproductionproduction-ha
Intended useBrowse, evaluate, laptop and single-account devAdoptable single-AZ deploymentAdoptable high-availability deployment
VPCSelf-provisioned (public subnets, no NAT)Bring your ownBring your own
PrivateLink + private subnetsOmittedProvisionedProvisioned
ECS AssignPublicIpENABLED (the only route to ECR without a NAT)DISABLEDDISABLED
Backend scaling1 task, no autoscaling1-task floor + autoscaling2-task floor + autoscaling
RDSSingle-AZSingle-AZ + RDS ProxyMulti-AZ + RDS Proxy + secret rotation
RDS deletion protectionOffOnOn
RDS backup retention7 days7 days7 days
AgentsAssistant (code-config)Assistant (code-config)Assistant (code-config)
Agent network modePUBLICVPCVPC
AgentCore Memory retention30 days90 days90 days

Constant across every tier: the six components, cross-stack wiring, cost tags, the naming scheme, and always-on secret encryption (no opt-out). Adoption seams (provision | reference-existing | omit) are also tier-independent — a light deploy can reference an existing VPC, a production deploy can provision one. See Adoption.

Each tier also comes with seeded application defaults so a fresh deploy is usable out of the box: light defaults to a demo seed profile, the production tiers to foundation (config only). See Seeded defaults.

TargetSelected byWhat runsVerify
FlociAWS_ENDPOINT_URL set (e.g. http://localhost:4566)Managed pieces (RDS, Cognito, S3, ECR) plus, on the AgentCore-enabled image, the agents waveHealth-gate skipped — the ALB to ECS data path is not emulated
Real AWSAWS_ENDPOINT_URL unsetEverything, on live infrastructureFull, including the ECS health-gate

A third path, just local-up, is a laptop harness rather than a tier or target: it runs the app tier (frontend, backend, a reverse proxy standing in for the ALB) from a chant-generated docker-compose.yml, wired to Floci for the managed pieces. The result is a browsable, authenticated Loom with no AWS account. See Run Loom on your laptop.

TierFlociReal AWS
lightFull stack, 7/7 stacks CREATE_COMPLETE, including the code-config agents wave against the AgentCore-enabled imageDeployed end to end — the real ALB served the Loom SPA, backed by real RDS and Cognito, backend passed the ECS health-gate. (The agents wave itself is validated live on the production tiers below, where the assistant runtime reaches READY on Bedrock AgentCore.)
productionFull stack against a BYO VPC — RDS Proxy, PrivateLink (NLB + VPC endpoint service), ACM + Route53, backend autoscaling, and the assistant code-config RuntimeValidated end to end — 7/7 stacks CREATE_COMPLETE, all tier resources present, app served over HTTPS on a custom domain, and the Strands assistant runtime READY on Bedrock AgentCore. 15/15 screens validated behind real (MFA-enforced) Cognito via a minted throwaway-admin token — the foundation floor (agent role + authorizer) is seeded through that same token first
production-haFull stack, 7/7 CREATE_COMPLETE — as production, plus Multi-AZ RDS, secret rotation, and a 2-task backend floorValidated end to end — 7/7 stacks CREATE_COMPLETE, Multi-AZ RDS + the HostedRotationLambda rotation schedule live, app served over HTTPS, assistant runtime READY. Also proved multi-deployment: deployed as a second instance alongside production

Both production tiers deploy end to end on Floci against a bring-your-own VPC (the tier guard requires LOOM_VPC_ID + subnets and a LOOM_DOMAIN_NAME; a provisioned VPC is light-only). Every tier-distinguishing resource creates. Two things Floci can’t reflect: it runs RDS as a single container, so MultiAZ is requested in the template but reported false by the API; and the app data path (ALB → ECS) isn’t emulated, so the runtime health-gate is real-AWS-only.

Both production tiers have been applied to a live account — 7/7 stacks each, with Multi-AZ RDS and a live credential rotation on production-ha, and the assistant runtime READY on Bedrock AgentCore. What’s still emulator-only is real agent execution (invoke): the Floci invoke path is a canned stub, so genuine agent reasoning needs a live account. Screen-level checks behind real Cognito are proven live: the harness mints a throwaway admin against the deployed pool — completing the software-token MFA the production pool enforces — seeds the foundation floor through that token, then validates all 15 screens (see Authenticated screen validation). See Local caveats.