Skip to content

Features

ICC includes a number of feature flags for optional functionality. This document describes each feature and how to enable or disable them.

PropertyValue
TypeBoolean
Defaultfalse
ServiceCron
PurposeEnable caching features
Environment VariablePLT_FEATURE_CACHE
Helmservices.icc.features.cache.enable
PropertyValue
TypeBoolean
Defaultfalse
ServiceCron
PurposeEnables the TRAFFICANTE cron job for cache recommendations
Environment VariablePLT_FEATURE_CACHE_RECOMMENDATIONS
Helmservices.icc.features.cache_recommendations.enable

Functionality:

  • Enables daily cache optimization recommendations via the Trafficante service
  • Runs at midnight daily (0 0 * * *) when enabled (default value)
  • Helps optimize cache performance across watts
PropertyValue
TypeBoolean
Defaultfalse
ServiceCron
PurposeEnables the RISK_SERVICE_DUMP cron job for exporting watt traffic metadata
Environment VariablePLT_FEATURE_RISK_SERVICE_DUMP
Helmservices.icc.features.risk_service_dump.enable

Functionality:

  • Enables daily risk service data dumps for analysis
  • Runs at midnight daily (0 0 * * *) when enabled (default)
PropertyValue
TypeBoolean
Defaultfalse
ServiceCron
PurposeEnables the FFC_RECOMMENDER cron job for Fast Feedback Control
Environment VariablePLT_FEATURE_FFC
Helmservices.icc.features.ffc.enable

Functionality:

  • Enables Fast Feedback Control cluster optimization recommendations
  • Runs at midnight daily (0 0 * * *) when enabled (default)
  • Provides intelligent cluster resource optimization suggestions
PropertyValue
TypeBoolean
Defaultfalse
ServiceCron
PurposeEnables trend prediction algorithm for improved watt scaling
Environment VariablePLT_FEATURE_SCALER_TRENDS_LEARNING
Helmservices.icc.features.scaler_trends_learning.enable
PropertyValue
TypeBoolean
Defaultfalse
ServiceControl Plane
PurposeEnables version-aware routing for zero-downtime deployments
Environment VariablePLT_FEATURE_SKEW_PROTECTION
Helmservices.icc.features.skew_protection.enable

Functionality:

  • Enables automatic version detection from Kubernetes pod labels (app.kubernetes.io/name, plt.dev/version)
  • Creates and manages HTTPRoute resources via the Kubernetes Gateway API for cookie-based session pinning
  • Monitors draining versions via Prometheus and handles version lifecycle (Active, Draining, Expired)
  • Requires a Gateway API-compliant controller with Extended conformance (RegularExpression header matching)

See the Skew Protection documentation for full details, prerequisites, and configuration.

PropertyValue
TypeBoolean
Defaultfalse
ServiceWorkflow
PurposeDeploys the Workflow Service for durable workflow orchestration
Helmservices.workflow.deploy

Functionality:

  • Deploys the Workflow Service (@platformatic/workflow), a PostgreSQL-backed service that manages workflow state, queue routing, and hook lifecycle for apps using the Vercel Workflow DevKit
  • Requires a workflow database in PostgreSQL (created by the install script or manually). The Helm chart wires the connection string via the icc-databases secret
  • Runs migrations automatically on startup
  • Provides a REST API for events, runs, steps, hooks, queues, and streams
  • Integrates with ICC’s skew protection: ICC uses the plt.dev/workflow: "true" pod label to apply workflow-specific draining policies (longer grace periods, checks for active runs before expiring a version)

Helm values:

services:
workflow:
deploy: true

Optional overrides:

services:
workflow:
deploy: true
image:
repository: ghcr.io/platformatic/workflow
tag: "latest"
log_level: info # debug, info, warn, error
monitor:
enable: true # Prometheus ServiceMonitor

Skew protection settings for workflows:

When skew protection is enabled, workflow-specific draining timeouts can be configured separately from HTTP timeouts. ICC applies the workflow policy automatically for any pod with the plt.dev/workflow: "true" label:

services:
icc:
features:
skew_protection:
enable: true
workflow_grace_period_ms: 3600000 # 1h (default)
workflow_max_alive_ms: 259200000 # 72h (default)

The workflow expire policy differs from the HTTP policy: instead of checking only for zero traffic (RPS), it also queries the Workflow Service for active runs, pending hooks, waiting sleeps, and queued messages. A version is only expired when all counts are zero.

Application requirements:

Apps using workflows need:

  1. WORKFLOW_TARGET_WORLD=@platformatic/world and PLT_WORLD_SERVICE_URL environment variables in the Dockerfile
  2. plt.dev/workflow: "true" pod label on the Deployment spec
  3. A K8s Service with app.kubernetes.io/name matching the app label
  4. RBAC for pod-read (so @platformatic/world can detect the deployment version from the plt.dev/version label)

See the Workflows UI documentation for the ICC dashboard integration.