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

# MinIO Object Storage Configuration

> Configuration for the built-in MinIO object storage service used by the CrewAI Platform.

<Warning>
  The internal MinIO option is **not intended for production use**. Use external
  S3-compatible storage (AWS S3, Azure Blob Storage, Google Cloud Storage, or
  dedicated MinIO cluster) for production deployments.
</Warning>

<ParamField path="minio.enabled" type="boolean" default="false">
  Enable or disable the built-in MinIO deployment.

  **When Enabled:** Creates MinIO Deployment, Service, and PersistentVolumeClaim.

  **When Disabled:** Configure external S3-compatible storage via:

  * `envVars.STORAGE_SERVICE`
  * `envVars.AWS_REGION`
  * `envVars.AWS_BUCKET`
  * `secrets.AWS_ACCESS_KEY_ID`
  * `secrets.AWS_SECRET_ACCESS_KEY`
</ParamField>

<ParamField path="minio.rootUser" type="string" default="minioadmin">
  MinIO root username (equivalent to AWS access key ID).

  **Security Warning:** Change this from the default value for any non-development deployment.
</ParamField>

<ParamField path="minio.rootPassword" type="string" default="minioadmin">
  MinIO root password (equivalent to AWS secret access key).

  **Security Warning:** Use a strong, unique password. This value is exposed to all pods that need S3 access.
</ParamField>

### `minio.image.*`

MinIO container image configuration.

<ParamField path="minio.image.host" type="string" default="">
  Container registry hosting the MinIO image.

  **Default:** `""` (empty) - Automatically uses `global.imageRegistry` value

  **Fallback Behavior:**

  When `minio.image.host` is empty or not set, the chart uses `global.imageRegistry` via the `crewai-platform.minioImageRegistry` template helper.

  **When imageNamePrefixOverride is Set:**

  The image name is automatically simplified:

  * Original: `proxy/crewai/dockerhub/minio/minio`
  * With `imageNamePrefixOverride: "crewai/"` becomes: `crewai/minio`

  See [global.imageNamePrefixOverride](/reference/chart-values/global#param-global-image-name-prefix-override) for details.

  **Example:**

  ```yaml theme={null}
  global:
    imageRegistry: "registry.company.com"

  minio:
    enabled: true
    image:
      host: "" # Automatically uses registry.company.com
      name: "proxy/crewai/dockerhub/minio/minio"
      tag: "latest"
  ```
</ParamField>

<ParamField path="minio.image.name" type="string" default="proxy/crewai/dockerhub/minio/minio">
  MinIO container image name.

  **Default:** `"proxy/crewai/dockerhub/minio/minio"` - Matches Replicated proxy path structure

  **Path Transformation:**

  When `global.imageNamePrefixOverride` is set, only the final component (`minio`) is used with the override prefix.
</ParamField>

<ParamField path="minio.image.tag" type="string" default="latest">
  MinIO image version tag.

  **Production Recommendation:** Use specific version tags instead of `"latest"` for predictable deployments.
</ParamField>

<ParamField path="minio.image.pullPolicy" type="string" default="IfNotPresent">
  Image pull policy for MinIO container.
</ParamField>

<ParamField path="minio.image.pullSecret" type="string" default="">
  Image pull secret for MinIO image. If empty, uses the global `image.pullSecret`.
</ParamField>

<ParamField path="minio.persistence.size" type="string" default="10Gi">
  Size of persistent volume for MinIO data.

  **Sizing Guidelines:**

  * Consider file upload volumes
  * Account for container image storage (if using internal registry)
  * Plan for artifact and log storage
  * Add 50% buffer for growth
</ParamField>

<ParamField path="minio.persistence.reclaimPolicy" type="string" default="keep">
  Volume reclaim policy (same as `postgres.persistence.reclaimPolicy`).
</ParamField>

<ParamField path="minio.persistence.storageClassName" type="string" default="">
  StorageClass for MinIO volume.
</ParamField>

### `minio.resources.*`

Resource limits and requests for MinIO container.

<ParamField path="minio.resources.limits.cpu" type="string" default="1">
  CPU limit for MinIO pod.
</ParamField>

<ParamField path="minio.resources.limits.memory" type="string" default="2Gi">
  Memory limit for MinIO pod.
</ParamField>

<ParamField path="minio.resources.requests.cpu" type="string" default="500m">
  Guaranteed CPU allocation for MinIO pod.
</ParamField>

<ParamField path="minio.resources.requests.memory" type="string" default="1Gi">
  Guaranteed memory allocation for MinIO pod.
</ParamField>

<ParamField path="minio.nodeSelector" type="object" default="{}">
  Node selector for MinIO pod placement.

  **Example:**

  ```yaml theme={null}
  minio:
    nodeSelector:
      node-role.kubernetes.io/storage: "true"
  ```

  **Use Cases:**

  * Ensure MinIO runs on nodes with fast storage
  * Separate storage workload from compute workload
</ParamField>
