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

# Creating Installs

> Configuring the installs for your customers

When you ship an app to customers through Nuon, you create one install per customer. This page covers configuring those installs, labeling them so they're easy to identify, and monitoring their workflows once they're running.

## Install Configs

If you create installs at scale — for example, one per customer in an automated onboarding flow — you can generate install configs programmatically instead of authoring them by hand.

Install configs are defined by a [JSON Schema](/config-ref/install) that lists every field, its type, and its validation rules. Feed the schema to a code generator, validator, or template engine and produce install configs from your own data.

Apply a generated config with the Nuon CLI:

```bash theme={null}
nuon installs sync --file <your-install>.toml --app-id <your-app-id> --yes
```

For the full property list, see the [Install configuration reference](/config-ref/install).

## Labeling installs

Installs support arbitrary key/value `labels` set via the `labels` field in the install config. Labels are useful for tagging installs with metadata like environment, region, or version, and they're surfaced in the dashboard alongside the install.

```toml install.toml theme={null}
name = "customer-acme"

[labels]
env = "production"
region = "us-east-1"
tier = "enterprise"
```

See [Label badges](/guides/using-readmes#label-badge) for how labels render in install READMEs.

### Dynamic labels

Label values can use the [interpolation syntax](/guides/using-variables) to render from install state:

```toml install.toml theme={null}
name = "customer-acme"

[labels]
env    = "production"
region = "{{ .nuon.cloud_account.aws.region }}"
tier   = "{{ .nuon.install.inputs.tier }}"
```

Dynamic values are rendered when the install install state changes — deploys, input updates, and config updates all trigger a refresh.
The rendered value is displayed in the dashboard and what [webhook and Slack label selectors](/guides/webhooks) match against.

If a template references state that doesn't exist yet (for example, a component output before its first
deploy), the label is skipped rather than failing the sync; it appears once the referenced state is
available.

### Default labels

Labels defined in the app's [`default_labels`](/guides/managing-apps#default-labels) apply to every install
and are owned by the app config — an install config cannot override or remove those keys, and a sync that
tries to set a different value for one fails with an error.

## Toggling components

If your app has [toggleable components](/guides/toggleable-components), the install config decides which ones are enabled. Set the state per component in a `[component_toggles]` section, keyed by component name:

```toml install.toml theme={null}
name = "customer-acme"

[component_toggles]
observability = true
certificate   = false
```

See the [Toggleable Components guide](/guides/toggleable-components) for how toggles reconcile on sync, dependency validation, and imperative dashboard/CLI toggles.

## Monitoring in-progress workflows

Once an install kicks off a deploy — or any other workflow — you can monitor progress from the dashboard, via outbound webhooks, or via Slack notifications.

Connect your workspace to get real-time deploy notifications — see the [Slack integration guide](/guides/slack). For programmatic integrations, [webhooks](/guides/webhooks) deliver the same workflow lifecycle events as CloudEvents over HTTP.

## Syncing Install Configs from Git

Instead of applying these files one command at a time, you can point your app at a Git repository that holds them. Pushes to that repo then keep every install in sync, and new files propose new installs for approval. Configure it with an `installs.toml` file or an `[installs_config]` section in your app config.

See the [Syncing Install Configs from Git](/guides/install-config-syncing) guide for setup and usage.
