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.
light | production | production-ha | |
|---|---|---|---|
| Intended use | Browse, evaluate, laptop and single-account dev | Adoptable single-AZ deployment | Adoptable high-availability deployment |
| VPC | Self-provisioned (public subnets, no NAT) | Bring your own | Bring your own |
| PrivateLink + private subnets | Omitted | Provisioned | Provisioned |
ECS AssignPublicIp | ENABLED (the only route to ECR without a NAT) | DISABLED | DISABLED |
| Backend scaling | 1 task, no autoscaling | 1-task floor + autoscaling | 2-task floor + autoscaling |
| RDS | Single-AZ | Single-AZ + RDS Proxy | Multi-AZ + RDS Proxy + secret rotation |
| RDS deletion protection | Off | On | On |
| RDS backup retention | 7 days | 7 days | 7 days |
| Agents | Assistant (code-config) | Assistant (code-config) | Assistant (code-config) |
| Agent network mode | PUBLIC | VPC | VPC |
| AgentCore Memory retention | 30 days | 90 days | 90 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.
Targets
Section titled “Targets”| Target | Selected by | What runs | Verify |
|---|---|---|---|
| Floci | AWS_ENDPOINT_URL set (e.g. http://localhost:4566) | Managed pieces (RDS, Cognito, S3, ECR) plus, on the AgentCore-enabled image, the agents wave | Health-gate skipped — the ALB to ECS data path is not emulated |
| Real AWS | AWS_ENDPOINT_URL unset | Everything, on live infrastructure | Full, 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.
What has been validated
Section titled “What has been validated”| Tier | Floci | Real AWS |
|---|---|---|
light | Full stack, 7/7 stacks CREATE_COMPLETE, including the code-config agents wave against the AgentCore-enabled image | Deployed 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.) |
production | Full stack against a BYO VPC — RDS Proxy, PrivateLink (NLB + VPC endpoint service), ACM + Route53, backend autoscaling, and the assistant code-config Runtime | Validated 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-ha | Full stack, 7/7 CREATE_COMPLETE — as production, plus Multi-AZ RDS, secret rotation, and a 2-task backend floor | Validated 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.