> For the complete documentation index, see [llms.txt](https://docs.platform9.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.platform9.com/private-cloud-director/getting-started/self-hosted/airctl/options-json-reference.md).

# Options.json Reference

`options.json` holds deployment-specific settings for a <code class="expression">space.vars.self\_hosted\_product\_name</code> installation. Airctl reads it during install, upgrade, and restore, and applies the settings to the management plane deployment.

The file lives at:

```
/opt/pf9/airctl/conf/options.json
```

It is a flat JSON object of string keys and string values. Note that values are strings even when they represent a boolean or a number:

```json
{
  "chart_url": "<chart_url>",
  "community_edition": "false",
  "mysql_disk_size": "10Gi"
}
```

## How airctl uses the file

Airctl reads the entire file and forwards it to the management plane deployment. It interprets a small number of keys itself and passes the rest through unchanged.

This has two consequences worth understanding before you edit the file:

* **Unrecognized keys are not rejected.** Airctl does not validate the file against a fixed schema, so a misspelled key is silently ignored rather than reported as an error. Check spelling carefully against this page.
* **The keys listed here are not an exhaustive set.** This page documents the keys that airctl interprets, plus those referenced elsewhere in this documentation. A deployment may accept additional keys that are not listed here.

{% hint style="info" %}
Edit `options.json` before you run the command that consumes it. Airctl reads the file at the start of an install, upgrade, or restore, so changes made while one of those operations is running have no effect on it.
{% endhint %}

## Keys set automatically by airctl

Airctl writes these keys itself, based on values in `airctl-config.yaml`. Set them in `airctl-config.yaml` rather than editing them here, because airctl overwrites them on the next run.

| Key                       | Written from            | Description                                                 |
| ------------------------- | ----------------------- | ----------------------------------------------------------- |
| `enable_kaapi`            | `enableK8s`             | Whether the Kubernetes management plane is deployed.        |
| `enable_private_registry` | `customRegistryEnabled` | Whether the deployment pulls images from a custom registry. |

## Keys airctl interprets

| Key                 | Values              | Description                                                                                                                     |
| ------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `chart_url`         | URL                 | Location of the chart bundle to deploy. Required: airctl fails with an error if it is missing or empty.                         |
| `community_edition` | `"true"`, `"false"` | Whether airctl runs in Community Edition mode. Defaults to `false` when absent.                                                 |
| `kaapi_dev_mode`    | `"true"`, `"false"` | Deploys the Kubernetes management plane with reduced resource requests, for test environments. Defaults to `false` when absent. |

## Keys passed through to the deployment

Airctl forwards these without interpreting them. They control how the management plane itself is deployed.

| Key                           | Values                | Description                                                                       |
| ----------------------------- | --------------------- | --------------------------------------------------------------------------------- |
| `multi_region`                | `"true"`, `"false"`   | Whether the deployment hosts more than one region.                                |
| `parallel`                    | `"true"`, `"false"`   | Whether region components are deployed in parallel.                               |
| `skip_components`             | Comma-separated names | Components to leave out of the deployment.                                        |
| `rabbitmq_clustering_enabled` | `"true"`, `"false"`   | Whether message-queue clustering is enabled. Enabled by default during a restore. |

### Storage class and disk size keys

Storage classes (`<component>_sc`) and volume sizes (`<component>_disk_size`) are set here too, along with the audit keys `audit_pvc_sc`, `audit_pvc_size`, and `audit_retention_days`.

These are documented with a full example, and with the rules on when each can be changed, in [self-hosted-pre-requisites.md](/private-cloud-director/getting-started/self-hosted/self-hosted-pre-requisites.md): see the storage configuration section.

## Editing the file

1. Back up the current file so you can compare or revert:

   ```bash
   cp /opt/pf9/airctl/conf/options.json /opt/pf9/airctl/conf/options.json.bak
   ```
2. Edit the file and confirm it is still valid JSON:

   ```bash
   python3 -m json.tool /opt/pf9/airctl/conf/options.json
   ```
3. Run the install, upgrade, or restore command that should pick up the change.

{% hint style="warning" %}
Preserve `options.json` when you rebuild a management cluster. A new installation does not carry your customizations over, and a restore uses whatever the file contains at the time it runs. Verify the contents before you start a restore.
{% endhint %}

## Related Pages

* [self-hosted-pre-requisites.md](/private-cloud-director/getting-started/self-hosted/self-hosted-pre-requisites.md): storage class and disk size settings, with a full `options.json` example.
* [README.md](/private-cloud-director/getting-started/self-hosted/airctl.md): the full `airctl-config.yaml` schema, including `optionsPath`.
* [install-using-the-helper-script.md](/private-cloud-director/getting-started/self-hosted/install-using-the-helper-script.md): supplying an overrides file at install time.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.platform9.com/private-cloud-director/getting-started/self-hosted/airctl/options-json-reference.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
