Skip to content

Cookie preferences

We use cookies for our own analytics, to see how our campaigns perform and, if you allow it, to load content from other services such as the Google site search. We never sell your data. Necessary cookies keep the site working and cannot be switched off. See our Cookie Policy for details and our Privacy Policy for how we handle personal data.

Security, load balancing and remembering your cookie choice.

Show us which pages people read and how they find the site, so we can improve it (Google Analytics).

Show us which of our ad campaigns bring visitors to the site and remember the campaign or partner link you arrived from (Google Ads, partner program). We do not use these cookies to build advertising profiles.

Load the site search from Google when you use it. Google sets its own cookies and shows ads in the search results.

© 2026 The ThingsBoard Authors
22.5k Try for free

ThingsBoard Cloud

Choose your data region

Your data stays in the region you choose, for residency and compliance. No credit card required.

Rather run it yourself? Install on your own servers

Configuration Reference

All Trendz configuration is stored in trendz.yml. Every property can be overridden with an environment variable — the name is shown in the Env variable column.

Configuration changes require a Trendz restart — there is no hot-reload mechanism.

Property Env variable Default Description
server.address HTTP_BIND_ADDRESS 0.0.0.0 Network interface to bind the HTTP server to
server.port HTTP_BIND_PORT 8888 HTTP port

Trendz requires PostgreSQL.

Property Env variable Default Description
spring.datasource.url SPRING_DATASOURCE_URL jdbc:postgresql://localhost:5432/trendz JDBC connection URL
spring.datasource.username SPRING_DATASOURCE_USERNAME postgres Database username
spring.datasource.password SPRING_DATASOURCE_PASSWORD postgres Database password
spring.datasource.hikari.maximumPoolSize SPRING_DATASOURCE_MAXIMUM_POOL_SIZE 5 Maximum number of database connections in the pool
Property Env variable Default Description
tb.api.url TB_API_URL http://localhost:9090 URL of the ThingsBoard server Trendz connects to
Property Env variable Default Description
license.secret TRENDZ_LICENSE_SECRET (empty) License secret obtained from the ThingsBoard License Portal. Optional when using ThingsBoard 4.3.0+ with license logic V2 — in that case Trendz will start without it.

The default cache provider is Caffeine (in-process). Switch to Redis for multi-instance or high-availability deployments.

Property Env variable Default Description
cache.provider CACHE_TYPE caffeine Cache backend — caffeine or redis
redis.host REDIS_HOST localhost Redis server host (used when CACHE_TYPE=redis)
redis.port REDIS_PORT 6379 Redis server port
redis.database REDIS_DATABASE 0 Redis database index
redis.prefix REDIS_KEY_PREFIX trendz Key prefix for all Trendz entries in Redis

The script engine runs Python-based calculations. It connects to a Python Executor service over WebSocket.

Property Env variable Default Description
script-engine.provider SCRIPT_ENGINE_PROVIDER DOCKER_CONTAINER Execution mode — DOCKER_CONTAINER or REMOTE
script-engine.docker-provider-url SCRIPT_ENGINE_DOCKER_PROVIDER_URL localhost:8181 WebSocket address of the Python Executor service
script-engine.runtime-timeout SCRIPT_ENGINE_TIMEOUT 60000 (60 s) Script execution timeout in milliseconds

Controls background job scheduling. See Task Service for the full job reference.

Property Env variable Default Description
taskService.enable TASK_SERVICE_ENABLE true Enable or disable the task service entirely
taskService.enableBackground TASK_SERVICE_BACKGROUND_ENABLE true Enable or disable automatic background job scheduling
taskService.defaultTaskTimeout TASK_SERVICE_DEFAULT_TASK_TIMEOUT 86400000 (24 h) Maximum runtime for a single job in milliseconds; jobs that exceed this are canceled
taskService.taskQuerySize TASK_SERVICE_TASK_QUERY_SIZE 10 Maximum number of jobs picked up per scheduling cycle

Full topology discovery scans all ThingsBoard entity types, fields, and relations from scratch. These settings control the sampling strategy used when analyzing how many entities of each type exist.

Property Env variable Default Description
topology-discovery.defaultConfig.minItemToAnalyze TOPOLOGY_DISCOVERY_DEFAULT_CONFIG_MIN_ITEM_TO_ANALYZE 500 Minimum number of entities to sample during a full scan regardless of total count
topology-discovery.defaultConfig.maxItemToAnalyze TOPOLOGY_DISCOVERY_DEFAULT_CONFIG_MAX_ITEM_TO_ANALYZE 10000 Maximum number of entities to sample during a full scan
topology-discovery.defaultConfig.analyzePercent TOPOLOGY_DISCOVERY_DEFAULT_CONFIG_ANALYZE_PERCENT 5.0 Percentage of total entities to sample when the count is between min and max

Lite topology discovery runs automatically in the background to detect new or changed entity types without a full rescan. It is triggered by API calls with a cooldown between runs.

Property Env variable Default Description
topology-discovery.triggerEnabled TOPOLOGY_DISCOVERY_TRIGGER_ENABLED true Enable automatic lite topology discovery triggered by API calls
topology-discovery.lite.cooldown.discoverNewMs TOPOLOGY_DISCOVERY_LITE_COOLDOWNS_DISCOVER_NEW_MS 300000 (5 min) Minimum interval between two “discover new types” runs
topology-discovery.lite.cooldown.refreshOldMs TOPOLOGY_DISCOVERY_LITE_COOLDOWNS_REFRESH_OLD_MS 600000 (10 min) Minimum interval between two “refresh existing types” runs
topology-discovery.lite.limit.maxTypes TOPOLOGY_LITE_MAX_TYPES 10 Maximum number of new entity types processed in a single run
topology-discovery.lite.limit.maxEntities.keyScan TOPOLOGY_LITE_MAX_ENTITIES_KEY_SCAN 100 Maximum entities scanned per type to discover telemetry keys
topology-discovery.lite.limit.maxEntities.fieldsScan TOPOLOGY_LITE_MAX_ENTITIES_FIELDS_SCAN 100 Maximum entities scanned per type to discover fields
topology-discovery.lite.limit.maxEntities.relationsScan TOPOLOGY_LITE_MAX_ENTITIES_RELATIONS_SCAN 10 Maximum entities scanned per type to discover relations
topology-discovery.lite.limit.maxFields.perType TOPOLOGY_DISCOVERY_MAX_FIELD_EXPLORE 256 Maximum number of fields discovered per entity type
topology-discovery.lite.limit.maxFields.inBatch TOPOLOGY_LITE_MAX_FIELDS_IN_BATCH 32 Number of fields fetched per API batch request
topology-discovery.lite.logging.enabled TOPOLOGY_LITE_LOGGING_ENABLED true Enable detailed logging for lite topology discovery runs