Skip to content

All Settings Reference ​

This page lists every supported configuration option, grouped by build-time and runtime usage.

Canonical Settings Reference

This is the long-form configuration reference. Use this page when you need the supported knobs and defaults in one place. The split pages under this guide call out task-specific slices, but they do not replace this reference.

Build-Time Configuration ​

These settings are read during build/compile and affect generated code or CLI generation.

Pipeline YAML ​

The pipeline YAML controls global settings used by the annotation processor.

PropertyTypeDefaultDescription
transportenumGRPCGlobal transport for generated adapters (GRPC, REST, or LOCAL).
platformenumCOMPUTETarget deployment platform (COMPUTE or FUNCTION; legacy aliases: STANDARD, LAMBDA).

If pipeline-config.yaml (the template configuration produced by the template generator) is present, the build can also use it to generate protobuf definitions and orchestrator endpoints at compile time.

Orchestrator CLI (Annotation) ​

CLI metadata is configured on the orchestrator annotation.

Annotation AttributeTypeDefaultDescription
generateClibooleantrueEnables generation of the orchestrator CLI entrypoint.
namestring"orchestrator"CLI command name.
descriptionstring"Pipeline Orchestrator CLI"CLI command description.
versionstring"1.0.0"CLI command version.

Example:

java
@PipelineOrchestrator(
    generateCli = true,
    name = "payments-orchestrator",
    description = "CSV Payments Orchestrator CLI",
    version = "1.2.0"
)
public class OrchestratorMarker {
}

CLI input expectations:

  • --input / PIPELINE_INPUT must be a JSON object matching the input DTO.
  • --input-list / PIPELINE_INPUT_LIST must be a JSON array of input DTO objects.

Examples:

bash
./app -i '{"path":"/data/in"}'
bash
./app --input-list '[{"path":"/data/a"},{"path":"/data/b"}]'

Annotation Processor Options ​

Pass via maven-compiler-plugin with -A arguments.

OptionTypeDefaultDescription
-Apipeline.generatedSourcesDirpathnoneBase directory for role-specific generated sources.
-Apipeline.generatedSourcesRootpathnoneLegacy alias of pipeline.generatedSourcesDir.
-Apipeline.orchestrator.generatebooleanfalseGenerate orchestrator endpoint even without @PipelineOrchestrator. CLI generation still requires the annotation.
-Apipeline.transportenumfrom YAML (GRPC)Build-time transport override.
-Apipeline.platformenumfrom YAML (COMPUTE)Build-time platform override (COMPUTE or FUNCTION; legacy aliases: STANDARD, LAMBDA).
-Apipeline.rest.naming.strategyenumRESOURCEFULREST endpoint naming strategy (RESOURCEFUL or LEGACY).

Equivalent process-level overrides are also supported through:

  • system properties: pipeline.transport, pipeline.platform, pipeline.rest.naming.strategy
  • environment variables: PIPELINE_TRANSPORT, PIPELINE_PLATFORM, PIPELINE_REST_NAMING_STRATEGY

REST Path Overrides (Build-Time) ​

The annotation processor reads src/main/resources/application.properties during compilation to override REST paths:

PropertyTypeDefaultDescription
pipeline.rest.path.<ServiceName>stringnoneOverrides REST path by service name.
pipeline.rest.path.<fully.qualified.ServiceClass>stringnoneOverrides REST path by service class name.

When pipeline.rest.naming.strategy=RESOURCEFUL (default), generated REST paths are:

  • 1-1 (UNARY_UNARY) and N-1 (STREAMING_UNARY): /api/v1/<output-type>
  • 1-N (UNARY_STREAMING) and M-N (STREAMING_STREAMING): /api/v1/<input-type>
  • side effects append plugin token when available (for example /api/v1/ack-payment-sent/persistence)

When pipeline.rest.naming.strategy=LEGACY, generated REST paths stay in the older form:

  • /api/v1/process-<service>/process

Runtime Configuration ​

Prefix: pipeline

Orchestrator Client Wiring (Generated) ​

The annotation processor generates default orchestrator client configuration at build time. Generated values have lower priority than explicit application.properties settings or environment variables.

