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:

  • Detects versions from Kubernetes workload labels or ECS service/task metadata
  • Applies query or cookie routing through Kubernetes Gateway API HTTPRoutes
  • Applies query routing directly to ALB listener rules on ECS
  • Tracks the full lifecycle: Staged, Pending Apply, Active, Draining, Pending Expire, and Expired
  • Supports observe, manage, and advise actuation modes, with optional approval in observe and manage
  • Monitors each draining version through Prometheus and, for workflow applications, the Workflow Service

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 workflow expire policy, normally selected by plt.dev/workflow: "true", to apply longer timings and check active work 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 to a workload with the plt.dev/workflow: "true" label, or when an ICC deploy request selects expirePolicy: "workflow":

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 first requires zero traffic (RPS), then queries the Workflow Service for active runs, pending hooks, waiting sleeps, and queued messages. A version expires early only when RPS and all workflow counts are zero.

Application requirements:

All workflow applications need WORKFLOW_TARGET_WORLD=@platformatic/world at build time and a Workflow Service reachable from the running application.

For an ICC-managed deployment, select expirePolicy: "workflow". ICC injects PLT_WORLD_APP_ID, PLT_WORLD_DEPLOYMENT_VERSION, and, when PLT_WORKFLOW_URL is configured, PLT_WORLD_SERVICE_URL. An explicit PLT_WORLD_SERVICE_URL in the deploy environment takes precedence.

For a customer-managed Kubernetes workload:

  1. Set plt.dev/workflow: "true" on the Deployment pod template
  2. Create a Service with matching app.kubernetes.io/name and per-version app.kubernetes.io/instance labels
  3. Give the workflow application pod-read RBAC so @platformatic/world can resolve its deployment version when it is not explicitly injected

For a customer-managed ECS workload:

  1. Tag the ECS service with plt.dev/workflow=true, plt.dev/expire-policy=workflow, the application name, and its version
  2. Optionally propagate service tags to tasks; Machinist can fall back to the parent service tags
  3. Set PLT_WORLD_SERVICE_URL, PLT_WORLD_APP_ID, and PLT_WORLD_DEPLOYMENT_VERSION in the task environment
  4. Ensure the Workflow Service address is reachable from the application task through the VPC or service discovery
  5. Configure the ALB target-group health check on Watt’s dedicated readiness endpoint (HTTP:9090/ready), not on the application port. Application-port probes are counted as traffic and prevent the workflow policy from reaching its active-work check

See the Workflows UI documentation for the ICC dashboard integration.