Setup Manifest

setup.aiwg.io/v1 manifest reference

SetupManifest Reference (`setup.aiwg.io/v1`)

Overview

`setup.aiwg.io/v1` is a Kubernetes-style YAML language for declaring cross-platform, script-first software installation. A SetupManifest declares a platform matrix, user-facing parameters, prerequisite checks, OS-level configuration entries, ordered installation steps, and named recovery procedures. Manifests are validated, executed, and authored by the agentic-installer addon.

Design philosophy: scripts are the primary artifact. The `agentic` step type exists only for exception handling and adaptive recovery — not as a substitute for scripting known sequences. A well-written SetupManifest produces shell scripts that run standalone without AI tooling.

The authoritative JSON Schema lives at `agentic/code/addons/agentic-installer/schemas/v1/setup-manifest.schema.json`. This document mirrors that schema; on conflict the schema wins.

File Location and Discovery

By convention manifests live at `setup.manifest.yaml` in the project root. The agentic-installer skills (`setup-generate`, `setup-validate`, `setup-run`) accept a path argument; otherwise they look for `setup.manifest.yaml` relative to the working directory.

Top-Level Structure

apiVersion: setup.aiwg.io/v1
kind: SetupManifest
metadata: { ... }
spec:
  platforms: [ ... ]
  params: [ ... ]
  prerequisites: [ ... ]
  os_config: [ ... ]
  steps: [ ... ]
  recovery: [ ... ]
  briefing: { ... }
FieldTypeRequiredDescription
`apiVersion`const `"setup.aiwg.io/v1"`yesAPI version literal.
`kind`const `"SetupManifest"`yesResource kind literal.
`metadata`objectyesIdentity and audience info.
`spec`objectyesPlatform matrix and execution plan.

`additionalProperties: false` at every object — unknown fields are rejected.

`metadata`

FieldTypeRequiredDescription
`name`stringyesIdentifier for this manifest.
`description`stringoptionalFree-form description.
`version`stringoptionalManifest version.
`install_type`enum (below)optional, `user`Audience tag.

`install_type` values: `user` (production deploy), `developer` (local dev environment), `ci` (headless pipeline setup). Only `developer` manifests may use `os_config`.

`spec`

FieldTypeRequiredDescription
`platforms``Platform[]`yes (≥1)Supported platform targets. Installer refuses to run on unlisted platforms.
`params``Param[]`optionalUser-facing parameters resolved before any step executes.
`prerequisites``Prerequisite[]`optionalPrerequisite checks run before any step. Required ones abort if missing.
`os_config``OsConfigEntry[]`optionalOS-level configuration entries (developer manifests only).
`steps``Step[]`yes (≥1)Ordered installation steps.
`recovery``RecoveryProcedure[]`optionalNamed recovery procedures referenced by steps via `on_fail`.
`briefing``{ success?, next_steps? }`optionalMessages delivered on completion.

Platform Matrix

platforms:
  - os: linux
    distros: [ubuntu, debian, fedora]
    arch: [x86_64, arm64]
    shell: bash
FieldType / valuesDescription
`os`enum (below)OS family. Required.
`distros`string[]Optional distro filter (Linux).
`arch`string[]Optional architecture filter.
`shell`enum (below)Shell context.
  • `os` values: `linux`, `macos`, `windows`, `docker`
  • `distros` values: `ubuntu`, `debian`, `fedora`, `rhel`, `rocky`, `centos`, `arch`, `alpine`
  • `arch` values: `x86_64`, `arm64`, `aarch64`
  • `shell` values: `bash`, `zsh`, `sh`, `wsl2` (WSL2 bash on Windows), `native` (PowerShell/cmd)

Params

User-facing parameters resolved before any step runs. Names use UPPER_SNAKE_CASE; values are passed to scripts as env vars.

FieldTypeDescription
`name`stringEnv-var-style name (UPPER_SNAKE_CASE). Required.
`type`enum (below)Value type. Required.
`default`anyDefault if not provided by user.
`required`bool, default `false`Whether the param must be supplied.
`description`stringHuman-readable explanation.
`choices`string[]Valid values when `type: choice`.
`interactive_required`bool, default `false`Force interactive prompt; cannot be pre-filled by default. Use when a wrong default would cause OS configuration changes (SSH key email, GPG key ID, preferred IDE).

`type` values: `string`, `path` (expanded — `~` → home), `bool`, `int`, `choice`.

Prerequisites

prerequisites:
  - name: git
    detect: "command -v git"
    version_min: "2.30"
    install_hint: "Install git: https://git-scm.com"
FieldTypeDescription
`name`stringRequired.
`detect`stringShell command. Exit 0 = present, non-zero = missing. Required.
`version_min`stringMinimum version parsed from `detect` stdout.
`required`bool, default `true`Required prerequisites abort install if missing.
`install_hint`stringShown when missing.

OS Config Entries (Developer Manifests Only)

`os_config` declares OS mutations (kernel params, group membership, file permissions, shell profile changes) as check/apply pairs. Reachable only via `type: os-config` steps that reference an entry by `config_id`.