To override routing or ports, set the following in application.properties:

PropertyTypeDefaultDescription
pipeline.module.<module>.hoststringnoneHost for a module; Quarkus config expressions are preserved.
pipeline.module.<module>.portint or expressionnonePort for a module; literal values are validated and Quarkus config expressions are preserved.
pipeline.module.<module>.stepslistnoneComma/space-separated client names to assign.
pipeline.module.<module>.aspectslistnoneAspect names to assign (e.g. persistence).
pipeline.client.base-portint8443Base port used when assigning per-module offsets.
pipeline.client.tls-configuration-namestringnoneTLS registry name for generated clients.

Client names follow the same conventions as generated adapters:

  • regular steps: process-<service> (for example ProcessPaymentService → process-payment)
  • synthetic steps: observe-<aspect>-<type>-side-effect (for example persistence + PaymentRecord)

About modules:

  • A module is a deployment/runtime group for one or more services (for example, payments-processing-svc hosting multiple steps).
  • Use module overrides when multiple services share the same runtime or when legacy layouts bundle steps together (like csv-payments).
  • Avoid module overrides if you want the default 1‑step‑per‑module layout; in that case, only override individual clients as needed.

Avoiding drift:

  • Keep server ports and orchestrator client ports aligned by sourcing them from the same pipeline.module.<module>.port or shared environment variables.
  • For deployment-specific endpoints, use Quarkus/MicroProfile config expressions such as pipeline.module.pipeline-runtime-svc.host=${PIPELINE_RUNTIME_HOST:127.0.0.1} and pipeline.module.pipeline-runtime-svc.port=${PIPELINE_RUNTIME_GRPC_PORT:9000}.
  • If you override a client endpoint directly, verify the corresponding server listens on the same host/port (especially when TLS is enabled).

If you need to override a single client endpoint, set the Quarkus property directly:

properties
quarkus.grpc.clients.<client>.host=host
quarkus.grpc.clients.<client>.port=8444
quarkus.grpc.clients.<client>.tls-configuration-name=pipeline-client
quarkus.rest-client.<client>.url=https://host:8444
quarkus.rest-client.<client>.tls-configuration-name=pipeline-client

REST Client Endpoints ​

REST client steps use Quarkus REST client configuration:

PropertyTypeDefaultDescription
quarkus.rest-client.<client-name>.urlstringnoneBase URL for a REST client step.

client-name is derived from the service class name in kebab-case with a trailing Service removed (for example ProcessPaymentService → process-payment).

Cache Configuration ​

Prefix: pipeline.cache

PropertyTypeDefaultDescription
pipeline.cache.providerstringnoneCache provider name (for example redis, caffeine, memory).
pipeline.cache.provider.classstringnoneFully-qualified cache provider class name to lock selection at runtime.
pipeline.cache.policystringcache-onlyDefault cache policy (prefer-cache/return-cached, cache-only, skip-if-present, require-cache, bypass-cache).
pipeline.cache.ttldurationnoneDefault cache TTL.
pipeline.cache.caffeine.namestringpipeline-cacheCache name for the Caffeine provider.
pipeline.cache.caffeine.maximum-sizelong10000Maximum cache size for the Caffeine provider.
pipeline.cache.caffeine.expire-after-writedurationnoneExpire entries after write for the Caffeine provider.
pipeline.cache.caffeine.expire-after-accessdurationnoneExpire entries after access for the Caffeine provider.
pipeline.cache.redis.prefixstringpipeline-cache:Key prefix for Redis cache entries.

Repository Materialization Configuration ​

Prefix: pipeline.repository

Repository materialization stores selected large fields out of line and keeps an inline payload_ref sibling field in the message. It is configured by materialization policy in the pipeline YAML; runtime properties select and tune the storage backend without changing business steps or runtime mappings.

