Features
ICC includes a number of feature flags for optional functionality. This document describes each feature and how to enable or disable them.
Caching
Section titled “Caching”| Property | Value |
|---|---|
| Type | Boolean |
| Default | false |
| Service | Cron |
| Purpose | Enable caching features |
| Environment Variable | PLT_FEATURE_CACHE |
| Helm | services.icc.features.cache.enable |
Cache Recommendations
Section titled “Cache Recommendations”| Property | Value |
|---|---|
| Type | Boolean |
| Default | false |
| Service | Cron |
| Purpose | Enables the TRAFFICANTE cron job for cache recommendations |
| Environment Variable | PLT_FEATURE_CACHE_RECOMMENDATIONS |
| Helm | services.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
Risk Service Metadata Export
Section titled “Risk Service Metadata Export”| Property | Value |
|---|---|
| Type | Boolean |
| Default | false |
| Service | Cron |
| Purpose | Enables the RISK_SERVICE_DUMP cron job for exporting watt traffic metadata |
| Environment Variable | PLT_FEATURE_RISK_SERVICE_DUMP |
| Helm | services.icc.features.risk_service_dump.enable |
Functionality:
- Enables daily risk service data dumps for analysis
- Runs at midnight daily (0 0 * * *) when enabled (default)
Fusion, Fission & Cascade (FFC)
Section titled “Fusion, Fission & Cascade (FFC)”| Property | Value |
|---|---|
| Type | Boolean |
| Default | false |
| Service | Cron |
| Purpose | Enables the FFC_RECOMMENDER cron job for Fast Feedback Control |
| Environment Variable | PLT_FEATURE_FFC |
| Helm | services.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
Scaling Trend Prediction
Section titled “Scaling Trend Prediction”| Property | Value |
|---|---|
| Type | Boolean |
| Default | false |
| Service | Cron |
| Purpose | Enables trend prediction algorithm for improved watt scaling |
| Environment Variable | PLT_FEATURE_SCALER_TRENDS_LEARNING |
| Helm | services.icc.features.scaler_trends_learning.enable |
Skew Protection
Section titled “Skew Protection”| Property | Value |
|---|---|
| Type | Boolean |
| Default | false |
| Service | Control Plane |
| Purpose | Enables version-aware routing for zero-downtime deployments |
| Environment Variable | PLT_FEATURE_SKEW_PROTECTION |
| Helm | services.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, andadviseactuation modes, with optional approval inobserveandmanage - Monitors each draining version through Prometheus and, for workflow applications, the Workflow Service
See the Skew Protection documentation for full details, prerequisites, and configuration.
Workflow Service
Section titled “Workflow Service”| Property | Value |
|---|---|
| Type | Boolean |
| Default | false |
| Service | Workflow |
| Purpose | Deploys the Workflow Service for durable workflow orchestration |
| Helm | services.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
workflowdatabase in PostgreSQL (created by the install script or manually). The Helm chart wires the connection string via theicc-databasessecret - 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: trueOptional overrides:
services: workflow: deploy: true image: repository: ghcr.io/platformatic/workflow tag: "latest" log_level: info # debug, info, warn, error monitor: enable: true # Prometheus ServiceMonitorSkew 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:
- Set
plt.dev/workflow: "true"on the Deployment pod template - Create a Service with matching
app.kubernetes.io/nameand per-versionapp.kubernetes.io/instancelabels - Give the workflow application pod-read RBAC so
@platformatic/worldcan resolve its deployment version when it is not explicitly injected
For a customer-managed ECS workload:
- Tag the ECS service with
plt.dev/workflow=true,plt.dev/expire-policy=workflow, the application name, and its version - Optionally propagate service tags to tasks; Machinist can fall back to the parent service tags
- Set
PLT_WORLD_SERVICE_URL,PLT_WORLD_APP_ID, andPLT_WORLD_DEPLOYMENT_VERSIONin the task environment - Ensure the Workflow Service address is reachable from the application task through the VPC or service discovery
- 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.