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

# Customization and Configuration

> Customize and configure the Zenoo Hub to meet your specific requirements.

# Configuration properties

## Execution

* `hub.execution.expiration`

  **Default**: `1h`

The maximum execution duration before expiration.

If `enable-execution-log` profile is active, a separate execution events logger writes out details of all the execution events.

## Http client

Configure built-in HTTP client

* `hub.http.maxIdleTime`

  **Default**: `180`

* `hub.http.maxLifeTime`

  **Default**: `600`

* `hub.http.maxInMemorySize`

  **Default**: `10485760`

* `hub.http.maxConnections`

  **Default**: `500`

***

## Topic creation

If `create-topics` profile is active, the topics are configured using the following properties

* `hub.topics.partitions`

  **Default**: 10

The number of partitions

* `hub.topics.replicas`

  **Default**: none

The number of replicas

* `hub.topics.retention`

  **Default**: 8H

The data retention duration

## Gateway

* `hub.gateway.max-in-memory`

  **Default**: `10MB`

Maximum size of request body that can be buffered in memory. This setting controls the buffer limit for handling large payloads like base64 content in API requests.

## Admin API security

* `hub.security.user.name`

  **Default**: admin

An admin user name

* `hub.security.user.password`

  **Default**: auto-generated

An admin user password

***

## Client API security

* `jwt.key`

  **Default**: auto-generated

A secret key used for generating JWT tokens.

***

* `jwt.expiration`

  **Default**: `1800`

JWT tokens generated with specified expiration.

## Kafka streams

* `hub.streams.prefix` **(Required)**

  **Default**: none

The prefix is used for isolating Hub clusters running within the same Kafka broker.
It uses the setting as a prefix for Kafka topics.

For example, a Hub cluster with a `testing` prefix would use topics like `testing-execution-events`, `testing-exchanges`, etc.

The prefix can contain alphanumeric characters, .(dot), -(hyphen), and \_(underscore).

***

* `hub.streams.application` **(Required)**

  **Default**: `hub`

The application name used together with prefix to generate a unique application ID.

Each stream processing application must have a unique ID. The same ID must be given to all instances of the application.

This ID is used in the following places to isolate resources used by the application from others:

* As the default Kafka consumer and producer `client.id` prefix
* As the Kafka consumer `group.id` for coordination
* As the name of the subdirectory in the state directory (`hub.streams.state.dir`)
* As the prefix of internal Kafka topic names

***

* `hub.streams.request-timeout-ms`

  **Default**: `60000`

The configuration controls the maximum amount of time the client will wait for the response of a request.
If the response is not received before the timeout elapses the client will resend the request if necessary
or fail the request if retries are exhausted.

***

* `hub.streams.producer.max-request-size`

  **Default**: `1048576`

The maximum size of a request in bytes. This setting will limit the number of record batches the producer will send in a single request to avoid sending huge requests.
This is also effectively a cap on the maximum uncompressed record batch size. Note that the server has its own cap on the record batch size (after compression if compression is enabled) which may be different from this.

***

* `hub.streams.state.dir`

  **Default**: `/tmp/kafka-streams`

Directory location for state stores.

***

* `hub.streams.state.cleanup-on-start`

  **Default**: `false`

Clean up application's local state directory when Kafka Streams start.

***

* `hub.streams.state.cleanup-on-stop`

  **Default**: `false`

Clean up application's local state directory when Kafka Streams shut down.

## File Uploader

* `hub.uploader.cache.dir`

* **Default**: `./cache`

Directory location for cached files.

## Component config validation

* `hub.components.validateConfig`
* **Default**: `true`

If set to `true`, the Hub will validate the configuration of an exposed component/target upon registration.

## Cloud Provider Configuration

The Hub uses a cloud-agnostic storage and configuration layer that supports multiple providers through configuration.

* `hub.cloud.provider.type`

  **Default**: `aws`

  **Options**: `aws`, `local`

Selects which cloud provider implementation to use for component storage, configuration management, and API key storage.

### AWS Provider

When using AWS as the cloud provider (`hub.cloud.provider.type=aws`), the following configuration properties are available:

* `hub.aws.region` **(Required)**

  The AWS region for all services (DynamoDB, Secrets Manager, etc.)

* `hub.aws.dynamodb.prefix` **(Required)**

  Prefix for DynamoDB table names (e.g., `zenoo-hub` creates `zenoo-hub-components`, `zenoo-hub-api-key-lookup`, `zenoo-hub-sharables`)

* `hub.aws.dynamodb.createTables`

  **Default**: `true`

  Automatically create required DynamoDB tables on startup

* `hub.aws.secrets.prefix` **(Required)**

  Prefix for secret names in AWS Secrets Manager

* `hub.aws.secrets.cache`

  **Default**: `true`

  Enable in-memory caching of secrets

* `hub.aws.secrets.cacheTtl`

  **Default**: `300s`

  Time-to-live for cached secrets

For a complete reference of all cloud provider configuration properties, including multi-region replication, retry strategies, and performance tuning, see the [Cloud Provider Configuration Reference](/technical-specification/hub-backend/cloud-providers/configuration-reference).

For local development using LocalStack, see the [Local Development Guide](/technical-specification/hub-backend/cloud-providers/local-development).

## Karaf Configuration

* `karaf.enabled`
* **Default**: `false`

Controls whether the Karaf container is enabled. Set to `true` to enable Karaf functionality.

***

* `karaf.home`
* **Default**: `.karaf`

The home directory for Apache Karaf installation. This directory contains:

* `system/` - System bundles
* `deploy/` - Hot deployment directory

***

* `karaf.base`
* **Default**: `/tmp/karaf-base`

The base directory for Apache Karaf instance. This directory contains:

* `etc/` - Configuration files
* `data/` - Runtime data
* `log/` - Log files