PropertyTypeDefaultDescription
pipeline.repository.providerstringnoneRepository provider name (filesystem or s3).
pipeline.repository.provider.classstringnoneFully-qualified repository provider class name to lock selection at runtime.
pipeline.repository.verify-checksumbooleantrueVerify stored payload checksums on load.
pipeline.repository.filesystem.rootstringtarget/tpf-repositoryFilesystem repository root for local development and deterministic tests.
pipeline.repository.s3.bucketstringnoneS3 bucket used by the S3 repository provider.
pipeline.repository.s3.prefixstringemptyOptional key prefix for S3 objects.
pipeline.repository.s3.regionstringnoneAWS region for explicitly constructed S3 clients.
pipeline.repository.s3.endpoint-overridestringnoneS3-compatible endpoint override, useful for LocalStack/MinIO.
pipeline.repository.s3.path-stylebooleanfalseEnable path-style addressing for S3-compatible stores that require it.

See Field Materialization for the YAML surface.

Persistence Configuration ​

Prefix: pipeline.persistence

PropertyTypeDefaultDescription
pipeline.persistence.duplicate-keystringfailDuplicate key policy for persistence (fail, ignore, upsert).
persistence.provider.classstringnoneFully-qualified persistence provider class name to lock selection at runtime. This key intentionally stays outside the pipeline.persistence prefix for provider SPI compatibility.

Pipeline Execution ​

Prefix: pipeline

PropertyTypeDefaultDescription
pipeline.parallelismstringAUTOParallelism policy: SEQUENTIAL, AUTO, or PARALLEL.
pipeline.max-concurrencyinteger128Per-step maximum in-flight work when parallel execution is enabled. For durable ONE_TO_ONE awaits with admission enabled, it is also the shared maximum unresolved third-party interactions for that await scope.
pipeline.max-recursive-depthinteger64Maximum number of direct self-recursive local pipeline invocations below a root invocation. The first call beyond this depth fails without retry.
pipeline.await-admission.enabledbooleantrueEnables durable admission for endpoint-capable ONE_TO_ONE awaits in QUEUE_ASYNC mode. Durable-only adapters without a provider endpoint do not acquire a reservation. Set to false only for a deliberate compatibility or recovery override.

Orchestrator Background Execution ​

Use these settings when the orchestrator should accept work, store execution state, dispatch work in the background, retry failures, and publish terminal failures. The config value for that execution path is QUEUE_ASYNC.

Prefix: pipeline.orchestrator

