From 9d79c907da9384a554b79371938ac00ffa8ae026 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Robin=20Br=C3=A4mer?=
<22003767+robinbraemer@users.noreply.github.com>
Date: Thu, 13 Aug 2026 23:44:57 +0200
Subject: [PATCH] chore: update package repository coordinate
Rationale: the source repository is now akua-dev/akuapkg, so release assets, package metadata, installers, generated site links, and contributor instructions must all use the canonical coordinate rather than rely on redirects.
Tested: task site:gen; task release:check-workflows.
---
CONTRIBUTING.md | 2 +-
Cargo.toml | 2 +-
README.md | 8 ++++----
SECURITY.md | 2 +-
crates/akua-napi/loader.js | 2 +-
crates/akua-napi/npm/darwin-arm64/package.json | 2 +-
crates/akua-napi/npm/darwin-x64/package.json | 2 +-
.../akua-napi/npm/linux-arm64-gnu/package.json | 2 +-
.../npm/linux-arm64-musl/package.json | 2 +-
.../akua-napi/npm/linux-x64-gnu/package.json | 2 +-
.../akua-napi/npm/linux-x64-musl/package.json | 2 +-
.../akua-napi/npm/win32-x64-msvc/package.json | 2 +-
crates/akua-napi/package.json | 2 +-
crates/akua-native-engines-npm/package.json | 2 +-
crates/akuapkg-cli/Cargo.toml | 2 +-
crates/helm-engine-wasm/Cargo.toml | 2 +-
crates/kustomize-engine-wasm/Cargo.toml | 2 +-
docs/agent-usage.md | 6 +++---
docs/releasing.md | 12 ++++++------
packages/sdk/README.md | 2 +-
packages/sdk/package.json | 4 ++--
packages/sdk/src/mod.ts | 2 +-
scripts/aur/akuapkg-bin/PKGBUILD | 6 +++---
scripts/check-release-workflows.sh | 4 ++--
scripts/gen-error-pages.ts | 2 +-
scripts/gen-example-pages.ts | 2 +-
scripts/gen-landing.ts | 6 +++---
scripts/gen-start-page.ts | 2 +-
scripts/install.ps1 | 6 +++---
scripts/install.sh | 6 +++---
scripts/site/layout.ts | 2 +-
scripts/site/markdown.ts | 4 ++--
site/cli/add.html | 2 +-
site/cli/api.html | 2 +-
site/cli/attest.html | 2 +-
site/cli/audit.html | 2 +-
site/cli/bench.html | 2 +-
site/cli/check.html | 2 +-
site/cli/cov.html | 2 +-
site/cli/deploy.html | 2 +-
site/cli/dev.html | 2 +-
site/cli/diff.html | 2 +-
site/cli/eval.html | 2 +-
site/cli/export.html | 2 +-
site/cli/fmt.html | 2 +-
site/cli/help.html | 2 +-
site/cli/index.html | 6 +++---
site/cli/infra.html | 2 +-
site/cli/init.html | 2 +-
site/cli/inspect.html | 2 +-
site/cli/lint-cli.html | 10 +++++-----
site/cli/lint.html | 2 +-
site/cli/login.html | 2 +-
site/cli/logout.html | 2 +-
site/cli/policy.html | 2 +-
site/cli/publish.html | 2 +-
site/cli/pull.html | 2 +-
site/cli/query.html | 2 +-
site/cli/render.html | 6 +++---
site/cli/repl.html | 2 +-
site/cli/rollout.html | 2 +-
site/cli/secret.html | 2 +-
site/cli/telemetry.html | 2 +-
site/cli/test.html | 4 ++--
site/cli/trace.html | 2 +-
site/cli/vendor.html | 4 ++--
site/cli/version.html | 2 +-
site/cli/whoami.html | 4 ++--
site/concepts/agent-usage.html | 18 +++++++++---------
site/concepts/cli-contract.html | 2 +-
site/concepts/debugging.html | 2 +-
site/concepts/embedded-engines.html | 12 ++++++------
site/concepts/index.html | 2 +-
site/concepts/lockfile-format.html | 2 +-
site/concepts/package-format.html | 14 +++++++-------
site/concepts/sdk.html | 4 ++--
site/concepts/security-model.html | 14 +++++++-------
site/errors/E_ADD_DEP_EXISTS.html | 4 ++--
site/errors/E_ADD_INVALID_DEP.html | 4 ++--
site/errors/E_API_REQUEST.html | 4 ++--
site/errors/E_AUTH_INVALID.html | 4 ++--
site/errors/E_AUTH_PARSE.html | 8 ++++----
site/errors/E_AUTH_REQUIRED.html | 4 ++--
site/errors/E_CHECK_FAIL.html | 4 ++--
site/errors/E_COSIGN_SIG_MISSING.html | 4 ++--
site/errors/E_COSIGN_VERIFY.html | 4 ++--
site/errors/E_DEP_KIND_MISMATCH.html | 4 ++--
site/errors/E_DEP_RESOLVE.html | 4 ++--
site/errors/E_DIFF_FOUND.html | 4 ++--
site/errors/E_DIFF_NOT_DIR.html | 4 ++--
site/errors/E_ENGINE_NOT_AVAILABLE.html | 4 ++--
site/errors/E_FMT_CHANGED.html | 4 ++--
site/errors/E_FMT_KCL.html | 4 ++--
site/errors/E_FORBIDDEN.html | 4 ++--
site/errors/E_INIT_EMPTY_NAME.html | 4 ++--
site/errors/E_INIT_EXISTS.html | 4 ++--
site/errors/E_INPUTS_MISSING.html | 4 ++--
site/errors/E_INPUTS_PARSE.html | 4 ++--
site/errors/E_INSPECT_FAIL.html | 4 ++--
site/errors/E_INVALID_FLAG.html | 4 ++--
site/errors/E_IO.html | 4 ++--
site/errors/E_LINT_FAIL.html | 4 ++--
site/errors/E_LOCK_DRIFT.html | 4 ++--
site/errors/E_LOCK_MISSING.html | 4 ++--
site/errors/E_LOCK_PARSE.html | 4 ++--
site/errors/E_MANIFEST_GIT_USERINFO.html | 8 ++++----
site/errors/E_MANIFEST_HELM_CHART_INVALID.html | 4 ++--
site/errors/E_MANIFEST_HELM_MISSING_CHART.html | 4 ++--
.../E_MANIFEST_HELM_MISSING_VERSION.html | 4 ++--
site/errors/E_MANIFEST_HELM_USERINFO.html | 4 ++--
site/errors/E_MANIFEST_MISSING.html | 4 ++--
site/errors/E_MANIFEST_OCI_USERINFO.html | 4 ++--
site/errors/E_MANIFEST_PARSE.html | 4 ++--
site/errors/E_PACKAGE_MISSING.html | 4 ++--
site/errors/E_PACKAGE_PARSE.html | 4 ++--
site/errors/E_PATH_ESCAPE.html | 6 +++---
site/errors/E_PUBLISH_FAILED.html | 4 ++--
site/errors/E_PULL_FAILED.html | 4 ++--
site/errors/E_REMOVE_NOT_FOUND.html | 4 ++--
site/errors/E_RENDER_BUDGET_DEADLINE.html | 4 ++--
site/errors/E_RENDER_BUDGET_DEPTH.html | 4 ++--
site/errors/E_RENDER_CYCLE.html | 4 ++--
site/errors/E_RENDER_KCL.html | 4 ++--
site/errors/E_RENDER_OUTPUT_TOO_LARGE.html | 4 ++--
site/errors/E_RENDER_YAML.html | 4 ++--
site/errors/E_STRICT_UNTYPED_CHART.html | 4 ++--
site/errors/E_UNSUPPORTED.html | 4 ++--
site/errors/E_VENDOR_DEP_MISSING.html | 4 ++--
site/errors/E_VENDOR_DRIFT.html | 4 ++--
site/errors/index.html | 2 +-
site/examples/00-helm-hello.html | 10 +++++-----
site/examples/01-hello-webapp.html | 6 +++---
site/examples/02-webapp-postgres.html | 8 ++++----
site/examples/03-multi-env-app.html | 6 +++---
site/examples/04-policy-tier.html | 8 ++++----
site/examples/05-tests-and-golden.html | 6 +++---
site/examples/06-multi-engine.html | 6 +++---
site/examples/07-package-reuse.html | 10 +++++-----
site/examples/08-pkg-compose.html | 4 ++--
site/examples/09-kustomize-hello.html | 8 ++++----
site/examples/10-kcl-ecosystem.html | 4 ++--
site/examples/11-install-as-package.html | 6 +++---
site/examples/12-vendor-offline.html | 4 ++--
site/examples/13-subpackage-helm.html | 4 ++--
site/examples/14-helm-repo-dep.html | 4 ++--
site/examples/index.html | 2 +-
site/index.html | 8 ++++----
site/start/index.html | 10 +++++-----
skills/README.md | 2 +-
149 files changed, 303 insertions(+), 303 deletions(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index a2ee883..c4c7c3e 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -19,7 +19,7 @@ Prerequisites are managed via [mise](https://mise.jdx.dev/) —
task, helmfile, wasm-pack, etc.) at pinned versions.
```bash
-git clone git@github.com:akua-dev/akua.git
+git clone git@github.com:akua-dev/akuapkg.git
cd akua
mise install
diff --git a/Cargo.toml b/Cargo.toml
index 53e3c25..7a4efe6 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -15,7 +15,7 @@ members = [
version = "0.8.20"
edition = "2021"
license = "Apache-2.0"
-repository = "https://github.com/akua-dev/akua"
+repository = "https://github.com/akua-dev/akuapkg"
authors = ["CNAP Tech This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your
- Source: examples/${escape(example.slug)}/
+ Source: examples/${escape(example.slug)}/
diff --git a/scripts/gen-start-page.ts b/scripts/gen-start-page.ts
index 59f4fbd..9b63d98 100644
--- a/scripts/gen-start-page.ts
+++ b/scripts/gen-start-page.ts
@@ -22,7 +22,7 @@ const md = `
$ curl -fsSL https://cli.akua.dev/install | sh
\`\`\`
-Or grab a pinned binary from [Releases](https://github.com/akua-dev/akua/releases). Windows: \`irm https://cli.akua.dev/install.ps1 | iex\`.
+Or grab a pinned binary from [Releases](https://github.com/akua-dev/akuapkg/releases). Windows: \`irm https://cli.akua.dev/install.ps1 | iex\`.
Verify the install:
diff --git a/scripts/install.ps1 b/scripts/install.ps1
index fc35e34..1ddb1b3 100644
--- a/scripts/install.ps1
+++ b/scripts/install.ps1
@@ -28,7 +28,7 @@ $triple = switch ($arch) {
'x86_64' { 'x86_64-pc-windows-msvc' }
# aarch64-pc-windows-msvc builds aren't shipped yet. Users on ARM64
# Windows get a clear error rather than a silently-broken binary.
- 'ARM64' { Die "ARM64 Windows not yet supported. File an issue at https://github.com/akua-dev/akua/issues" }
+ 'ARM64' { Die "ARM64 Windows not yet supported. File an issue at https://github.com/akua-dev/akuapkg/issues" }
default { Die "unsupported Windows arch: $arch" }
}
@@ -50,7 +50,7 @@ function Resolve-Version($v) {
# -MaximumRedirection 0 means: stop at the first redirect and read
# its Location header, rather than actually following it.
$resp = try {
- Invoke-WebRequest -Uri 'https://github.com/akua-dev/akua/releases/latest' `
+ Invoke-WebRequest -Uri 'https://github.com/akua-dev/akuapkg/releases/latest' `
-MaximumRedirection 0 -ErrorAction SilentlyContinue
} catch {
$_.Exception.Response
@@ -69,7 +69,7 @@ $version = Resolve-Version $requestedVersion
$base = if ($env:AKUAPKG_DOWNLOAD_BASE) { $env:AKUAPKG_DOWNLOAD_BASE } else { 'https://github.com' }
$asset = "akuapkg-$version-$triple.zip"
-$url = "$base/akua-dev/akua/releases/download/$version/$asset"
+$url = "$base/akua-dev/akuapkg/releases/download/$version/$asset"
$installRoot = if ($env:AKUAPKG_INSTALL) { $env:AKUAPKG_INSTALL } else { Join-Path $env:USERPROFILE '.akuapkg' }
$binDir = Join-Path $installRoot 'bin'
diff --git a/scripts/install.sh b/scripts/install.sh
index 122c43d..c164ac0 100644
--- a/scripts/install.sh
+++ b/scripts/install.sh
@@ -39,7 +39,7 @@ main() {
local base="${AKUAPKG_DOWNLOAD_BASE:-https://github.com}"
local asset="akuapkg-${resolved_version}-${triple}.tar.gz"
- local url="${base}/akua-dev/akua/releases/download/${resolved_version}/${asset}"
+ local url="${base}/akua-dev/akuapkg/releases/download/${resolved_version}/${asset}"
local install_root="${AKUAPKG_INSTALL:-$HOME/.akuapkg}"
local bin_dir="${install_root}/bin"
@@ -90,7 +90,7 @@ detect_triple() {
# bail rather than give them a broken glibc binary that fails
# at runtime with a confusing dynamic-linker error.
if [ -f /etc/alpine-release ]; then
- error "Alpine/musl not yet supported. Build from source:\n\n cargo install --git https://github.com/akua-dev/akua akuapkg-cli\n"
+ error "Alpine/musl not yet supported. Build from source:\n\n cargo install --git https://github.com/akua-dev/akuapkg akuapkg-cli\n"
fi
case "$machine" in
x86_64|amd64) triple="x86_64-unknown-linux-gnu" ;;
@@ -137,7 +137,7 @@ resolve_version() {
# redirect on `/releases/latest` itself.
local location
location="$(curl -fsSLI -o /dev/null -w '%{url_effective}\n' \
- https://github.com/akua-dev/akua/releases/latest)"
+ https://github.com/akua-dev/akuapkg/releases/latest)"
# URL ends with .../tag/vX.Y.Z.
echo "$location" | sed -e 's|.*/tag/||'
}
diff --git a/scripts/site/layout.ts b/scripts/site/layout.ts
index 29e50ee..eccbcfa 100644
--- a/scripts/site/layout.ts
+++ b/scripts/site/layout.ts
@@ -442,7 +442,7 @@ ${sidebarHtml}
${opts.body}
diff --git a/scripts/site/markdown.ts b/scripts/site/markdown.ts
index 7c6da3a..bdbaf5d 100644
--- a/scripts/site/markdown.ts
+++ b/scripts/site/markdown.ts
@@ -9,8 +9,8 @@
import { escape } from './layout.ts';
/** Github-blob base for rewriting `../foo.md` links found in `docs/`. */
-const GITHUB_BLOB = 'https://github.com/akua-dev/akua/blob/main';
-const GITHUB_TREE = 'https://github.com/akua-dev/akua/tree/main';
+const GITHUB_BLOB = 'https://github.com/akua-dev/akuapkg/blob/main';
+const GITHUB_TREE = 'https://github.com/akua-dev/akuapkg/tree/main';
/**
* Rewrite source-tree links to URLs that resolve on the deployed
diff --git a/site/cli/add.html b/site/cli/add.html
index 84eaf70..645073d 100644
--- a/site/cli/add.html
+++ b/site/cli/add.html
@@ -337,7 +337,7 @@ Complete reference for the For the universal contract every verb honors (JSON output, exit codes, idempotency, plan mode, timeouts), see cli-contract.md. For the universal contract every verb honors (JSON output, exit codes, idempotency, plan mode, timeouts), see cli-contract.md. See cli-contract.md §1.5 for the full detection rules, override semantics, and env-var reference. See cli-contract.md §1.5 for the full detection rules, override semantics, and env-var reference. These are set by agent runtimes, not by akua. akua reads them to determine whether it's running in an agent context. See cli-contract.md §1.5 for detection rules and precedence. See cli-contract.md §1.5 for detection rules and precedence. From cli-contract.md: From cli-contract.md: Shipped Run the Package's program. Evaluate the KCL, invoke every source engine (Helm, kro, Kustomize), compose results, produce deploy-ready manifests. Discovery. With no Discovery. With no 0 success, 1 user error, 2 system error. (Phase B adds 3 for policy deny.) Discovers and runs: 0 if all pass, 1 if any fail, 2 on infrastructure error. akua is designed agent-first. This doc covers how agents discover akua's capabilities, what ships out of the box, and why the architecture is the way it is. MCP tool definitions consume 30k–90k tokens of agent context per connection before any reasoning starts. For a CLI with 20 verbs and 100+ subcommands, that's catastrophic. Install via the Codex skills manager: Add All support the open Agent Skills Specification. Any of: The Vercel Labs skills manager works across all Agent Skills compatible agents: Eight initial skills covering the most common akua workflows. See Eight initial skills covering the most common akua workflows. See Follow the spec: Validation: Good descriptions include trigger keywords agents would recognize. Agents load metadata for all skills (~100 tokens each) at startup; they load the full body only when they decide a skill applies. See the shipped skills for canonical examples. See the shipped skills for canonical examples. The whole loop: ~300 tokens of agent context for metadata, ~1000-2000 for the activated skill, plus primary task context. No MCP, no separate protocol, no magic — shell + git + markdown. How KCL, Helm, OPA, Regal, Kustomize, kro, and the Kyverno→Rego converter ship as wasip1 modules inside akua. akua bundles every engine it dispatches to — KCL, OPA (Rego), Kyverno, CEL, Helm, kro, Kustomize, Regal — into the This doc covers the embedding strategy, per-engine status, and what it means for agents and CI. No shell-out escape hatch anywhere in the render pipeline — see CLAUDE.md's "No shell-out, ever" invariant and security-model.md for the threat model. This doc covers the embedding strategy, per-engine status, and what it means for agents and CI. No shell-out escape hatch anywhere in the render pipeline — see CLAUDE.md's "No shell-out, ever" invariant and security-model.md for the threat model. Three reasons, same as the helm-engine-wasm decision: Shared Engine, many Stores. akua follows wasmtime's canonical pattern. One Plugin callouts from sandboxed KCL cross the boundary once — through a single host-function import, Plugin callouts from sandboxed KCL cross the boundary once — through a single host-function import, Precompilation: each engine's Binary size impact per engine: KCL ~8 MB, Helm (stripped fork) ~20 MB, OPA (with Regal) ~15 MB, Kyverno converter ~18 MB, CEL ~5 MB, Kustomize ~12 MB, kro instantiator ~6 MB. Total overhead versus a bare akua: ~85 MB. We consider this acceptable for "everything just works" — same order of magnitude as Bun (~45 MB) or Deno (~110 MB). Each verb that invokes engines documents which ones. From cli.md: Each verb that invokes engines documents which ones. From cli.md: Agents get the full engine toolkit from one install with zero PATH management. When writing skills that invoke Package.k authoring shape — imports, schemas, body, and the `resources` output. The canonical shape of an akua Package. A Package is a reusable definition authored in KCL and published as a signed OCI artifact. This document specifies what a This document specifies what a Every Package is one KCL program with three typed regions: When a Package is consumed through a UI (merchant install form, Package Studio, generated Swagger form), renderers benefit from hints about field ordering, labels, placeholders, grouping. akua reads UI hints from two sources, both projected into the JSON Schema / OpenAPI output of When a Package is consumed through a UI (merchant install form, Package Studio, generated Swagger form), renderers benefit from hints about field ordering, labels, placeholders, grouping. akua reads UI hints from two sources, both projected into the JSON Schema / OpenAPI output of KCL docstrings — the field's Schema-level validation via Schema-level validation via Because determinism and the WASI sandbox are load-bearing: Violation of any of these is a compile error with a clear message. Tests run via the embedded KCL engine (see embedded-engines.md) — fast, sandboxed, deterministic. Packages without tests ship with a lint warning; platform teams can enforce a policy rule requiring tests for production-tier packages. Wasmtime sandbox, capability-model preopens, replace-rejection in production, and the cosign + SLSA chain. akua is a sandboxed-by-default render substrate. Every render runs inside a wasmtime WASI sandbox with memory / CPU / wall-clock caps and capability-model filesystem preopens. The invariant lives in CLAUDE.md; this document records what that actually means, what's guaranteed, and what's not. akua is a sandboxed-by-default render substrate. Every render runs inside a wasmtime WASI sandbox with memory / CPU / wall-clock caps and capability-model filesystem preopens. The invariant lives in CLAUDE.md; this document records what that actually means, what's guaranteed, and what's not. Who is the adversary? The Package itself — author of the KCL program + the charts, overlays, policies it depends on. What must we prevent? What are we NOT trying to prevent? The render path runs in a wasmtime WASI sandbox. Concretely: Both Stores live on the same Engine and the same OS thread. Wasmtime's TLS tracks which Store is currently active; the paused Store resumes correctly when the plugin callout returns. Nested Engines were explicitly ruled out — they share process-global signal handlers in an untested way and duplicate the JIT cache. See docs/spikes/wasmtime-multi-engine.md for the research + verification. Both Stores live on the same Engine and the same OS thread. Wasmtime's TLS tracks which Store is currently active; the paused Store resumes correctly when the plugin callout returns. Nested Engines were explicitly ruled out — they share process-global signal handlers in an untested way and duplicate the JIT cache. See docs/spikes/wasmtime-multi-engine.md for the research + verification. The The bridge emits a one-line trace per call under This is the current-state gap vs the target. See docs/roadmap.md phases for timing. This is the current-state gap vs the target. See docs/roadmap.md phases for timing. A prior design considered keeping The alternative — keep shell-out with lots of warnings — would ship a sandbox that has a hole in it. That's worse than shipping no sandbox; users would assume protection that doesn't exist. Add Error code emitted by the akua CLI: E_ADD_DEP_EXISTS. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_ADD_DEP_EXISTS. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Add Error code emitted by the akua CLI: E_ADD_INVALID_DEP. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_ADD_INVALID_DEP. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Hosted API Hosted Akua API request failed before a structured response was available. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Hosted Akua API request failed before a structured response was available. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Hosted API Hosted Akua API token was rejected as invalid or expired. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Hosted Akua API token was rejected as invalid or expired. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your A CLI This is distinct from This is distinct from See See Hosted API Hosted Akua API auth token is required but was not provided. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Hosted Akua API auth token is required but was not provided. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Check Error code emitted by the akua CLI: E_CHECK_FAIL. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_CHECK_FAIL. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Render A cosign public key was configured but the registry has no This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your A cosign public key was configured but the registry has no This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Render Cosign signature failed cryptographic verification, or the payload disagrees with the fetched digest. Attacker-side signal — someone served bytes the configured key didn't approve. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Cosign signature failed cryptographic verification, or the payload disagrees with the fetched digest. Attacker-side signal — someone served bytes the configured key didn't approve. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Lockfile / manifest A dep alias referenced by This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your A dep alias referenced by This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Render A dep in This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your A dep in This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Diff Error code emitted by the akua CLI: E_DIFF_FOUND. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_DIFF_FOUND. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Diff Error code emitted by the akua CLI: E_DIFF_NOT_DIR. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_DIFF_NOT_DIR. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Render Package called an engine plugin whose WASM backend hasn't shipped yet (docs/roadmap.md tracks the blocked features). Shell-out is not an option — see CLAUDE.md "No shell-out, ever." This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Package called an engine plugin whose WASM backend hasn't shipped yet (docs/roadmap.md tracks the blocked features). Shell-out is not an option — see CLAUDE.md "No shell-out, ever." This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Fmt Error code emitted by the akua CLI: E_FMT_CHANGED. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_FMT_CHANGED. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Fmt Error code emitted by the akua CLI: E_FMT_KCL. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_FMT_KCL. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Hosted API Hosted Akua API token is valid but lacks permission for the request. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Hosted Akua API token is valid but lacks permission for the request. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Init Error code emitted by the akua CLI: E_INIT_EMPTY_NAME. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_INIT_EMPTY_NAME. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Init Error code emitted by the akua CLI: E_INIT_EXISTS. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_INIT_EXISTS. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Render Error code emitted by the akua CLI: E_INPUTS_MISSING. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_INPUTS_MISSING. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Render Error code emitted by the akua CLI: E_INPUTS_PARSE. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_INPUTS_PARSE. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Inspect Error code emitted by the akua CLI: E_INSPECT_FAIL. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_INSPECT_FAIL. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Render CLI-level flag value didn't parse — This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your CLI-level flag value didn't parse — This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your General Error code emitted by the akua CLI: E_IO. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_IO. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Lint Error code emitted by the akua CLI: E_LINT_FAIL. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_LINT_FAIL. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Lockfile / manifest This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Lockfile / manifest Error code emitted by the akua CLI: E_LOCK_MISSING. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_LOCK_MISSING. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Lockfile / manifest Error code emitted by the akua CLI: E_LOCK_PARSE. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_LOCK_PARSE. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Akua's rule: credentials never appear in any file akua writes or reads as input. The same principle that bans secrets in The lockfile field The lockfile field Pass credentials at the call site, never in The The Repeat Akua deliberately does not auto-load ambient credential files. Two reasons: Lockfile / manifest This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Lockfile / manifest This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Lockfile / manifest This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Lockfile / manifest This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Lockfile / manifest Error code emitted by the akua CLI: E_MANIFEST_MISSING. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_MANIFEST_MISSING. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Lockfile / manifest This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Lockfile / manifest Error code emitted by the akua CLI: E_MANIFEST_PARSE. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_MANIFEST_PARSE. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Render Error code emitted by the akua CLI: E_PACKAGE_MISSING. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_PACKAGE_MISSING. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Render Error code emitted by the akua CLI: E_PACKAGE_PARSE. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_PACKAGE_PARSE. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your See See Both correct paths declare the dependency in Publish / Pull This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Publish / Pull This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Remove Error code emitted by the akua CLI: E_REMOVE_NOT_FOUND. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_REMOVE_NOT_FOUND. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Render This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Render This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Render This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Render Error code emitted by the akua CLI: E_RENDER_KCL. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_RENDER_KCL. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Render A render produced more output than the host is willing to buffer from the sandboxed worker (the per-render stdout ceiling — a DoS bound on shared hosts). The Package renders, but its manifest set is too large to deliver. Distinct from This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your A render produced more output than the host is willing to buffer from the sandboxed worker (the per-render stdout ceiling — a DoS bound on shared hosts). The Package renders, but its manifest set is too large to deliver. Distinct from This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Render Error code emitted by the akua CLI: E_RENDER_YAML. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_RENDER_YAML. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Render This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Hosted API Requested CLI option or hosted API bridge feature is not implemented. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Requested CLI option or hosted API bridge feature is not implemented. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Vendor Error code emitted by the akua CLI: E_VENDOR_DEP_MISSING. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_VENDOR_DEP_MISSING. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Vendor Error code emitted by the akua CLI: E_VENDOR_DRIFT. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your Error code emitted by the akua CLI: E_VENDOR_DRIFT. This error doesn't have an extended remediation guide yet — track issues on GitHub or open one with your The smallest Package that exercises akua's `helm.template` engine callable end-to-end. The smallest Package that exercises akua's The rendered No See See
- Source: examples/00-helm-hello/
+ Source: examples/00-helm-hello/
- Source: examples/01-hello-webapp/
+ Source: examples/01-hello-webapp/
If CNPG ever changed its naming convention, this is the one place we'd update — still at CI time, still deterministic. No
- Source: examples/02-webapp-postgres/
+ Source: examples/02-webapp-postgres/
- Source: examples/03-multi-env-app/
+ Source: examples/03-multi-env-app/
A workspace policy gate. Shows the policy stack end-to-end: This is the smallest example that exercises every part of the policy architecture described in policy-format.md. This is the smallest example that exercises every part of the policy architecture described in policy-format.md. akua does not ship a Line + field precision. Agent-parseable. No stderr surprises.
- Source: examples/04-policy-tier/
+ Source: examples/04-policy-tier/
- Source: examples/05-tests-and-golden/
+ Source: examples/05-tests-and-golden/
- Source: examples/06-multi-engine/
+ Source: examples/06-multi-engine/
One akua Package composing another. The reuser pins the base Package by OCI digest in `akua.toml`, imports its `Input` schema into its own schema (as a nested field), and renders the base's... One akua Package composing another. The reuser pins the base Package by OCI digest in This is what cross-package composition looks like when the full spec lands — the shape this axis is settling into. Masterplan §18 and design-notes.md §6 still list this as an open question for the final API surface. Use this example as the north-star shape; expect minor signature tweaks as the spec locks in. This is what cross-package composition looks like when the full spec lands — the shape this axis is settling into. Masterplan §18 and design-notes.md §6 still list this as an open question for the final API surface. Use this example as the north-star shape; expect minor signature tweaks as the spec locks in. Fork when you need base-level invariants that don't exist yet. Forking means copying the base's Don't reuse to avoid learning KCL. If the base's author didn't anticipate your override, reuse leads to a pile of This axis is specced to the shape shown above but the exact signature of This axis is specced to the shape shown above but the exact signature of
- Source: examples/07-package-reuse/
+ Source: examples/07-package-reuse/
- Source: examples/08-pkg-compose/
+ Source: examples/08-pkg-compose/
Smallest Package that exercises akua's `kustomize.build` engine callable end-to-end. Smallest Package that exercises akua's The rendered See See What happened
${summaryHtml}How to fix it
--json output if the message above wasn't enough.What happened
${summaryHtml}How to fix it
--json output if the message above wasn't enough.> irm https://cli.akua.dev/install.ps1 | iexFrom source
-
+$ cargo install --git https://github.com/akua-dev/akua akuapkg-cli$ cargo install --git https://github.com/akua-dev/akuapkg akuapkg-cliSDK
@@ -47,8 +47,8 @@ const body = `
$ npm install @akua-dev/sdkJSON output
diff --git a/site/cli/api.html b/site/cli/api.html
index 49ecb86..c3059c9 100644
--- a/site/cli/api.html
+++ b/site/cli/api.html
@@ -348,7 +348,7 @@ Exit codes
diff --git a/site/cli/attest.html b/site/cli/attest.html
index 28c95e8..e28565c 100644
--- a/site/cli/attest.html
+++ b/site/cli/attest.html
@@ -320,7 +320,7 @@ JSON output
diff --git a/site/cli/audit.html b/site/cli/audit.html
index ed198df..e7fc606 100644
--- a/site/cli/audit.html
+++ b/site/cli/audit.html
@@ -336,7 +336,7 @@ JSON output (explain)
diff --git a/site/cli/bench.html b/site/cli/bench.html
index 26f3eb9..f9d6040 100644
--- a/site/cli/bench.html
+++ b/site/cli/bench.html
@@ -323,7 +323,7 @@ JSON output
diff --git a/site/cli/check.html b/site/cli/check.html
index a0bc85d..7ac2b1b 100644
--- a/site/cli/check.html
+++ b/site/cli/check.html
@@ -326,7 +326,7 @@ JSON output
diff --git a/site/cli/cov.html b/site/cli/cov.html
index bc77d04..58c9e39 100644
--- a/site/cli/cov.html
+++ b/site/cli/cov.html
@@ -310,7 +310,7 @@ Flags
diff --git a/site/cli/deploy.html b/site/cli/deploy.html
index 3cd6f91..e1fbc2b 100644
--- a/site/cli/deploy.html
+++ b/site/cli/deploy.html
@@ -334,7 +334,7 @@ JSON output (status)
diff --git a/site/cli/dev.html b/site/cli/dev.html
index 0ba5f5d..33bed47 100644
--- a/site/cli/dev.html
+++ b/site/cli/dev.html
@@ -319,7 +319,7 @@ JSON output (when
diff --git a/site/cli/diff.html b/site/cli/diff.html
index c349118..a64e399 100644
--- a/site/cli/diff.html
+++ b/site/cli/diff.html
@@ -332,7 +332,7 @@ --json)JSON output
diff --git a/site/cli/eval.html b/site/cli/eval.html
index ce3a755..e571829 100644
--- a/site/cli/eval.html
+++ b/site/cli/eval.html
@@ -318,7 +318,7 @@ JSON output
diff --git a/site/cli/export.html b/site/cli/export.html
index e201f51..b796ac6 100644
--- a/site/cli/export.html
+++ b/site/cli/export.html
@@ -345,7 +345,7 @@ Exit codes
diff --git a/site/cli/fmt.html b/site/cli/fmt.html
index e3c35f6..db2c0a8 100644
--- a/site/cli/fmt.html
+++ b/site/cli/fmt.html
@@ -312,7 +312,7 @@ Exit codes
diff --git a/site/cli/help.html b/site/cli/help.html
index 13e1a7a..0505e09 100644
--- a/site/cli/help.html
+++ b/site/cli/help.html
@@ -309,7 +309,7 @@ akuapkg help
diff --git a/site/cli/index.html b/site/cli/index.html
index 2ea7135..9c0e03e 100644
--- a/site/cli/index.html
+++ b/site/cli/index.html
@@ -304,7 +304,7 @@ CLI reference
akua CLI reference
akua binary. Every verb, every subcommand, every flag.Status marker. Sections marked ✅ describe verbs available in the shipping binary. Sections marked 🚧 describe verbs from the target surface that aren't wired yet. If a verb isn't marked, assume 🚧. Shipped today (28 verbs):
init · whoami · version · verify · render · add · vendor · dev · test · tree · pull · publish · sign · update · lock · push · repl · pack · remove · diff · check · inspect · lint · fmt · cache · auth · export · api Run akua --help at the command line for the authoritative live list.
Top-level flags
@@ -319,7 +319,7 @@ Agent-context auto-detection
# Agent context — auto-JSON, no flag needed
$ CLAUDECODE=1 akuapkg render
{"format":"raw-manifests","target":"./deploy","manifests":3,"hash":"sha256:…"}
-
Verb index
AUTHOR PUBLISH DEPLOY OPERATE
@@ -488,7 +488,7 @@ Verb index
diff --git a/site/cli/infra.html b/site/cli/infra.html
index 0f42d06..6c75452 100644
--- a/site/cli/infra.html
+++ b/site/cli/infra.html
@@ -313,7 +313,7 @@ Subcommands
diff --git a/site/cli/init.html b/site/cli/init.html
index 27a2ae1..2aa9ee9 100644
--- a/site/cli/init.html
+++ b/site/cli/init.html
@@ -322,7 +322,7 @@ JSON output
diff --git a/site/cli/inspect.html b/site/cli/inspect.html
index 7e54dfe..5d62303 100644
--- a/site/cli/inspect.html
+++ b/site/cli/inspect.html
@@ -323,7 +323,7 @@ JSON output
diff --git a/site/cli/lint-cli.html b/site/cli/lint-cli.html
index 0c1f65f..2437d7f 100644
--- a/site/cli/lint-cli.html
+++ b/site/cli/lint-cli.html
@@ -313,20 +313,20 @@ akua-specific
Agent-context env vars (detected, never written)
-var set by AGENT=<name>Goose ( goose), Amp (amp), Codex (codex), Cline (cline), OpenCode (opencode) — emerging standardCLAUDECODE=1Claude Code GEMINI_CLI=1Gemini CLI CURSOR_CLI=1Cursor CLI GOOSE_TERMINAL=1, AMP_THREAD_ID=<id>, CODEX_SANDBOX=<id>, CLINE_ACTIVE=truesecondary identifiers per agent — recorded as context Exit code reference (summary)
-code meaning 0 success 1 user error 2 system error 3 policy deny 4 rate limited 5 needs approval 6 timeout Stability and versioning
What's not in this reference
-
+Spec cross-references
-
+akua.toml + akua.lock)
diff --git a/site/cli/lint.html b/site/cli/lint.html
index 4b1843a..29a9fcd 100644
--- a/site/cli/lint.html
+++ b/site/cli/lint.html
@@ -331,7 +331,7 @@ akua.toml + akua.lock)JSON output
diff --git a/site/cli/login.html b/site/cli/login.html
index 341739e..0c34f2e 100644
--- a/site/cli/login.html
+++ b/site/cli/login.html
@@ -312,7 +312,7 @@ Examples
diff --git a/site/cli/logout.html b/site/cli/logout.html
index d425aac..a110ed8 100644
--- a/site/cli/logout.html
+++ b/site/cli/logout.html
@@ -308,7 +308,7 @@ akuapkg logout
diff --git a/site/cli/policy.html b/site/cli/policy.html
index b17fc55..287c50f 100644
--- a/site/cli/policy.html
+++ b/site/cli/policy.html
@@ -335,7 +335,7 @@ JSON output (check)
diff --git a/site/cli/publish.html b/site/cli/publish.html
index 9e73eaf..93372bb 100644
--- a/site/cli/publish.html
+++ b/site/cli/publish.html
@@ -321,7 +321,7 @@ JSON output
diff --git a/site/cli/pull.html b/site/cli/pull.html
index 81e7973..2ada43a 100644
--- a/site/cli/pull.html
+++ b/site/cli/pull.html
@@ -309,7 +309,7 @@ Flags
diff --git a/site/cli/query.html b/site/cli/query.html
index b278efa..38b01ca 100644
--- a/site/cli/query.html
+++ b/site/cli/query.html
@@ -322,7 +322,7 @@ Example
diff --git a/site/cli/render.html b/site/cli/render.html
index 77872a9..ed87e51 100644
--- a/site/cli/render.html
+++ b/site/cli/render.html
@@ -304,11 +304,11 @@ akuapkg render
-akuapkg render [path] [flags]path, renders every user-authored document in the workspace whose schema declares render semantics — typically the workspace's App-shaped documents that reference a Package and carry inputs. With a path, renders only that file. Users author their own App / Environment / etc. schemas (akua does not specify them; see package-format.md); render processes whichever documents the workspace declares as renderable.path, renders every user-authored document in the workspace whose schema declares render semantics — typically the workspace's App-shaped documents that reference a Package and carry inputs. With a path, renders only that file. Users author their own App / Environment / etc. schemas (akua does not specify them; see package-format.md); render processes whichever documents the workspace declares as renderable.Not the same as
akuapkg export. render executes the full pipeline against customer inputs and writes manifests a reconciler applies to a cluster. export converts a canonical artifact (schema, user-authored KCL document, policy bundle) into a format view (JSON Schema, YAML, OpenAPI, Rego bundle). Render needs inputs; export usually doesn't. Render invokes engines; export is format translation. See akuapkg export below.Flags
-flag description --package=<path>path to the package.k file (default ./package.k)--inputs=<file>inputs file (JSON or YAML). When omitted, probes ./inputs.yaml then ./inputs.example.yaml next to the package; falls back to schema defaults if neither exists--out=<dir>write to directory (default: ./deploy/)--stdoutprint rendered manifests as multi-doc YAML to stdout instead of writing files --dry-runrender but don't write files Engines. Helm and Akua-package composition reach the user via alias-method calls —
+webapp.template(webapp.TemplateOpts{values = webapp.Values{...}}), upstream.render(upstream.Input{...}) — synthesized per dep from akua.toml. Kustomize stays engine-direct (kustomize.build({path = "./overlays"})) because its input is a within-Package directory, not a typed dep. All backends ship as embedded WASM modules; akua never shells out to helm or kustomize binaries — every engine runs inside the wasmtime sandbox alongside the render worker. See docs/security-model.md and docs/embedded-engines.md. One render output. akua writes raw YAML manifests, one file per resource. Distribution shapes like Helm charts or OCI bundles are future akuapkg publish --as <format> concerns — they wrap rendered manifests at distribution time, not as a Package-declared output.Engines. Helm and Akua-package composition reach the user via alias-method calls —
webapp.template(webapp.TemplateOpts{values = webapp.Values{...}}), upstream.render(upstream.Input{...}) — synthesized per dep from akua.toml. Kustomize stays engine-direct (kustomize.build({path = "./overlays"})) because its input is a within-Package directory, not a typed dep. All backends ship as embedded WASM modules; akua never shells out to helm or kustomize binaries — every engine runs inside the wasmtime sandbox alongside the render worker. See docs/security-model.md and docs/embedded-engines.md. One render output. akua writes raw YAML manifests, one file per resource. Distribution shapes like Helm charts or OCI bundles are future akuapkg publish --as <format> concerns — they wrap rendered manifests at distribution time, not as a Package-declared output.Exit codes
JSON output
@@ -323,7 +323,7 @@ JSON output
diff --git a/site/cli/repl.html b/site/cli/repl.html
index e5f21bb..d844fcb 100644
--- a/site/cli/repl.html
+++ b/site/cli/repl.html
@@ -310,7 +310,7 @@ akuapkg repl
diff --git a/site/cli/rollout.html b/site/cli/rollout.html
index 53f6a3d..7a07efe 100644
--- a/site/cli/rollout.html
+++ b/site/cli/rollout.html
@@ -317,7 +317,7 @@ Flags
diff --git a/site/cli/secret.html b/site/cli/secret.html
index 814156d..3dacf60 100644
--- a/site/cli/secret.html
+++ b/site/cli/secret.html
@@ -331,7 +331,7 @@ JSON output (trace)
diff --git a/site/cli/telemetry.html b/site/cli/telemetry.html
index 9ae3c34..c7748b0 100644
--- a/site/cli/telemetry.html
+++ b/site/cli/telemetry.html
@@ -311,7 +311,7 @@ akuapkg telemetry
diff --git a/site/cli/test.html b/site/cli/test.html
index da1e311..ef03afa 100644
--- a/site/cli/test.html
+++ b/site/cli/test.html
@@ -307,7 +307,7 @@ akuapkg test
**/*_test.rego — Rego policy tests via embedded OPA**/_test.k / test_.k — KCL test files via embedded KCLtest.yaml bundle tests (when the bundle is imported)*.golden.yaml compared against current render)Flags
-
+flag description --coverageemit per-rule / per-schema coverage report --watchre-run on file change --goldenenable / verify golden-output comparisons --filter=<regex>run only matching tests --timeout=<dur>per-test timeout (default 30s) `--engine=<auto\ embedded\ shell>` engine selection (see embedded-engines.md) flag description --coverageemit per-rule / per-schema coverage report --watchre-run on file change --goldenenable / verify golden-output comparisons --filter=<regex>run only matching tests --timeout=<dur>per-test timeout (default 30s) `--engine=<auto\ embedded\ shell>` engine selection (see embedded-engines.md) Exit codes
JSON output
@@ -333,7 +333,7 @@ JSON output
diff --git a/site/cli/trace.html b/site/cli/trace.html
index 930d621..25bf8a3 100644
--- a/site/cli/trace.html
+++ b/site/cli/trace.html
@@ -317,7 +317,7 @@ Example
diff --git a/site/cli/vendor.html b/site/cli/vendor.html
index d70512a..6f926a4 100644
--- a/site/cli/vendor.html
+++ b/site/cli/vendor.html
@@ -308,7 +308,7 @@ akuapkg vendor
add <name> — copy the declared dependency into .akua/vendor/<name>/ and pin its digest in akua.lock. The dependency must already exist in [dependencies]; otherwise the command fails with a suggestion to declare it in akua.toml. Works for path, oci, git, and helm (repo) deps alike — the resolver's vendor-first lookup is universal across all four source kinds, so once added, the canonical source can be deleted and akuapkg render still succeeds via the vendored bytes.check — compare the on-disk vendor trees against akua.toml + akua.lock. Drift exits with code 1.list — enumerate on-disk vendor trees, including orphaned entries.add honors the universal write-contract flags: --plan, --timeout, and --idempotency-key. check and list are read-only.Auth flags (private git remotes)
-vendor add accepts credentials at the call site for fetching private git deps. Akua never reads ambient credential files (~/.netrc, ~/.docker/config.json, env vars) — the SDK and CLI surface are the only auth sources. See E_MANIFEST_GIT_USERINFO for why credentials in akua.toml URLs are rejected.vendor add accepts credentials at the call site for fetching private git deps. Akua never reads ambient credential files (~/.netrc, ~/.docker/config.json, env vars) — the SDK and CLI surface are the only auth sources. See E_MANIFEST_GIT_USERINFO for why credentials in akua.toml URLs are rejected.flag description --auth <prefix>=<user>:<password>Repeatable. Credential for a private git remote, keyed by URL prefix. The prefix is matched longest-first against the dep's URL — same rule git's credential helper uses. Example: --auth akua-git.cnap.tech/org-A=org-A:token.--auth-file <path>TOML file with a [auth] table keyed by URL prefix. --auth flags override file entries on conflict. The path must be explicit; akua never auto-discovers credential files.--auth-file shape:
-[auth]
@@ -321,7 +321,7 @@ Git HTTPS trust
diff --git a/site/cli/version.html b/site/cli/version.html
index a3b397f..fc252d6 100644
--- a/site/cli/version.html
+++ b/site/cli/version.html
@@ -315,7 +315,7 @@ akuapkg version
diff --git a/site/cli/whoami.html b/site/cli/whoami.html
index 9937ba8..56ece68 100644
--- a/site/cli/whoami.html
+++ b/site/cli/whoami.html
@@ -318,11 +318,11 @@ JSON output
"source_env": "CLAUDECODE"
}
}agent_context is present when akua auto-detected an agent session (see cli-contract.md §1.5). When no agent is detected, the field is {"detected": false}.agent_context is present when akua auto-detected an agent session (see cli-contract.md §1.5). When no agent is detected, the field is {"detected": false}.Agent usage
The short version
-
+AGENT=…, CLAUDECODE=1, etc.) and silently enables JSON output, structured errors, no-interactive, no-color. See cli-contract.md §1.5.skills/ following the open Agent Skills Specification. Install them into Claude Code, Cursor, Codex, Gemini CLI, Goose, Amp, OpenCode, or any of the 35+ supported agents.AGENT=…, CLAUDECODE=1, etc.) and silently enables JSON output, structured errors, no-interactive, no-color. See cli-contract.md §1.5.skills/ following the open Agent Skills Specification. Install them into Claude Code, Cursor, Codex, Gemini CLI, Goose, Amp, OpenCode, or any of the 35+ supported agents.
Why no MCP server?
Claude Code
cp -r path/to/akua/skills/* ~/.claude/skills/OpenAI Codex
+codex skills install github:akua-dev/akua/skillscodex skills install github:akua-dev/akuapkg/skillsCursor
skills/ to Cursor's skill paths in .cursor/config.json:
@@ -333,16 +333,16 @@ { "skills": { "paths": ["./skills"] } }Gemini CLI
gemini extensions install @akua/skillsGoose, Amp, OpenCode, Cline, Roo Code, Amp, Command Code, Kiro, Factory, and 25+ others
+skills/ into the agent's expected locationnpx skills install github:akua-dev/akua/skillsskills/ into the agent's expected locationnpx skills install github:akua-dev/akuapkg/skillsUniversal:
npx skillsnpx skills install github:akua-dev/akua/skills
+npx skills install github:akua-dev/akuapkg/skills
npx skills list
npx skills remove akua-*
Shipped skills
-skills/ for details.
+skill use when new-package user wants to start a new akua Package inspect-package auditing a third-party Package before use diff-gate setting up CI to block breaking upgrades dev-loop iterating on a Package with hot-reload migrate-helmfile converting Helmfile to akua rotate-secret rotating a shared secret across installs publish-signed releasing a signed + attested Package apply-policy-tier subscribing to a compliance / production tier skills/ for details.skill use when new-package user wants to start a new akua Package inspect-package auditing a third-party Package before use diff-gate setting up CI to block breaking upgrades dev-loop iterating on a Package with hot-reload migrate-helmfile converting Helmfile to akua rotate-secret rotating a shared secret across installs publish-signed releasing a signed + attested Package apply-policy-tier subscribing to a compliance / production tier
Writing your own skill
Writing your own skill
Step-by-step instructions...npx skills-ref validate ./skills/my-skill
Running agents against akua — example loop
agent receives user intent:
@@ -397,11 +397,11 @@ Running agents against akua
Related reading
-
+
diff --git a/site/concepts/cli-contract.html b/site/concepts/cli-contract.html
index 398483e..73185a7 100644
--- a/site/concepts/cli-contract.html
+++ b/site/concepts/cli-contract.html
@@ -431,7 +431,7 @@ 15. Enforcement
diff --git a/site/concepts/debugging.html b/site/concepts/debugging.html
index 919771e..5995d8c 100644
--- a/site/concepts/debugging.html
+++ b/site/concepts/debugging.html
@@ -368,7 +368,7 @@ Anti-patterns
diff --git a/site/concepts/embedded-engines.html b/site/concepts/embedded-engines.html
index d0f36f8..e6735d7 100644
--- a/site/concepts/embedded-engines.html
+++ b/site/concepts/embedded-engines.html
@@ -302,7 +302,7 @@ Embedded engines
akua binary itself. No $PATH dependencies. No helm or opa or kcl required to be installed separately. One binary, everything works out of the box.
Why embed
Embedding strategy
typed FFI: Rust host ↔ WASM guestengine_host_wasm::shared_engine() singleton hosts:
-akua-render-worker (per-render Store with the tenant's preopens + memory cap + epoch deadline);env::kcl_plugin_invoke_json_wasm, that reads arguments from guest memory and dispatches to handlers registered against akua-core's plugin registry. The handler's engine Store runs, produces bytes, the bridge writes them back into the worker's linear memory. See docs/security-model.md — one Engine, many Stores — with a plugin bridge for the full picture + docs/spikes/wasmtime-multi-engine.md for the architecture decision.env::kcl_plugin_invoke_json_wasm, that reads arguments from guest memory and dispatches to handlers registered against akua-core's plugin registry. The handler's engine Store runs, produces bytes, the bridge writes them back into the worker's linear memory. See docs/security-model.md — one Engine, many Stores — with a plugin bridge for the full picture + docs/spikes/wasmtime-multi-engine.md for the architecture decision.build.rs calls engine_host_wasm::precompile(...) against shared_config() at akua build time, producing a .cwasm deserialized in ~microseconds on first use.
Engine inventory
@@ -336,7 +336,7 @@ Engine inventory
Per-verb engine routing
-verb engines used akuapkg initKCL (scaffold) akuapkg add(fetch/convert) Kyverno-to-Rego converter, KCL schema generator akuapkg renderKCL + Helm + kro offline instantiator + Kustomize + output emitters akuapkg lintKCL + Regal akuapkg fmtKCL + opa fmt akuapkg checkKCL + OPA (parse-only) akuapkg testKCL + OPA akua traceOPA ( --explain)akua benchOPA partial evaluation, KCL interpreter timing akua policy checkOPA + CEL (via Rego runtime) akuapkg replKCL + OPA akua evalKCL or OPA per --langakua attest(no engines; just signing + SLSA predicate generation) akuapkg diffKCL + OPA (for policy compat diff)
Determinism guarantees
@@ -352,17 +352,17 @@ What's NOT embedded
kubectl — used only by akua deploy --to=kubectl. Too specific to a user's cluster context; we rely on the system version.git — used for akuapkg publish and workspace operations. Extremely stable and universally available.cosign — used for signing. We embed the verification path (cryptographic primitives are in akua-core) but use cosign CLI for signing operations that need hardware keys.docker / podman — used only if a user opts into a Dockerfile-based build. Rare for akua workflows.
Performance notes
-
+akua invocation. With precompile cache: ~2-5 ms.akuapkg dev keeps engines warm for the session. Subsequent renders skip cold-start entirely.opa eval for realistic policy workloads.akua invocation. With precompile cache: ~2-5 ms.akuapkg dev keeps engines warm for the session. Subsequent renders skip cold-start entirely.opa eval for realistic policy workloads.
For agents
akuapkg test, akuapkg fmt, akua bench, they never need to check which opa. Skills remain portable across fresh sandboxes, CI runners, and developer laptops without setup instructions beyond curl -fsSL https://cli.akua.dev/install | sh.
Relationship to other docs
-
+
diff --git a/site/concepts/index.html b/site/concepts/index.html
index 3e3734e..79a625d 100644
--- a/site/concepts/index.html
+++ b/site/concepts/index.html
@@ -336,7 +336,7 @@ Concepts
diff --git a/site/concepts/lockfile-format.html b/site/concepts/lockfile-format.html
index e2cc792..22ab46f 100644
--- a/site/concepts/lockfile-format.html
+++ b/site/concepts/lockfile-format.html
@@ -512,7 +512,7 @@ Example: a real workspace
diff --git a/site/concepts/package-format.html b/site/concepts/package-format.html
index 434e0eb..2e067ed 100644
--- a/site/concepts/package-format.html
+++ b/site/concepts/package-format.html
@@ -302,7 +302,7 @@ Package format
Package.k is the only shape akua itself specifies; higher-level workspace concepts (App / Environment / Cluster / PolicySet / etc.) are user-defined KCL schemas in the consumer's workspace, not akua-owned kinds.package.k file may contain. Companion references: lockfile-format.md for akua.toml / akua.lock, policy-format.md for Rego.package.k file may contain. Companion references: lockfile-format.md for akua.toml / akua.lock, policy-format.md for Rego.
1. Anatomy
3. Schema — the public input cont
hostname: str
priority: int = 0
UI hints (optional) ✅
-akuapkg export.akuapkg export."""…""" docstring becomes the schema property's description:
-schema Input:
"""Public inputs for this package."""
@@ -467,7 +467,7 @@ 4. Body — engine calls + transforms<
}
resources = [*_pg, *_app, *_glue, *_addons, _servicemonitor]
check: blocks — this is KCL's role in the two-layer validation model (schema → Rego for cross-resource policy, see policy-format.md):check: blocks — this is KCL's role in the two-layer validation model (schema → Rego for cross-resource policy, see policy-format.md):schema Deployment:
spec: DeploymentSpec
check:
@@ -512,7 +512,7 @@ 6. Metadata
7. What's disallowed
+os.read, http.get, file.exists, env-var lookups. KCL's sandbox enforces this.random(), no now(), no uuid(). Results depend only on input and imports.input overwrite at runtime. Inputs are provided once at render start and treated as immutable through the body.input. (Runtime cross-refs are the RGD case; see policy-format.md for the broader framing.)os.read, http.get, file.exists, env-var lookups. KCL's sandbox enforces this.random(), no now(), no uuid(). Results depend only on input and imports.input overwrite at runtime. Inputs are provided once at render start and treated as immutable through the body.input. (Runtime cross-refs are the RGD case; see policy-format.md for the broader framing.)
8. Rendering model
@@ -593,15 +593,15 @@ Running
akuapkg test --filter=default # only tests matching 'default'What to test
-
+input.replicas = 0 correctly fail the check: block?input.replicas = 0 correctly fail the check: block?
11. Relationship to other docs
-
+akuapkg init / akuapkg add / akuapkg render / akuapkg export / akuapkg test / akuapkg publish — the verbs that operate on packages. render runs the program; export converts the canonical form to a view.akua.toml + akua.lock pin importscheck: blocks)
diff --git a/site/concepts/sdk.html b/site/concepts/sdk.html
index ab8bf4f..d495588 100644
--- a/site/concepts/sdk.html
+++ b/site/concepts/sdk.html
@@ -425,11 +425,11 @@ akuapkg init / akuapkg add / akuapkg render / akuapkg export / akuapkg test / akuapkg publish — the verbs that operate on packages. render runs the program; export converts the canonical form to a view.akua.toml + akua.lock pin importscheck: blocks)Errors
}
Related References
-
+
diff --git a/site/concepts/security-model.html b/site/concepts/security-model.html
index f556351..cf85bbb 100644
--- a/site/concepts/security-model.html
+++ b/site/concepts/security-model.html
@@ -301,7 +301,7 @@
Security model
Threat model
Threat model
+akua.lock pins OCI deps by sha256 of the chart blob; a drift between what the lockfile recorded and what the registry now serves is rejected (LockDigestMismatch). But if the initial akuapkg add pulled from a compromised registry that served a malicious chart and recorded its digest, every subsequent render faithfully reproduces it. Phase 6 (cosign verification + SLSA attestation walk) closes this gap.akua.lock pins OCI deps by sha256 of the chart blob; a drift between what the lockfile recorded and what the registry now serves is rejected (LockDigestMismatch). But if the initial akuapkg add pulled from a compromised registry that served a malicious chart and recorded its digest, every subsequent render faithfully reproduces it. Phase 6 (cosign verification + SLSA attestation walk) closes this gap.
Execution model
One Engine, many Stores
⇡ manifests bytes
⇡ host writes response into Store A's guest memory, returns ptr
⇡ KCL continues in Store A
-
Plugin bridge boundary
env::kcl_plugin_invoke_json_wasm import is the one hole in the worker's sandbox — the only place untrusted KCL can call out to host code. It has exactly one job: read three JSON-string arguments from the guest's linear memory, dispatch to akua-core's plugin registry on the host, allocate response bytes in the guest via the worker's exported akua_bridge_alloc, and hand back a pointer. The host never runs arbitrary guest-supplied code; only the dispatcher and its registered handlers. Plugin handlers themselves run in their own Store, not on the host — so even a compromised helm engine can't escape to the native process.AKUA_BRIDGE_TRACE=1 (stderr), useful for debugging misrouted plugin invocations.What's enforc
kcl_plugin::resolve_in_package canonicalizes + asserts-under-package-dir + resolves symlinks. A Package that passes "../../etc/passwd" to pkg.render(...) gets a typed error, not a render. Absolute paths are accepted only when they fall under an allowed_roots entry the renderer registered — today, that's exactly the set of resolved charts.* deps (path-based dep dir or OCI cache dir for the blob we just pulled). Nothing else.os.read, http.get, env reads, or time.now(). A pure-KCL Package is deterministic by construction. This is upstream KCL's own invariant.kcl_plugin::register is pub but only called at akua startup). Packages cannot invent their own.--strict): reject raw-string paths in plugin callables. Forces typed charts.* imports resolved via akua.toml. Default for akuapkg publish and akua serve; optional for interactive akuapkg render.
What's NOT shipped yet
-Guarantee State today Phase Path-traversal rejection in plugin handlers Shipped — resolve_in_package + allowed_roots✅ Phase 0 helm.template / kustomize.build via WASM enginesShipped — no shell-out, wasmtime-hosted ✅ Phases 1 + 3 Typed charts.* imports + lockfile digestsShipped — path + OCI, replace override ✅ Phase 2a, 2b A+B akuapkg render --strict rejects raw chart pathsShipped — E_STRICT_UNTYPED_CHART✅ Phase 2b C akuapkg verify path-dep digest drift detectionShipped — PathDigestDrift / PathMissing✅ Phase 2b C Render worker wrapped in wasmtime Shipped — every render runs inside a Store with memory/epoch caps + capability-model preopens✅ Phase 4 akua serve per-tenant isolationVerb doesn't exist Phase 5 cosign keyed verification on OCI deps Shipped — [signing] cosign_public_key, ECDSA P-256✅ Phase 6 A akuapkg publish with cosign sign-by-defaultShipped — P-256 PKCS#8 PEM private keys ✅ Phase 7 A akuapkg pull with manifest digest verifyShipped ✅ Phase 7 A cosign keyless (fulcio + rekor) verification Not implemented Phase 6 B SLSA v1 attestation generation on publish Shipped — DSSE envelope, in-toto v1 statement ✅ Phase 7 B akuapkg verify attestation chain walkShipped — pulls .att sidecars + DSSE verify + subject-digest check for every OCI dep✅ Phase 7 C Recursive attestation walk over transitive deps Not implemented — needs published Package to attest its own deps Phase 7 C (follow-up) Encrypted cosign private keys — PKCS#8 PBES2 Shipped — $AKUA_COSIGN_PASSPHRASE env var✅ Phase 7 C OCI-vendored deps → network-free akuapkg render after pullShipped — .akua/vendor/<name>/ convention✅ Phase 7 C HSM / cosign-native key format Not implemented Phase 7 D Git dep checkout via gixShipped — pure Rust, no shell-out ✅ Phase 2b C Private-repo OCI auth (docker config / akuapkg auth.toml) Shipped — Basic + bearer PAT ✅ Phase 2b C Docker credential helpers Not implemented — would require shell-out Won't ship
Why no shell-out, ever
helm.template as shell-out for convenience, with a feature flag and clear "trusted input only" warnings. That design is rejected. Reasons:
+helm runs as the akua process's user with full PATH, env, cwd, network. Sandboxing individual subprocess invocations (seccomp, unshared namespaces) is possible but fragile, platform-specific, and hard to verify.helm runs as the akua process's user with full PATH, env, cwd, network. Sandboxing individual subprocess invocations (seccomp, unshared namespaces) is possible but fragile, platform-specific, and hard to verify.
Related docs
-
+
diff --git a/site/errors/E_ADD_DEP_EXISTS.html b/site/errors/E_ADD_DEP_EXISTS.html
index 9f8b7bb..8d63a27 100644
--- a/site/errors/E_ADD_DEP_EXISTS.html
+++ b/site/errors/E_ADD_DEP_EXISTS.html
@@ -315,11 +315,11 @@ General
E_ADD_DEP_EXISTS
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_ADD_INVALID_DEP
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_API_REQUEST
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_AUTH_INVALID
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.E_AUTH_PARSE
E_AUTH_PARSE — credential input is malformedWhat happened
--auth flag value, or the contents of an --auth-file TOML payload, didn't parse into a (prefix, username, password) triple. Akua rejects the input before it reaches the resolver — credentials that round-trip through a malformed parser are a class of bug we don't want to ship into the lockfile or HTTP transport.E_INVALID_FLAG: that code covers structural CLI errors (--timeout=5min); E_AUTH_PARSE is specifically for credential-shape errors so agents can branch on it.E_INVALID_FLAG: that code covers structural CLI errors (--timeout=5min); E_AUTH_PARSE is specifically for credential-shape errors so agents can branch on it.Common causes
--auth value missing the = separator
@@ -359,13 +359,13 @@ akuapkg vendor add upstream --auth github.com:alice:ghp_xyz # no `=`Combining file and flag
--auth-file ./auth.toml \
--auth github.com/myco=alice:$ROTATED_TOKEN # overrides the file entry
Why akua doesn't auto-load
-~/.netrc / ~/.docker/config.jsonE_MANIFEST_GIT_USERINFO for the rationale. Short version: multi-tenant SDK consumers can't safely inherit ambient credentials, and the same explicit-input stance that keeps akuapkg render deterministic applies to credentials.E_MANIFEST_GIT_USERINFO for the rationale. Short version: multi-tenant SDK consumers can't safely inherit ambient credentials, and the same explicit-input stance that keeps akuapkg render deterministic applies to credentials.Related
-
+E_MANIFEST_GIT_USERINFO — why credentials can't live in akua.toml
diff --git a/site/errors/E_AUTH_REQUIRED.html b/site/errors/E_AUTH_REQUIRED.html
index 44fb33f..3c916e0 100644
--- a/site/errors/E_AUTH_REQUIRED.html
+++ b/site/errors/E_AUTH_REQUIRED.html
@@ -315,11 +315,11 @@ E_MANIFEST_GIT_USERINFO — why credentials can't live in akua.tomlGeneral
E_AUTH_REQUIRED
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_CHECK_FAIL
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_COSIGN_SIG_MISSING
What happened
.sig sidecar (or it's malformed). Publisher-side signal — actionable by the artifact's author, not the consumer.How to fix it
--json output if the message above wasn't enough.What happened
.sig sidecar (or it's malformed). Publisher-side signal — actionable by the artifact's author, not the consumer.How to fix it
--json output if the message above wasn't enough.General
E_COSIGN_VERIFY
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_DEP_KIND_MISMATCH
What happened
import <alias> (or pkg.render({package = "<alias>"})) in package.k resolves to a kind that's unreachable from KCL. Most common case: an Akua/KCL-module dep was misclassified as a Helm chart by the resolver, or the user declared a Helm chart alias they then tried to import. akua lock catches this before akua check later fails with the opaque CannotFindModule from KCL.How to fix it
--json output if the message above wasn't enough.What happened
import <alias> (or pkg.render({package = "<alias>"})) in package.k resolves to a kind that's unreachable from KCL. Most common case: an Akua/KCL-module dep was misclassified as a Helm chart by the resolver, or the user declared a Helm chart alias they then tried to import. akua lock catches this before akua check later fails with the opaque CannotFindModule from KCL.How to fix it
--json output if the message above wasn't enough.General
E_DEP_RESOLVE
What happened
akua.toml failed to resolve (missing path, not-a-directory, OCI/git fetch failure, lockfile mismatch). Covers all dep kinds — path / oci / git / vendor — not chart-specific. See chart_resolver and vendor.How to fix it
--json output if the message above wasn't enough.What happened
akua.toml failed to resolve (missing path, not-a-directory, OCI/git fetch failure, lockfile mismatch). Covers all dep kinds — path / oci / git / vendor — not chart-specific. See chart_resolver and vendor.How to fix it
--json output if the message above wasn't enough.General
E_DIFF_FOUND
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_DIFF_NOT_DIR
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_ENGINE_NOT_AVAILABLE
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_FMT_CHANGED
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_FMT_KCL
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_FORBIDDEN
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_INIT_EMPTY_NAME
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_INIT_EXISTS
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_INPUTS_MISSING
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_INPUTS_PARSE
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_INSPECT_FAIL
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_INVALID_FLAG
What happened
--timeout=5min, --max-depth=foo, etc. Distinct from E_INPUTS_PARSE (which covers inputs.yaml content) so agents can branch on the right thing.How to fix it
--json output if the message above wasn't enough.What happened
--timeout=5min, --max-depth=foo, etc. Distinct from E_INPUTS_PARSE (which covers inputs.yaml content) so agents can branch on the right thing.How to fix it
--json output if the message above wasn't enough.General
E_IO
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_LINT_FAIL
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_LOCK_DRIFT
What happened
akua.lock is out of sync with akua.toml — akua lock --check found drift. Re-run akua lock without --check to refresh.How to fix it
--json output if the message above wasn't enough.What happened
akua.lock is out of sync with akua.toml — akua lock --check found drift. Re-run akua lock without --check to refresh.How to fix it
--json output if the message above wasn't enough.General
E_LOCK_MISSING
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_LOCK_PARSE
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.What happened
Why akua refuses
akua.toml lives in version control. So does akua.lock, which records the canonical source URL of every resolved dep. If the manifest URL contained credentials, those credentials would be persisted into the lockfile, the git history of the project, and any artifact akua publishes — for the lifetime of the repository. Even rotating the token after the fact doesn't fully undo the leak (commit history, mirror clones, attacker forks).kubectl apply -f'd manifests applies to akua's dependency declarations.source (see lockfile-format.md) canonicalizes URLs by stripping userinfo, default ports, and .git suffix — so even if a malformed call ever reached the lockfile-write path, the credential would not survive. This validation is the first line of defense; the canonicalization is the second.source (see lockfile-format.md) canonicalizes URLs by stripping userinfo, default ports, and .git suffix — so even if a malformed call ever reached the lockfile-write path, the credential would not survive. This validation is the first line of defense; the canonicalization is the second.How to fix it
akua.toml.From the SDK
@@ -336,7 +336,7 @@ From the SDK
'github.com/myco/private': { username: 'alice', password: process.env.GH_TOKEN! }
}
});
-auth map is keyed by URL prefix (longest-prefix wins, same rule git's credential helper / .npmrc URL keys use). See sdk.md → Credentials for the full resolution rules.auth map is keyed by URL prefix (longest-prefix wins, same rule git's credential helper / .npmrc URL keys use). See sdk.md → Credentials for the full resolution rules.From the CLI
akuapkg vendor add upstream --auth github.com/myco/private=alice:$GH_TOKEN--auth for multiple hosts. For environments where flags are awkward (CI, scripts), pass --auth-file <path> pointing at a TOML file you explicitly named:Why no
~/.netrc /
@akua-dev/sdk may handle requests from multiple tenants. Credentials that "happen to be on disk" can cross-contaminate between tenants. Explicit-only auth means each call carries exactly the credentials authorized for that call's principal.akuapkg render runs Packages in a wasmtime sandbox with strict capability scoping. Extending the same "no implicit input" stance to credentials is a coherent invariant — the SDK and CLI surface are the only places credentials enter the system.Related
-
+
diff --git a/site/errors/E_MANIFEST_HELM_CHART_INVALID.html b/site/errors/E_MANIFEST_HELM_CHART_INVALID.html
index 6aaacf4..f369abc 100644
--- a/site/errors/E_MANIFEST_HELM_CHART_INVALID.html
+++ b/site/errors/E_MANIFEST_HELM_CHART_INVALID.html
@@ -315,11 +315,11 @@ General
E_MANIFEST_HELM_CHART_INVALID
What happened
akua.toml declares a repo dep whose chart value contains path separators (/, \) or .. — a chart name must be a plain single-component name. Rejected at parse time to prevent path confusion in the chart cache.How to fix it
--json output if the message above wasn't enough.What happened
akua.toml declares a repo dep whose chart value contains path separators (/, \) or .. — a chart name must be a plain single-component name. Rejected at parse time to prevent path confusion in the chart cache.How to fix it
--json output if the message above wasn't enough.General
E_MANIFEST_HELM_MISSING_CHART
What happened
akua.toml declares a repo (HTTPS Helm repository) dep that is missing the required chart field.How to fix it
--json output if the message above wasn't enough.What happened
akua.toml declares a repo (HTTPS Helm repository) dep that is missing the required chart field.How to fix it
--json output if the message above wasn't enough.General
E_MANIFEST_HELM_MISSING_VERSION
What happened
akua.toml declares a repo dep that is missing the required version field (a semver constraint is mandatory for reproducibility).How to fix it
--json output if the message above wasn't enough.What happened
akua.toml declares a repo dep that is missing the required version field (a semver constraint is mandatory for reproducibility).How to fix it
--json output if the message above wasn't enough.General
E_MANIFEST_HELM_USERINFO
What happened
akua.toml declares a repo dep whose URL contains embedded credentials (https://user:pass@host/...). Rejected at parse time so the credential never reaches the lockfile or git history. Pass credentials via the SDK auth parameter or --auth instead.How to fix it
--json output if the message above wasn't enough.What happened
akua.toml declares a repo dep whose URL contains embedded credentials (https://user:pass@host/...). Rejected at parse time so the credential never reaches the lockfile or git history. Pass credentials via the SDK auth parameter or --auth instead.How to fix it
--json output if the message above wasn't enough.General
E_MANIFEST_MISSING
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_MANIFEST_OCI_USERINFO
What happened
akua.toml declares an oci dep whose URL contains embedded credentials (oci://user:pass@host/...). Rejected at parse time so the credential never reaches the lockfile or git history. Pass credentials via the SDK auth parameter or --auth instead.How to fix it
--json output if the message above wasn't enough.What happened
akua.toml declares an oci dep whose URL contains embedded credentials (oci://user:pass@host/...). Rejected at parse time so the credential never reaches the lockfile or git history. Pass credentials via the SDK auth parameter or --auth instead.How to fix it
--json output if the message above wasn't enough.General
E_MANIFEST_PARSE
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_PACKAGE_MISSING
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_PACKAGE_PARSE
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.What happened
which escapes the Package directory `/private/tmp/spike1/install`
Why akua refuses
akuapkg render runs each Package inside a wasmtime sandbox with read-only filesystem preopens scoped to the Package directory. A path that resolves outside that root is — by construction — unreachable through the sandbox's capabilities. We surface the error early instead of letting it manifest as a confusing wasmtime open-file failure deeper in the render.docs/security-model.md for the full threat model.docs/security-model.md for the full threat model.How to fix it
akua.toml and compose it by its typed alias — user code never writes a filesystem path. pkg.render accepts package = "<alias>" only; there is no path = "..." form.1. Vendor the dependency as a subdirectory
@@ -364,11 +364,11 @@ 2. Declare a separatel
What NOT to do
/var/cache/...). The sandbox refuses anything outside its preopened roots, even if you chmod your way to readability../link → ../upstream symlink resolves the same as ../upstream and gets rejected the same way.See also
-
+docs/lockfile-format.md — akua.toml [dependencies] syntax.docs/package-format.md — Package authoring shape.docs/security-model.md — sandbox invariants.
diff --git a/site/errors/E_PUBLISH_FAILED.html b/site/errors/E_PUBLISH_FAILED.html
index ccbe6f5..89b9fbc 100644
--- a/site/errors/E_PUBLISH_FAILED.html
+++ b/site/errors/E_PUBLISH_FAILED.html
@@ -315,11 +315,11 @@ docs/lockfile-format.md — akua.toml [dependencies] syntax.docs/package-format.md — Package authoring shape.docs/security-model.md — sandbox invariants.General
E_PUBLISH_FAILED
What happened
akua publish failed to upload the artifact. Wraps every registry- side failure (auth rejected, upload PUT non-2xx, manifest malformed).How to fix it
--json output if the message above wasn't enough.What happened
akua publish failed to upload the artifact. Wraps every registry- side failure (auth rejected, upload PUT non-2xx, manifest malformed).How to fix it
--json output if the message above wasn't enough.General
E_PULL_FAILED
What happened
akua pull couldn't retrieve / extract the requested artifact.How to fix it
--json output if the message above wasn't enough.What happened
akua pull couldn't retrieve / extract the requested artifact.How to fix it
--json output if the message above wasn't enough.General
E_REMOVE_NOT_FOUND
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_RENDER_BUDGET_DEADLINE
What happened
pkg.render was called after the wall-clock deadline the outer caller installed for the render had already expired.How to fix it
--json output if the message above wasn't enough.What happened
pkg.render was called after the wall-clock deadline the outer caller installed for the render had already expired.How to fix it
--json output if the message above wasn't enough.General
E_RENDER_BUDGET_DEPTH
What happened
pkg.render exceeded the render-stack depth cap. Default is generous (16); hitting it usually means runaway composition through fresh Packages, which cycle detection alone can't catch.How to fix it
--json output if the message above wasn't enough.What happened
pkg.render exceeded the render-stack depth cap. Default is generous (16); hitting it usually means runaway composition through fresh Packages, which cycle detection alone can't catch.How to fix it
--json output if the message above wasn't enough.General
E_RENDER_CYCLE
What happened
pkg.render re-entered a Package already on the render stack — composition cycle. Caught before the inner load to bound recursion; covers both direct and transitive cycles.How to fix it
--json output if the message above wasn't enough.What happened
pkg.render re-entered a Package already on the render stack — composition cycle. Caught before the inner load to bound recursion; covers both direct and transitive cycles.How to fix it
--json output if the message above wasn't enough.General
E_RENDER_KCL
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_RENDER_OUTPUT_TOO_LARGE
What happened
E_RENDER_KCL so agents don't mistake an over-large-but-valid render for a program error.How to fix it
--json output if the message above wasn't enough.What happened
E_RENDER_KCL so agents don't mistake an over-large-but-valid render for a program error.How to fix it
--json output if the message above wasn't enough.General
E_RENDER_YAML
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_STRICT_UNTYPED_CHART
What happened
akua render --strict: a plugin was handed a raw-string chart path instead of a typed charts.* import. Surfaces the Package authoring site that needs to migrate.How to fix it
--json output if the message above wasn't enough.What happened
akua render --strict: a plugin was handed a raw-string chart path instead of a typed charts.* import. Surfaces the Package authoring site that needs to migrate.How to fix it
--json output if the message above wasn't enough.General
E_UNSUPPORTED
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_VENDOR_DEP_MISSING
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.General
E_VENDOR_DRIFT
What happened
How to fix it
--json output if the message above wasn't enough.What happened
How to fix it
--json output if the message above wasn't enough.Error codes
diff --git a/site/examples/00-helm-hello.html b/site/examples/00-helm-hello.html
index 0223054..2e2ea49 100644
--- a/site/examples/00-helm-hello.html
+++ b/site/examples/00-helm-hello.html
@@ -301,7 +301,7 @@
00-helm-hello
Renders end-to-end via the embedded
+helm-engine-wasm. No helm binary on $PATH needed or consulted. All template rendering happens inside a wasmtime WASI sandbox. See docs/security-model.md + docs/roadmap.md Phase 1.Renders end-to-end via the embedded
helm-engine-wasm. No helm binary on $PATH needed or consulted. All template rendering happens inside a wasmtime WASI sandbox. See docs/security-model.md + docs/roadmap.md Phase 1.helm.template engine callable end-to-end.What's here
@@ -313,10 +313,10 @@ file purpose package.kKCL Package; imports akua.helm, calls helm.template, wires the result into resources = ….akua.tomlManifest — no external deps. inputs.example.yamlAuto-discovered by akuapkg render when --inputs is omitted.chart/A tiny in-tree Helm chart (one ConfigMap template).Render
akuapkg render --package examples/00-helm-hello/package.k --out ./rendered
ConfigMap lands at ./rendered/000-configmap-hello-greeting.yaml — already checked in alongside the example so you can eyeball the output without running anything.What's happening
-package.k imports akua.helm — the bundled akua KCL stdlib, a thin typed wrapper over kcl_plugin.helm — and calls helm.template(helm.Template { ... }). Under the hood, akua's plugin dispatcher routes the call to a Rust handler that tars the chart directory, hands it to a Go program compiled to wasm32-wasip1 hosted via wasmtime (see crates/helm-engine-wasm/), parses the multi-document YAML output back into resources, and splats them into resources.package.k imports akua.helm — the bundled akua KCL stdlib, a thin typed wrapper over kcl_plugin.helm — and calls helm.template(helm.Template { ... }). Under the hood, akua's plugin dispatcher routes the call to a Rust handler that tars the chart directory, hands it to a Go program compiled to wasm32-wasip1 hosted via wasmtime (see crates/helm-engine-wasm/), parses the multi-document YAML output back into resources, and splats them into resources.helm binary touched. No subprocess. No $PATH. The entire render path lives inside a WASI sandbox. Per CLAUDE.md: "No shell-out, ever."Spec
-docs/package-format.md §5 for the outputs shape and docs/cli.md akuapkg render.docs/package-format.md §5 for the outputs shape and docs/cli.md akuapkg render.package.k
# Minimal Package that exercises the `helm.template` plugin callable.
#
# Renders the adjacent `./chart/` (a tiny ConfigMap template) through
@@ -377,12 +377,12 @@ Rendered output
000-configmap-hello-greeting.yaml
Local fork override
nginx = { oci = "oci://registry-1.docker.io/bitnamicharts/nginx", version = "18.2.0", replace = { path = "../nginx-fork" } }akua.lock still records the oci:// digest; files resolve from ../nginx-fork. Drop the replace clause to switch back.See also
-
+render — render verb + flagsrender — render verb + flagspackage.k
# Example 01 — hello-webapp
#
# Smallest useful akua Package. One local-path chart dep, a few public
@@ -425,12 +425,12 @@ 001-service-hello.yaml
apiVersion: v1
type: ClusterIP
The cross-source convention pattern
}]
cluster.get() runtime call ever needed.What's disallowed
-
+input; cross-source late-binding is the RGD case. If you genuinely need it, route that source to a ResourceGraphDefinition output and let kro reconcile. See 06-multi-engine/ for the pattern.input; cross-source late-binding is the RGD case. If you genuinely need it, route that source to a ResourceGraphDefinition output and let kro reconcile. See 06-multi-engine/ for the pattern.See also
-
+package.k
# Example 02 — webapp-postgres
#
# Cross-source wiring. A webapp consumes a Postgres connection URL from a
@@ -409,12 +409,12 @@ package.k
# Example 02 — webapp-postgres
Flow for a change
Why this design
See also
-
+Package.k, the one akua-specified shapetier/production policy the production environment referencesPackage.k, the one akua-specified shapetier/production policy the production environment referencesExample 04 — policy tier
-akua policy check against passing + failing fixtures*_test.rego file showing the test shapePolicySet kind. Composition happens as plain Rego file layout: local .rego files import tiers as compile-resolved data.* via akua.toml. The workspace's policy layout is the workspace's concern.Layout
04-policy-tier/
@@ -357,16 +357,16 @@ The shape of a deny response
}See also
-
+akua.toml + akua.lock workpolicy check — verb referenceakua.toml + akua.lock workpolicy check — verb referenceGolden tests
When to add what
test_*.k for schema + defaults.*_test.rego alongside.akuapkg test --golden first; expect some drift, review it, update if sound.See also
-
+test — verb reference, flags, exit codestest — verb reference, flags, exit codespackage.k
import akua.ctx
import charts.nginx as nginx
@@ -393,12 +393,12 @@ package.k
import akua.ctx
Render
├── 005-networkpolicy-webapp.yaml # from inline KCL
└── 006-resourcegraphdefinition-glue.yaml # from kro.rgd — kro reconciles itSee also
-
+--engine=shell--engine=shellpackage.k
# Example 06 — multi-engine
#
# One Package, four sources, one render output (raw YAML):
@@ -440,12 +440,12 @@ package.k
# Example 06 — multi-engine
Example 07 — package reuse (cross-package composition)
akua.toml, imports its Input schema into its own schema (as a nested field), and renders the base's resources inline alongside its own additions.The pattern
┌──────────────────────────────────────────────────────────────┐
│ platform-base │ (separate repo, OCI-published)
@@ -370,9 +370,9 @@ When to reuse vs fork
Package.k into your workspace and editing it. You lose the upgrade path; you own the full surface.postRenderer hacks that are harder to maintain than a fork.Open-question addendum
-pkg.render(Package, inputs) vs alternatives (base.render(input.base), auto-unwrapping imports, etc.) may iterate before the spec locks in. See masterplan §18 open question 6 and design-notes.md §6. Consumers of this example: don't hard-code the exact callable name in skills or training material yet.pkg.render(Package, inputs) vs alternatives (base.render(input.base), auto-unwrapping imports, etc.) may iterate before the spec locks in. See masterplan §18 open question 6 and design-notes.md §6. Consumers of this example: don't hard-code the exact callable name in skills or training material yet.See also
-
+akua.tomlpkg is the fourthakua.tomlpkg is the fourthpackage.k
# Example 07 — package reuse
#
# Composes a base Package (pinned by OCI digest in akua.toml) and adds local
@@ -481,12 +481,12 @@ package.k
# Example 07 — package reuse
001-configmap-backend.yaml
apiVersion: v1
LOG_LEVEL: info
09-kustomize-hello
Renders end-to-end via the embedded
+kustomize-engine-wasm. No kustomize binary on $PATH needed or consulted. Kustomize runs inside a wasmtime WASI sandbox against an in-memory filesystem unpacked from a tar.gz sent over the WASM ABI. See docs/security-model.md + docs/roadmap.md Phase 3.Renders end-to-end via the embedded
kustomize-engine-wasm. No kustomize binary on $PATH needed or consulted. Kustomize runs inside a wasmtime WASI sandbox against an in-memory filesystem unpacked from a tar.gz sent over the WASM ABI. See docs/security-model.md + docs/roadmap.md Phase 3.kustomize.build engine callable end-to-end.What's here
@@ -310,7 +310,7 @@ file purpose package.kKCL Package; imports akua.kustomize, calls kustomize.build("./overlay"), wires the result into resources.akua.tomlManifest — no external deps. base/Base layer — a single ConfigMap.overlay/Overlay — adds a namePrefix + commonLabels.Render
akuapkg render --package examples/09-kustomize-hello/package.k --out ./renderedConfigMap lands at ./rendered/000-configmap-prod-hello.yaml — named prod-hello with the overlay's env: prod label applied. Checked in alongside the example so you can eyeball the output without running anything.Spec
-docs/package-format.md for the Package shape and docs/cli.md akuapkg render.docs/package-format.md for the Package shape and docs/cli.md akuapkg render.package.k
# Minimal Package that exercises the `kustomize.build` plugin callable.
#
# Wraps the adjacent `./overlay/` (which layers a namePrefix + labels
@@ -342,12 +342,12 @@ Rendered output
000-configmap-prod-hello.yaml
- Source: examples/09-kustomize-hello/
+ Source: examples/09-kustomize-hello/
- Source: examples/10-kcl-ecosystem/
+ Source: examples/10-kcl-ecosystem/
diff --git a/site/examples/11-install-as-package.html b/site/examples/11-install-as-package.html
index f9d9b38..4034fb6 100644
--- a/site/examples/11-install-as-package.html
+++ b/site/examples/11-install-as-package.html
@@ -321,7 +321,7 @@ The install pattern
_extras = [{apiVersion = "v1", kind = "ConfigMap", ...}]
resources = _filtered + _extras
-The import lands a synthesized stub that owns a render lambda and re-exports upstream's schemas — KCL type-checks upstream.Input{...} at the call site (typos surface as compile errors, not as runtime worker traps). The mechanism mirrors import charts.<name> for Helm charts; see docs/package-format.md for the full shape.
The import lands a synthesized stub that owns a render lambda and re-exports upstream's schemas — KCL type-checks upstream.Input{...} at the call site (typos surface as compile errors, not as runtime worker traps). The mechanism mirrors import charts.<name> for Helm charts; see docs/package-format.md for the full shape.
import akua.ctx
import pkgs.upstream as upstream
@@ -415,12 +415,12 @@ 002-configmap-webapp-install-meta.yaml
apiV
upstreamApp: webapp
- Source: examples/11-install-as-package/
+ Source: examples/11-install-as-package/
diff --git a/site/examples/12-vendor-offline.html b/site/examples/12-vendor-offline.html
index 8b519f9..73f89e6 100644
--- a/site/examples/12-vendor-offline.html
+++ b/site/examples/12-vendor-offline.html
@@ -395,12 +395,12 @@ Rendered output
000-configmap-vendored-vendored.yaml
- Source: examples/12-vendor-offline/
+ Source: examples/12-vendor-offline/
diff --git a/site/examples/13-subpackage-helm.html b/site/examples/13-subpackage-helm.html
index 182cd57..5591caa 100644
--- a/site/examples/13-subpackage-helm.html
+++ b/site/examples/13-subpackage-helm.html
@@ -357,12 +357,12 @@ Rendered output
000-deployment-web-nginx.yaml
- Source: examples/13-subpackage-helm/
+ Source: examples/13-subpackage-helm/
diff --git a/site/examples/14-helm-repo-dep.html b/site/examples/14-helm-repo-dep.html
index 03f8da0..53ff330 100644
--- a/site/examples/14-helm-repo-dep.html
+++ b/site/examples/14-helm-repo-dep.html
@@ -334,12 +334,12 @@ package.k
# Package that pulls podinfo from
- Source: examples/14-helm-repo-dep/
+ Source: examples/14-helm-repo-dep/
diff --git a/site/examples/index.html b/site/examples/index.html
index 8230a5e..41cfc7d 100644
--- a/site/examples/index.html
+++ b/site/examples/index.html
@@ -363,7 +363,7 @@ Examples
diff --git a/site/index.html b/site/index.html
index 3670bba..426a683 100644
--- a/site/index.html
+++ b/site/index.html
@@ -309,7 +309,7 @@ Install (Windows)
> irm https://cli.akua.dev/install.ps1 | iex
From source
-$ cargo install --git https://github.com/akua-dev/akua akuapkg-cli
+$ cargo install --git https://github.com/akua-dev/akuapkg akuapkg-cli
SDK
$ npm install @akua-dev/sdk
@@ -323,8 +323,8 @@ Docs
Concepts
Examples
Errors
- GitHub
- Releases
+ GitHub
+ Releases
@@ -332,7 +332,7 @@
Docs
diff --git a/site/start/index.html b/site/start/index.html
index c476e74..0436b70 100644
--- a/site/start/index.html
+++ b/site/start/index.html
@@ -297,10 +297,10 @@
Get started
Install akua, render your first Package, and ship a signed artifact — in five minutes.
-Pre-alpha. The path below works end-to-end on macOS / Linux. If you hit a wall, the error code reference and the verb's CLI page are the next stops.
+Pre-alpha. The path below works end-to-end on macOS / Linux. If you hit a wall, the error code reference and the verb's CLI page are the next stops.
1. Install
$ curl -fsSL https://cli.akua.dev/install | sh
-Or grab a pinned binary from Releases. Windows: irm https://cli.akua.dev/install.ps1 | iex.
+Or grab a pinned binary from Releases. Windows: irm https://cli.akua.dev/install.ps1 | iex.
Verify the install:
$ akuapkg version
akua 0.8.7
@@ -335,13 +335,13 @@ 5. Verify + sign + publish
$ akuapkg verify # akua.toml ↔ akua.lock integrity + cosign signatures
$ akua sign # cosign-sign the artifact
$ akuapkg publish # push the signed OCI artifact + SLSA attestation
-By default publish refuses unless the lockfile is clean and a cosign key is configured. See Concepts → Security model for the threat model and what strict_signing enforces.
+By default publish refuses unless the lockfile is clean and a cosign key is configured. See Concepts → Security model for the threat model and what strict_signing enforces.
What's next
-- Walk through the runnable examples — every one has
package.k, inputs, and the rendered output side-by-side. - Read Concepts → Package format for the authoring shape.
- Skim the CLI reference to see every verb at a glance — twenty-seven shipped, more in flight.
- The SDK wraps the same surface for TypeScript / Bun / Deno consumers.
+- Walk through the runnable examples — every one has
package.k, inputs, and the rendered output side-by-side. - Read Concepts → Package format for the authoring shape.
- Skim the CLI reference to see every verb at a glance — twenty-seven shipped, more in flight.
- The SDK wraps the same surface for TypeScript / Bun / Deno consumers.
diff --git a/skills/README.md b/skills/README.md
index f014780..48455f6 100644
--- a/skills/README.md
+++ b/skills/README.md
@@ -47,7 +47,7 @@ These skills install wherever the Agent Skills Specification is supported. Use w
**With `npx skills` (Vercel Labs skill manager):**
```sh
-npx skills install github:akua-dev/akua/skills
+npx skills install github:akua-dev/akuapkg/skills
```
**With Claude Code:**