> ## Documentation Index
> Fetch the complete documentation index at: https://docs.akua.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Why typed and sandboxed

> The two problems akua solves for Helm and Kustomize users: untyped templates and renderers with your machine authority

akua still runs Helm charts and Kustomize overlays, but it changes two things about how they are rendered. This page explains why, for package authors and for anyone evaluating whether akua's renders are safe to run on shared infrastructure.

## Templates have no types

A Helm chart is a text template over an untyped values tree, and a Kustomize overlay patches YAML against a built-in schema from Kubernetes 1.21. Mistakes surface when the API server rejects a manifest, or never:

* **Most charts ship no values schema.** Of the 300 most-starred Helm charts on [Artifact Hub](https://artifacthub.io) (queried October 12, 2026), 25.7% ship a `values.schema.json`, and most schemas that exist accept unknown keys, so a misspelled value is ignored.
* **Values are parsed as YAML 1.1.** `country: NO` reaches the chart as `false`, and `yes`, `on` and `y` as `true` ([helm#32504](https://github.com/helm/helm/issues/32504)).
* **Structure comes from indentation.** A wrong `nindent` can still be valid YAML, under the wrong key, and `helm template` does not validate its output against Kubernetes schemas.

In akua, a Package is a typed KCL program. Its inputs are a schema, its Kubernetes resources are typed against one pinned Kubernetes version, CustomResourceDefinitions become schemas too, and chart values are typed from the chart's `values.schema.json` when it has one. A typo fails the render with the file and line:

```text theme={null}
error[E2L23]: CompileError
---> File package.k:23:13: Cannot add member 'secretname' to schema 'CertificateSpec', did you mean '["secretTemplate", "secretName"]'?
```

[Typed resources →](/akua/typed-resources) shows how to get this for every Package.

## Rendering runs someone else's program

Helm and Kustomize include features that read host files (symlinks in directory charts, `file://` dependencies), make network requests (schema `$ref`, remote bases, remote resources) and run executables (plugins, post-renderers, `git`, `helm`). They run with the authority of whatever renders them: a laptop, a CI runner, a GitOps repo server. These features have produced a steady stream of advisories, for example:

| Advisory | What happened |
| - | - |
| [CVE-2022-24348](https://github.com/advisories/GHSA-63qx-x74g-jcr7) | Argo CD: path traversal through a Helm chart's values files exposed files on the repo server |
| [CVE-2023-25165](https://github.com/advisories/GHSA-pwcw-6f5g-gxf8) | Helm: `getHostByName` disclosed values through DNS lookups |
| [CVE-2025-53547](https://www.cve.org/CVERecord?id=CVE-2025-53547) | Helm: a crafted `Chart.yaml` and symlinked `Chart.lock` ran code on dependency update |
| [GHSA-9v9p-x54c-58gc](https://github.com/argoproj/argo-cd/security/advisories/GHSA-9v9p-x54c-58gc) | Argo CD: a Kustomize remote ref ran commands in the repo server (critical, October 2026) |

akua compiles Helm and Kustomize to WebAssembly and runs them, and the KCL runtime, inside Wasmtime. The sandbox has no host filesystem, network, environment variables or process spawning, and each render runs under memory caps and a CPU budget. Dependencies are fetched outside the sandbox, only from sources the Package declares, and pinned by digest in `akua.lock`.

## What the sandbox does not cover

* **The manifests themselves.** A Package can still render a privileged Pod or a cluster-admin binding. Gate what reaches a cluster with policy and admission control.
* **The first fetch of a dependency.** A digest pin proves you get the same bytes again, not that the first bytes were good. Cosign verification of dependencies is opt-in, through a `[signing]` key in `akua.toml`.
* **Wasmtime itself.** Wasmtime and akua's host code are the trusted computing base.

The upstream [security model](https://github.com/akua-dev/akua/blob/main/docs/security-model.md) lists every guarantee and limit, and [why.md](https://github.com/akua-dev/akua/blob/main/docs/why.md) has the full evidence and advisory list.

## Related topics

<CardGroup cols={2}>
  <Card title="Typed resources" icon="shield-halved" href="/akua/typed-resources">
    Kubernetes versions and CRDs as typed dependencies.
  </Card>

  <Card title="Package format" icon="cube" href="/akua/package-format">
    The `Input` schema, `@ui` annotations and composition.
  </Card>

  <Card title="Akua" icon="box" href="/akua">
    What akua is and how the platform uses it.
  </Card>

  <Card title="Error codes" icon="triangle-exclamation" href="/akua/errors">
    Every structured error, including the render budgets.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.