PropertyTypeDefaultDescription
pipeline.orchestrator.modeenumSYNCSYNC waits for the result in the request; QUEUE_ASYNC stores execution state and continues work in the background.
pipeline.orchestrator.default-tenantstringdefaultFallback tenant when caller omits tenant id.
pipeline.orchestrator.execution-ttl-daysint7Execution state retention in days.
pipeline.orchestrator.lease-mslong30000Lease duration for claimed executions.
pipeline.orchestrator.max-retriesint3Max execution-level retries before terminal failure.
pipeline.orchestrator.retry-delaydurationPT10SBase retry delay.
pipeline.orchestrator.retry-multiplierdouble2.0Retry backoff multiplier.
pipeline.orchestrator.sweep-intervaldurationPT30SInterval for due-execution sweep/re-dispatch.
pipeline.orchestrator.sweep-limitint100Max due executions swept per pass.
pipeline.orchestrator.idempotency-policyenumOPTIONAL_CLIENT_KEYOPTIONAL_CLIENT_KEY, CLIENT_KEY_REQUIRED, SERVER_KEY_ONLY.
pipeline.orchestrator.state-providerstringmemoryExecutionStateStore provider selector.
pipeline.orchestrator.dispatcher-providerstringeventWorkDispatcher provider selector.
pipeline.orchestrator.dlq-providerstringlogDead-letter publisher provider for terminal execution failures.
pipeline.orchestrator.dlq-urlstringnoneDead-letter queue URL when dlq-provider=sqs.
pipeline.orchestrator.queue-urlstringnoneQueue URL for external dispatcher providers.
pipeline.orchestrator.resume-token-secretstringnoneHMAC secret used to sign and verify await resume tokens. Required for signed webhook, Kafka, and SQS await dispatch/completion. Use a high-entropy value, preferably at least 32 random bytes encoded as base64 or hex. If this property is missing, signed await dispatch fails with a clear error rather than allowing unsigned resumptions. See Await Boundaries.
pipeline.orchestrator.control-plane.enabledbooleanfalseEnables the internal hosted-control-plane REST surface under /tpf/control-plane/tenants/{tenantId} for local/dev coordinator proofs.
pipeline.orchestrator.control-plane.admin-tokenstringnoneBearer token accepted by the hosted-control-plane REST surface. Configure exactly one of admin-token or admin-token-ref when the surface is enabled.
pipeline.orchestrator.control-plane.admin-token-refstringnoneLocal secret reference for the hosted-control-plane bearer token. Supports env:NAME, sys:property.name, and config:some.config.key.
pipeline.orchestrator.dynamo.execution-tablestringtpf_executionDynamoDB table used for execution state rows.
pipeline.orchestrator.dynamo.execution-key-tablestringtpf_execution_keyDynamoDB table used for submit dedupe keys.
pipeline.orchestrator.dynamo.execution-payload-tablestringtpf_execution_payloadDynamoDB table used for immutable manifests and byte chunks when an execution payload is not stored inline.
pipeline.orchestrator.dynamo.await-interaction-tablestringtpf_await_interactionDynamoDB table used for durable await interaction rows.
pipeline.orchestrator.dynamo.await-interaction-key-tablestringtpf_await_interaction_keyDynamoDB table used for await idempotency and correlation lookup keys.
pipeline.orchestrator.dynamo.regionstringnoneOptional DynamoDB region override.
pipeline.orchestrator.dynamo.endpoint-overridestringnoneOptional DynamoDB endpoint override (local/dev).
pipeline.orchestrator.sqs.regionstringnoneOptional SQS region override.
pipeline.orchestrator.sqs.endpoint-overridestringnoneOptional SQS endpoint override (local/dev).
pipeline.orchestrator.sqs.local-loopbackbooleantrueAlso fire in-process work event after SQS enqueue (dev convenience).
pipeline.orchestrator.worker.max-in-flightint64Maximum admitted transition work items per runtime instance.
pipeline.orchestrator.worker.saturated-delaydurationPT1SDelay before re-enqueueing work when transition admission is saturated.
pipeline.orchestrator.worker.execution-modeenumsame-threadTransition execution mode: same-thread or virtual-thread.
pipeline.orchestrator.worker.rest.base-urlstringnoneOptional remote REST transition worker base URL. When set, transition work is routed to the REST worker client instead of the local in-process worker.
pipeline.orchestrator.worker.rest.pathstring/pipeline/worker/transitions/executeREST transition worker execution path.
pipeline.orchestrator.worker.rest.connect-timeoutdurationPT2SREST transition worker connection timeout.
pipeline.orchestrator.worker.rest.request-timeoutdurationPT30SREST transition worker request timeout.
pipeline.orchestrator.worker.rest.server-enabledbooleanfalseEnables the local REST transition worker endpoint. Disabled by default because this endpoint is an internal runtime protocol surface.
pipeline.orchestrator.worker.rest.shared-secretstringnoneHMAC secret used to sign and verify REST transition worker requests. Required when rest.base-url or rest.server-enabled=true is used.
pipeline.orchestrator.worker.rest.shared-secret-refstringnoneLocal secret reference for the REST transition worker signing secret. Supports env:NAME, sys:property.name, and config:some.config.key. Configure exactly one of shared-secret or shared-secret-ref.
pipeline.orchestrator.worker.rest.signature-tolerancedurationPT2MMaximum timestamp skew accepted for signed REST transition worker requests.
pipeline.orchestrator.worker.allowed-payload-prefixeslistorg.pipelineframework.Java package prefixes accepted by the JSON transition payload codec for application payload classes across local, REST, gRPC, and SQS workers.
pipeline.orchestrator.worker.grpc.endpointstringnoneOptional remote gRPC transition worker endpoint in host:port form. When set, transition work is routed to the gRPC worker client instead of the local in-process worker.
pipeline.orchestrator.worker.grpc.plaintextbooleanfalseUses plaintext gRPC channels for local/test worker processes.
pipeline.orchestrator.worker.grpc.request-timeoutdurationPT30SgRPC transition worker request timeout.
pipeline.orchestrator.worker.grpc.server-enabledbooleanfalseEnables the local gRPC transition worker service. Disabled by default because this service is an internal runtime protocol surface.
pipeline.orchestrator.worker.grpc.shared-secretstringnoneHMAC secret used to sign and verify gRPC transition worker requests. Required when grpc.endpoint or grpc.server-enabled=true is used.
pipeline.orchestrator.worker.grpc.shared-secret-refstringnoneLocal secret reference for the gRPC transition worker signing secret. Supports env:NAME, sys:property.name, and config:some.config.key. Configure exactly one of shared-secret or shared-secret-ref.
pipeline.orchestrator.worker.grpc.signature-tolerancedurationPT2MMaximum timestamp skew accepted for signed gRPC transition worker requests.
pipeline.orchestrator.worker.sqs.request-queue-urlstringnoneOptional SQS request queue URL. When set, transition work is routed to the SQS request/reply worker client instead of the local in-process worker.
pipeline.orchestrator.worker.sqs.response-queue-urlstringnoneSQS response queue URL used by the coordinator to receive worker result envelopes. In v1 this must be dedicated per coordinator instance or shard, for example tpf-worker-responses-shard-a; shared response queues can deliver responses to the wrong process because v1 has no demultiplexing.
pipeline.orchestrator.worker.sqs.server-enabledbooleanfalseEnables the local SQS transition worker poller. Disabled by default because this poller consumes an internal runtime protocol queue.
pipeline.orchestrator.worker.sqs.request-timeoutdurationPT30STimeout while waiting for the matching SQS worker response.
pipeline.orchestrator.worker.sqs.poll-start-delaydurationPT0SOptional delay before the SQS transition worker poller starts consuming requests.
pipeline.orchestrator.worker.sqs.visibility-timeoutdurationPT30SVisibility timeout for claimed SQS transition worker request/response messages.
pipeline.orchestrator.worker.sqs.shared-secretstringnoneHMAC secret used to sign and verify SQS transition worker request and response messages. Required when sqs.request-queue-url or sqs.server-enabled=true is used.
pipeline.orchestrator.worker.sqs.shared-secret-refstringnoneLocal secret reference for the SQS transition worker signing secret. Supports env:NAME, sys:property.name, and config:some.config.key. Configure exactly one of shared-secret or shared-secret-ref.
pipeline.orchestrator.worker.sqs.signature-tolerancedurationPT2MMaximum timestamp skew accepted for signed SQS transition worker messages.
pipeline.orchestrator.strict-startupbooleantrueFail startup if queue mode prerequisites are invalid.