FieldTypeDescription
`id`stringUnique identifier referenced by `config_id`. Required.
`description`stringWhat this entry does. Required.
`check`stringShell command. Exit 0 = already configured (skip apply), non-zero = needs configuration. Required.
`apply`stringShell command or multi-line script to apply the configuration. Required.
`requires_relogin`bool, default `false`Installer warns the user that logout/login or new shell is required.
`interactive`bool, default `false`Apply triggers a GUI dialog or interactive prompt; installer must pause and inform the user.
`platforms`string[]Optional platform filter. Values: `linux`, `macos`, `windows`.

Steps

Ordered installation steps. Each step has a `type` that selects one of seven execution modes.

Step types

TypeWhen to use
`script`Known operation — use this first. Run a script file with declared params.
`detect`Check environment state.
`ask`Collect user input mid-install.
`verify`Post-operation validation (run `commands`).
`agentic`Exception handling only — adaptive recovery via free-form `instruction`.
`platform-route`Branch by OS/distro using `routes`.
`chain`Invoke a sub-project SetupManifest.
`os-config`Apply a single `os_config` entry by ID (developer manifests only).

Common step fields

FieldTypeDescription
`id`stringUnique step identifier. Referenced by `depends_on` and `on_fail`. Required.
`type`enum (above)Execution mode. Required.
`platform`string or string[]Platform filter. Omit to run on all declared platforms.
`depends_on`string[]Step IDs that must complete successfully before this step runs.
`when`stringCondition expression; step skipped if false. References params by name.
`on_fail`stringRecovery procedure ID to invoke on failure. The literal `recover` invokes the default.

Type-specific fields

TypeRequired fieldsOptional fields
`script``script` (path relative to manifest)`params`, `verify`
`verify``commands` (string[])
`ask``message``on_deny` (`abort` or `skip`)
`agentic``instruction`
`os-config``config_id`
`platform-route``routes[]` (each `{platform, steps[]}`)
`chain``manifest` (path or URL to chained manifest)
`detect`typically uses `verify`/`commands` shape

For `script` steps: `params` lists param names passed to the script as env vars; `verify` is one or more post-step commands (exit 0 = success).

Recovery Procedures

Named groups of steps invoked when a step's `on_fail` matches.

recovery:
  - id: full-reset
    steps:
      - id: reset
        type: script
        script: scripts/reset.sh
FieldTypeDescription
`id`stringRequired. Procedure ID referenced by `step.on_fail`.
`steps``Step[]`Required. Recovery steps (same shape as `spec.steps`).

Briefing

briefing:
  success: "Install complete. Run aiwg help to get started."
  next_steps:
    - "Run aiwg use sdlc to deploy the SDLC framework"
    - "Open ./README.md for project orientation"

Worked Example

apiVersion: setup.aiwg.io/v1
kind: SetupManifest
metadata:
  name: myapp
  version: 1.0.0
  install_type: user
spec:
  platforms:
    - os: linux
      distros: [ubuntu, debian, fedora]
      arch: [x86_64, arm64]
      shell: bash
    - os: macos
      arch: [arm64]
      shell: zsh
  params:
    - name: INSTALL_DIR
      type: path
      required: true
      description: "Where to clone the project"
  prerequisites:
    - name: git
      detect: "command -v git"
      version_min: "2.30"
      install_hint: "Install git: https://git-scm.com"
  steps:
    - id: clone
      type: script
      script: scripts/clone.sh
      params: [INSTALL_DIR]
      verify: "test -d ${INSTALL_DIR}/.git"
      on_fail: full-reset
    - id: configure
      type: script
      script: scripts/configure.sh
      depends_on: [clone]
  recovery:
    - id: full-reset
      steps:
        - id: reset
          type: script
          script: scripts/reset.sh
  briefing:
    success: "Install complete."
    next_steps:
      - "cd ${INSTALL_DIR} && ./bin/myapp --help"

Tooling

The agentic-installer addon ships three skills and one agent:

  • `setup-generate` — discover project artifacts, assemble manifest + script stubs.
  • `setup-validate` — schema + reference checks + agentic-step audit + `--fix`.
  • `setup-run` — six-phase execution with platform detection, dry-run, and recovery

confirmation gate.

  • `installer-agent` — specialized persona for manifest generation, validation, and

execution.

# Generate from a project
aiwg setup-generate

# Validate
aiwg setup-validate setup.manifest.yaml

# Dry run
aiwg setup-run --dry-run

# Execute
aiwg setup-run

Two HIGH-severity rules govern manifest authoring and execution:

  • `installer-safety` — show before run, confirm destructive ops, validate before

execute, agentic-steps-as-exceptions, params-before-steps, no inline secrets, platform mismatch = skip.

  • `installer-authoring` — script-first, always source libs, manifests describe

while scripts act, one manifest per unit, every manifest needs recovery.

Cross-References

  • Schema (authoritative):

`agentic/code/addons/agentic-installer/schemas/v1/setup-manifest.schema.json`

  • Addon source: `agentic/code/addons/agentic-installer/`
  • Script templates: `agentic/code/addons/agentic-installer/scripts/templates/`

(clone, install-deps for ubuntu/fedora/macos/windows, configure, verify, reset, hub-chain)

  • Library helpers (sourced by templates):

`agentic/code/addons/agentic-installer/scripts/lib/{detect,params,verify}.sh`, `detect.ps1`

  • Authoring rules:

`agentic/code/addons/agentic-installer/rules/installer-authoring.md`, `installer-safety.md`

  • Release announcement (introduces the language):

`docs/releases/v2026.4.0-announcement.md` (#663–#667)