The Five Pillars
Every default the framework ships is evaluated through five pillars — cost · security · scalability · observability · sustainability — and must be defensible on all five before it lands. This page is the decoder ring for “why is the default like that?” questions; nearly every answer is one of these five words.
Prefer the cheaper option whenever it doesn’t trade away another pillar:
- Lambdas default to arm64 (Graviton) — cheaper and faster for most workloads.
- S3 buckets default to SSE-S3, not SSE-KMS — encryption at rest without per-object KMS request charges; pass a key when you actually need a CMK.
- The budget stack exists but defaults off — it’s account-global, so it’s an explicit opt-in rather than a surprise.
Security
Section titled “Security”Secure-by-default, with the sharp edges structurally removed:
- Buckets block all public access and enforce TLS out of the box.
- Secret values never enter SSM or synthesized templates — only ARNs cross stack boundaries; values are resolved at runtime via IAM grants.
- Registry auth tokens live in
~/.npmrc, never in committed files (Install); a composer API surface with no auth choice is an error, never silently public. - A dedicated security perimeter (WAF, SES) is a stack of its own, on by default in the full starters.
Scalability
Section titled “Scalability”Serverless primitives, composed so nothing is a bottleneck by construction:
- Every queue gets a dead-letter queue by default — failure handling exists in every environment, not just the ones someone remembered to configure.
- Stacks deploy independently over SSM wiring — no lock-step deployment coupling as the system grows.
Observability
Section titled “Observability”If it can fail, you can see it:
- X-Ray tracing on by default; structured logging with explicit retention (30d dev / 90d prod) on every function.
- The observability stack wires error alarms, DLQ-depth alarms, an alert topic with chat adapters, and a dashboard as a unit.
- Even the CLI follows the pillar: errors are
[Axis]-prefixed and name exactly what’s wrong, and invalid inputs throw rather than silently default.
Sustainability
Section titled “Sustainability”The lowest-footprint choice that does the job:
- arm64 compute and scale-to-zero serverless services keep the energy and cost floor at zero when idle.
- This documentation site practices it too: static zero-JS-by-default output, with the API reference generated from source so the docs maintain themselves instead of rotting.
Using the lens yourself
Section titled “Using the lens yourself”The pillars are for your decisions too. When you extend Axis — a new stack, a new construct default, a passthrough override — run the same five questions. “DLQ on by default” is the canonical worked example: observability and scalability improved at near-zero cost, with no security or sustainability downside. Defaults that survive all five questions tend to survive production.
© 2026 Axis Tech. Powered by axis-tech.co.