Background execution notes:

  1. QUEUE_ASYNC rejects async streaming output for this milestone.
  2. Keep strict-startup=true in production, so invalid provider configuration fails fast.
  3. In queue mode, strict startup also requires pipeline.orchestrator.idempotency-policy to be explicitly set to a non-default value.
  4. In-memory providers are for local/dev only; use providers backed by external storage/queues for crash recovery.
  5. For dead-letter handling that survives restarts, set both pipeline.orchestrator.dlq-provider=sqs and pipeline.orchestrator.dlq-url.
  6. For webhook, Kafka, or SQS await steps using signed resume tokens, configure a stable pipeline.orchestrator.resume-token-secret; rotating it invalidates outstanding resume tokens.
  7. Remote transition worker selection is inferred from configured targets: REST uses pipeline.orchestrator.worker.rest.base-url, gRPC uses pipeline.orchestrator.worker.grpc.endpoint, SQS uses pipeline.orchestrator.worker.sqs.request-queue-url, and no remote target uses the local in-process worker.
  8. Configure at most one remote worker target. Multiple remote targets fail startup as ambiguous; there is no worker.provider selector.
  9. pipeline.platform remains orthogonal and does not select worker invocation.
  10. REST, gRPC, and SQS transition workers require their matching signing secret on both coordinator and worker processes. Configure exactly one of shared-secret or shared-secret-ref for each enabled protocol.
  11. SQS transition worker response-queue-url must be dedicated per coordinator shard/process in v1. Shared response queues can cause dropped or misrouted responses and extra latency because v1 has no response demultiplexing.
  12. The local control-plane REST surface is internal groundwork. It requires an explicit tenant path and bearer token, but it is not a managed service API.
  13. When pipeline.orchestrator.dynamo.await-interaction-table is used, provision ALL-projected GSIs named await-interaction-by-unit, await-interaction-pending-by-tenant, await-interaction-pending-by-assignee, await-interaction-pending-by-group, await-interaction-pending-by-step, and await-interaction-pending-by-deadline. These indexes back await unit lookup, pending interaction listing, and timeout selection without full-table scans.

Example crash-recovery provider configuration:

properties
pipeline.orchestrator.mode=QUEUE_ASYNC
pipeline.orchestrator.state-provider=dynamo
pipeline.orchestrator.dispatcher-provider=sqs
pipeline.orchestrator.dlq-provider=sqs
pipeline.orchestrator.queue-url=https://sqs.eu-west-1.amazonaws.com/123456789012/tpf-work
pipeline.orchestrator.dlq-url=https://sqs.eu-west-1.amazonaws.com/123456789012/tpf-dlq
pipeline.orchestrator.idempotency-policy=CLIENT_KEY_REQUIRED

Await Transports ​

Await transport selection is authored per kind: await step in pipeline YAML. These runtime properties enable the concrete adapter plumbing for broker-backed await providers.

Kafka Await ​

Prefix: tpf.await.kafka

PropertyTypeDefaultDescription
tpf.await.kafka.reactive-messaging.enabledbooleanfalseEnables the Quarkus Reactive Messaging Kafka await publisher and completion consumer.

Kafka await also requires SmallRye channel configuration for the framework-owned tpf-await-kafka-requests outgoing channel and tpf-await-kafka-responses incoming channel. See Await Boundaries.

SQS Await ​

Prefix: tpf.await.sqs

PropertyTypeDefaultDescription
tpf.await.sqs.poller.enabledbooleanfalseEnables the coordinator-side SQS await completion poller.
tpf.await.sqs.response-queue-urlstringnoneSQS response queue URL consumed by the completion poller. Required when the poller is enabled.
tpf.await.sqs.poll-start-delaydurationPT0SOptional delay before the completion poller starts.
tpf.await.sqs.visibility-timeoutdurationPT30SVisibility timeout for claimed completion messages.
tpf.await.sqs.completion-timeoutdurationPT5MTimeout while admitting one completion through the await coordinator.
tpf.await.sqs.wait-time-secondsint1Long-poll wait time for SQS receive calls. Values are clamped to the SQS range 1..20.
tpf.await.sqs.max-messagesint1Maximum messages received per poll. Values are clamped to the SQS range 1..10.

SQS await dispatch uses the request.queueUrl and response.queueUrl authored on the await step. The completion poller uses the runtime response-queue-url so the hosting coordinator can decide which queue it consumes. Region and endpoint override reuse pipeline.orchestrator.sqs.region and pipeline.orchestrator.sqs.endpoint-override.

Item Reject Sink ​

Prefix: pipeline.item-reject

PropertyTypeDefaultDescription
pipeline.item-reject.providerstringlogStep-level reject sink provider selector (log, memory, sqs).
pipeline.item-reject.strict-startupbooleantrueFail startup when selected sink provider configuration is invalid.
pipeline.item-reject.include-payloadbooleanfalseInclude rejected payload in sink envelope.
pipeline.item-reject.memory-capacityint512Bounded ring size for the memory provider.
pipeline.item-reject.publish-failure-policyenumCONTINUESink publish failure behaviour (CONTINUE, FAIL_PIPELINE).
pipeline.item-reject.sqs.queue-urlstringnoneSQS queue URL when provider=sqs.
pipeline.item-reject.sqs.regionstringnoneOptional SQS region override.
pipeline.item-reject.sqs.endpoint-overridestringnoneOptional SQS endpoint override (local/dev).

Operational notes:

  1. Item reject sink is step-level recover-and-continue behaviour (recoverOnFailure=true).
  2. In production launch mode, startup fails when recovery is enabled and a non-durable sink (log/memory) is selected.
  3. In non-production modes, non-durable sinks are allowed with warning logs.
  4. Keep include-payload=false unless payload capture is explicitly required for triage.

Example durable step-level reject sink:

properties
pipeline.item-reject.provider=sqs
pipeline.item-reject.sqs.queue-url=https://sqs.eu-west-1.amazonaws.com/123456789012/tpf-item-reject
pipeline.item-reject.include-payload=false
pipeline.item-reject.publish-failure-policy=CONTINUE

Telemetry ​

Prefix: pipeline.telemetry

PropertyTypeDefaultDescription
pipeline.telemetry.enabledbooleanfalseMaster switch for framework telemetry instrumentation. Signal-specific switches do not override it.
pipeline.telemetry.item-input-typestringnoneFully-qualified input type used to define the item boundary (build-time only — requires rebuild to take effect).
pipeline.telemetry.item-output-typestringnoneFully-qualified output type used to define the item boundary (build-time only — requires rebuild to take effect).
pipeline.telemetry.metrics.enabledbooleantrueEnable framework metrics when the master switch and artifact metric capability are also enabled.
pipeline.telemetry.tracing.enabledbooleanfalseEnable framework tracing when the master switch and artifact trace capability are also enabled.
pipeline.telemetry.tracing.per-itembooleanfalseEnable per-item step spans. Use selectively for high-volume pipelines.
pipeline.telemetry.tracing.client-spans.forcebooleanfalseForce sampled gRPC client spans for the configured allowlist.
pipeline.telemetry.tracing.client-spans.allowliststringnoneComma-separated exact gRPC service names; an empty allowlist with forcing enabled applies to all services.
pipeline.telemetry.replay.enabledbooleanfalseRequest replay export. Effective replay also requires tracing, per-item spans, topology metadata, and a valid exporter.
pipeline.telemetry.replay.exporterstringnoneReplay exporter. The supported offline exporter is file.
pipeline.telemetry.replay.file.pathpathnoneAbsolute output path used by the file replay exporter.
pipeline.telemetry.slo.rpc-latency-msnumber1000RPC latency threshold (ms) used to emit SLO counters.
pipeline.telemetry.slo.item-throughput-per-minnumber1000Item throughput threshold (items/min) used to emit SLO counters.

Item boundary types are compiled into telemetry metadata; runtime changes do not apply unless you rebuild the project. TPF policy cannot add a telemetry signal that the deployable application did not include and enable during Quarkus augmentation. Exporter and backend configuration remain deployment concerns.

In-flight Probe (Kill Switch) ​

Prefix: pipeline.kill-switch

PropertyTypeDefaultDescription
pipeline.kill-switch.retry-amplification.enabledbooleanfalseEnable retry amplification guard.
pipeline.kill-switch.retry-amplification.windowdurationPT30SEvaluation window for sustained inflight growth.
pipeline.kill-switch.retry-amplification.inflight-slope-thresholddouble10Inflight slope threshold (items/sec).
pipeline.kill-switch.retry-amplification.modestringfail-fastGuard behaviour (fail-fast or log-only).
pipeline.kill-switch.retry-amplification.sustain-samplesinteger3Consecutive samples above the threshold required to trigger.

Global Defaults ​

Prefix: pipeline.defaults

PropertyTypeDefaultDescription
pipeline.defaults.retry-limitinteger3Max retry attempts for steps.
pipeline.defaults.retry-wait-mslong2000Base delay between retries (ms).
pipeline.defaults.recover-on-failurebooleanfalseEnables recovery behaviour on failure.
pipeline.defaults.max-backofflong30000Maximum backoff delay (ms).
pipeline.defaults.jitterbooleanfalseAdds jitter to retry delays.
pipeline.defaults.backpressure-buffer-capacityinteger128Per-step backpressure buffer capacity (in items).
pipeline.defaults.backpressure-strategystringBUFFERBackpressure strategy (BUFFER or DROP).
pipeline.defaults.circuit.enabledbooleantrueEnables circuit admission for eligible TPF-managed transport boundaries. Set false for global compatibility opt-out.
pipeline.defaults.circuit.failure-thresholdinteger5Health-affecting failures required to open a circuit.
pipeline.defaults.circuit.failure-windowdurationPT1MFailure counting window.
pipeline.defaults.circuit.open-durationdurationPT30SMinimum OPEN duration.
pipeline.defaults.circuit.half-open-max-permitsinteger1Concurrent recovery probes.
pipeline.defaults.circuit.half-open-retry-delaydurationPT1SScheduling hint while half-open probes are saturated.
pipeline.defaults.circuit.half-open-probe-lease-durationdurationPT30SShared probe lease duration.

Step defaults apply to every step unless a step-level override is present. Circuit defaults apply only to eligible TPF-managed transport boundaries; they do not instrument local transformations or outbound calls hidden in user code.

Circuit Protection ​

Circuit policy is configured globally first, then optionally overridden for an exact generated boundary. Deployment configuration supplies the default scope and any shared backend capability.

PropertyTypeDefaultDescription
pipeline.resilience.default-circuit-scopeenumLOCAL_PROCESSDeployment default: LOCAL_PROCESS or SHARED_DEPENDENCY.
pipeline.resilience.circuit."protocol:target".enabledbooleaninheritedAdvanced exact-boundary enable/disable override.
pipeline.resilience.circuit."protocol:target".scopeenumdeployment defaultAdvanced boundary scope override; it must be supported by the runtime backend.
pipeline.resilience.circuit."protocol:target".identitystringboundary keyOptional logical grouping identity. Shared exact overrides require one.
pipeline.resilience.shared.dynamo-tablestringnoneRequired when any resolved circuit uses SHARED_DEPENDENCY.
pipeline.resilience.shared.max-state-stalenessdurationPT1SMaximum fresh shared-state cache age for CLOSED admission.
pipeline.resilience.shared.backend-retry-delaydurationPT1SHint returned when shared protection authority is unavailable.

An exact boundary may override any circuit policy value under the same prefix. It is an advanced operational setting: the stable protocol:target key is emitted by generated transport diagnostics, but normal applications should use the global default.

properties
# Compatibility opt-out for an existing deployment.
pipeline.defaults.circuit.enabled=false

# One shared-capable deployment can still keep this boundary process-local.
pipeline.resilience.default-circuit-scope=SHARED_DEPENDENCY
pipeline.resilience.shared.dynamo-table=tpf_shared_circuits
pipeline.resilience.circuit."grpc:catalog.remoteProcess".scope=LOCAL_PROCESS

Shared scope never falls back to local protection. A shared boundary without a Dynamo table fails startup. A local default does not protect durable transition-worker dispatch; it becomes eligible only when its resolved scope is shared and pipeline.orchestrator.max-circuit-deferral is finite.

Function Transport Context Attributes (Function Handlers/Adapters) ​

These values are carried in FunctionTransportContext attributes by function handlers/adapters in Lambda deployments. They are not application.properties keys.

Attribute KeyTypeDefaultDescription
tpf.idempotency.policyenumCONTEXT_STABLEFunction transport idempotency policy (CONTEXT_STABLE or EXPLICIT; legacy RANDOM alias accepted).
tpf.idempotency.keystringnoneExplicit caller-provided idempotency key used when policy is EXPLICIT.

Important:

  • The Pipeline Framework (TPF) transport idempotency is a boundary-level aid.
  • Authoritative duplicate prevention must still be enforced in business/data layers (domain constraints, DB primary/unique keys, warehouse controls).

Build-Time Validation (Annotation Processor) ​

These are build-time options passed to the annotation processor (not runtime config).

OptionTypeDefaultDescription
pipeline.provider.class.<name>stringnoneProvider class name to validate ordering/thread-safety hints (e.g. pipeline.provider.class.cache=...).

Per-Step Overrides ​

Prefix: pipeline.step."fully.qualified.StepClass"

All properties listed under pipeline.defaults.* can be overridden per step:

properties
pipeline.step."com.example.MyStep".retry-limit=7
pipeline.step."com.example.MyStep".recover-on-failure=true
pipeline.step."com.example.MyStep".backpressure-buffer-capacity=4096
pipeline.step."com.example.MyStep".backpressure-strategy=BUFFER

Startup Health Checks ​

PropertyTypeDefaultDescription
pipeline.health.startup-timeoutdurationPT5MMax time to wait for startup dependency health checks.