Complete configuration catalog

This reference is generated from Clearplane's validated configuration catalog. Each directive lists its supported sources, defaults, validation, apply behavior, and UI location.

Resolution and ownership

Runtime values resolve independently per setting in this order: environment variable → validated Clearplane container label → saved UI value → built-in default.

Environment variables carry bootstrap settings and secrets only. Every other runtime setting uses its documented container label or the UI; a label makes the matching UI field read-only until the label is removed. The MaxMind license key is the one runtime setting that also accepts an environment variable, because it is a secret.

Secret environment settings also accept the listed _FILE twin, which is read from a file mounted into the container; setting both forms is an error. Bootstrap settings are read once at process start, so every bootstrap change needs a restart, and an invalid bootstrap value stops the process with a message naming the variable. Container-discovered resources are read only from Docker labels; Clearplane never reads the labeled container's environment variables.

  • Bootstrap: environment-only and applied at process startup.
  • Runtime: may be changed through its documented sources and reports the effective source.
  • Service resource: label-only configuration attached to a discovered proxy route or standalone redirect container.
  • Immediate: consumed without an explicit Edge apply. Validated: accepted only after validation succeeds. Staged: saved until Edge configuration is applied. Restart required: effective after the owning process restarts.

Warning

Docker labels are visible through container inspection. Clearplane accepts secret labels because every supported label has the same configuration semantics, but the _FILE environment twin or the encrypted UI field are safer for credentials. APIs, diagnostics, logs, and this document never render secret values.

Label values

  • Names are the API field names in kebab-case. Related fields share dotted groups such as brotli.* or waf.challenge.*. Boolean subfeatures use <group>.enabled, such as brotli.enabled or waf.websocket.enabled. Proxy policy families use their root label with Inherit, On or Off; they do not have an .enabled label. Units end the name: -seconds, -minutes, -bytes, -megabytes.
  • Enumerations are written like the REST API and the UI, for example On, Prevention or MemoryOnly. Matching ignores case; numeric backing values are not accepted. Fields documented with literal numeric choices, such as redirect status codes, accept those listed numbers instead.
  • Booleans are true or false, ignoring case.
  • Lists are whitespace-delimited. YAML's folded form works because line breaks become spaces.
  • Invalid owner-runtime values under clearplane.core.*, clearplane.edge.*, clearplane.ui.* or clearplane.container-proxy.* are reported as warnings. The setting retains its previous valid label value; when none exists, the invalid label supplies no value and normal source resolution applies. Invalid service-resource values reject the discovered container and keep its previous route.
  • Unknown owner-runtime keys under those prefixes are reported as warnings and ignored. An unknown key does not preserve the override from a known runtime label it replaced; normal label-removal fallback still applies. Unknown service-resource keys reject the discovered container, except under clearplane.proxy.cache.* (but not cache.key.*), compression.*, error-page.*, group.*, redirect.* and clearplane.redirect.group.*. Those families cannot weaken protection, so an unknown key there is also reported as a warning and ignored.

Each semantic collection uses indexed structured labels shaped as <semantic-collection>.<index>.<field>. Indices are one-based, may contain gaps, and are ordered numerically. Every indexed item must include its required fields; malformed, incomplete, duplicate, unknown, or out-of-range entries are rejected.

Every proxy policy family has the same envelope. The root label clearplane.proxy.<family> is Inherit (the default, which applies the family's enabled Global policies), On (the route's own policies, which replace the Global ones) or Off (no policy, even when a Global policy exists). Other family labels require the root label and reject the container without it; under Inherit or Off they are kept without validation. With On, clearplane.proxy.<family>.policy selects existing policies by system name; otherwise the family's labels create an inline route-scoped policy and every omitted field takes its documented default. Named and inline fields cannot be combined. Authentication has no defaults to fall back on, so an inline authentication policy needs type and its credentials or keys.

Core directives

Directive Type Accepted values Built-in default Environment variable Docker label Sources Lifecycle Sensitivity Apply UI location Description
clearplane.core.acme.email-address String Valid email address, 1-320 characters (empty) — clearplane.core.acme.email-address Container label, UI Runtime Public Validated System / Settings / Certificates / Let's Encrypt account Required contact email address registered with the selected Let's Encrypt account.
clearplane.core.acme.environment AcmeEnvironment Production, Staging Production — clearplane.core.acme.environment Container label, UI Runtime Public Validated System / Settings / Certificates / Let's Encrypt account Let's Encrypt environment used for ACME accounts and certificate orders.
clearplane.core.acme.terms-of-service-agreed Boolean true false — clearplane.core.acme.terms-of-service-agreed Container label, UI Runtime Public Validated System / Settings / Certificates / Let's Encrypt account Must be true to confirm acceptance of the Let's Encrypt terms before saving the account configuration.
clearplane.core.analytics.daily-retention-days Integer Positive integer no less than hourly-retention-days 90 — clearplane.core.analytics.daily-retention-days Container label, UI Runtime Public Validated System / Settings / Analytics Days of daily analytics rollups retained before pruning.
clearplane.core.analytics.hourly-retention-days Integer Positive integer no greater than daily-retention-days 14 — clearplane.core.analytics.hourly-retention-days Container label, UI Runtime Public Validated System / Settings / Analytics Days of hourly analytics rollups retained before compaction into daily rollups.
clearplane.core.bootstrap.acme-dns-profile.api-token String Non-blank value, up to 4096 characters (empty) CLEARPLANE_CORE_BOOTSTRAP_ACME_DNS_PROFILE_<INDEX>API_TOKEN
CLEARPLANE_CORE_BOOTSTRAP_ACME_DNS_PROFILE
<INDEX>_API_TOKEN_FILE
— Environment Bootstrap Secret Restart required — Required API token for this numbered DNS profile. May be injected directly from a deployment secret or through its _FILE environment twin.
clearplane.core.bootstrap.acme-dns-profile.name String Trimmed unique name, 1-200 characters (empty) CLEARPLANE_CORE_BOOTSTRAP_ACME_DNS_PROFILE_<INDEX>_NAME — Environment Bootstrap Public Restart required — Required case-insensitively unique name for this numbered DNS profile. Indices start at 1 and may contain gaps. Certificate labels select this name.
clearplane.core.bootstrap.acme-dns-profile.propagation-seconds Integer (optional) 1-3600, or empty for the provider default (empty) CLEARPLANE_CORE_BOOTSTRAP_ACME_DNS_PROFILE_<INDEX>_PROPAGATION_SECONDS — Environment Bootstrap Public Restart required — Optional DNS propagation delay in seconds for this numbered credential profile.
clearplane.core.bootstrap.acme-dns-profile.provider AcmeDnsProvider Cloudflare Cloudflare CLEARPLANE_CORE_BOOTSTRAP_ACME_DNS_PROFILE_<INDEX>_PROVIDER — Environment Bootstrap Public Restart required — DNS provider for this numbered credential profile.
clearplane.core.bootstrap.acme-dns-profiles String JSON object with a profiles array of unique name, Cloudflare provider, apiToken, and optional propagationSeconds fields; or empty (empty) CLEARPLANE_CORE_BOOTSTRAP_ACME_DNS_PROFILES
CLEARPLANE_CORE_BOOTSTRAP_ACME_DNS_PROFILES_FILE
— Environment Bootstrap Secret Restart required — One-line JSON document containing read-only ACME DNS profiles. Unknown properties are rejected; names must be trimmed, case-insensitively unique and at most 200 characters, tokens must be non-blank and at most 4096 characters, and propagationSeconds must be 1-3600 when present.
clearplane.core.bootstrap.analytics-path String — ../var/analytics CLEARPLANE_CORE_BOOTSTRAP_ANALYTICS_PATH — Environment Bootstrap Public Restart required — Persistent Core analytics data directory.
clearplane.core.bootstrap.certificate-password String — (empty) CLEARPLANE_CORE_BOOTSTRAP_CERTIFICATE_PASSWORD
CLEARPLANE_CORE_BOOTSTRAP_CERTIFICATE_PASSWORD_FILE
— Environment Bootstrap Secret Restart required — Password protecting stored certificates.
clearplane.core.bootstrap.cloud-uri String Absolute HTTPS base URI with path / or /api/ https://cloud.clearplane.net/api/ CLEARPLANE_CORE_BOOTSTRAP_CLOUD_URI — Environment Bootstrap Public Restart required — Clearplane Cloud API base URI. Used only when Cloud integration is enabled. Credentials, queries and fragments are rejected.
clearplane.core.bootstrap.compose-project-name String — (empty) CLEARPLANE_CORE_BOOTSTRAP_COMPOSE_PROJECT_NAME — Environment Bootstrap Public Restart required — Compose project owning the Clearplane containers. When omitted, Core resolves the project from its runtime container identity.
clearplane.core.bootstrap.container-proxy-data-path String — /app/container-proxy-data CLEARPLANE_CORE_BOOTSTRAP_CONTAINER_PROXY_DATA_PATH — Environment Bootstrap Public Restart required — Persistent data directory published to ContainerProxy.
clearplane.core.bootstrap.container-proxy-uri String Absolute HTTPS origin https://clearplane-container-proxy:8443 CLEARPLANE_CORE_BOOTSTRAP_CONTAINER_PROXY_URI — Environment Bootstrap Public Restart required — Internal ContainerProxy origin. Credentials, paths, queries and fragments are rejected.
clearplane.core.bootstrap.data-path String — ../var/data CLEARPLANE_CORE_BOOTSTRAP_DATA_PATH — Environment Bootstrap Public Restart required — Persistent Core data directory.
clearplane.core.bootstrap.edge-data-path String — /app/edge-data CLEARPLANE_CORE_BOOTSTRAP_EDGE_DATA_PATH — Environment Bootstrap Public Restart required — Persistent data directory published to Edge.
clearplane.core.bootstrap.jwt-audience String — clearplane CLEARPLANE_CORE_BOOTSTRAP_JWT_AUDIENCE — Environment Bootstrap Public Restart required — JWT audience written to and accepted from Core authentication tokens.
clearplane.core.bootstrap.jwt-issuer String — clearplane CLEARPLANE_CORE_BOOTSTRAP_JWT_ISSUER — Environment Bootstrap Public Restart required — JWT issuer written to and accepted from Core authentication tokens.
clearplane.core.bootstrap.jwt-issuer-signing-key String — (redacted) CLEARPLANE_CORE_BOOTSTRAP_JWT_ISSUER_SIGNING_KEY
CLEARPLANE_CORE_BOOTSTRAP_JWT_ISSUER_SIGNING_KEY_FILE
— Environment Bootstrap Secret Restart required — JWT signing key used by Core.
clearplane.core.bootstrap.logs-path String — ../var/logs CLEARPLANE_CORE_BOOTSTRAP_LOGS_PATH — Environment Bootstrap Public Restart required — Base directory for Core logs.
clearplane.core.bootstrap.setup-uri String — /setup CLEARPLANE_CORE_BOOTSTRAP_SETUP_URI — Environment Bootstrap Public Restart required — Setup URI displayed by the setup-code command. This does not configure the UI host or its routing.
clearplane.core.bootstrap.ui-data-path String — /app/ui-data CLEARPLANE_CORE_BOOTSTRAP_UI_DATA_PATH — Environment Bootstrap Public Restart required — Persistent data directory published to UI.
clearplane.core.bootstrap.ui-uri String Absolute HTTPS origin https://clearplane-ui:8443 CLEARPLANE_CORE_BOOTSTRAP_UI_URI — Environment Bootstrap Public Restart required — Internal UI origin. Credentials, paths, queries and fragments are rejected.
clearplane.core.bootstrap.waf-ruleset-signing-keys String Comma-separated <key-id>:<base64 P-521 SubjectPublicKeyInfo> entries (empty) CLEARPLANE_CORE_BOOTSTRAP_WAF_RULESET_SIGNING_KEYS — Environment Bootstrap Public Restart required — Trusted WAF ruleset signing keys. When set, these replace the signing keys built into this Clearplane version instead of adding to them. Invalid entries stop the service from starting. Leave empty to trust only the built-in keys.
clearplane.core.container-discovery.enabled Boolean — true — clearplane.core.container-discovery.enabled Container label Runtime Public Immediate — Enable reconciliation of proxied services from container labels.
clearplane.core.geo-ip.enabled Boolean — true — clearplane.core.geo-ip.enabled Container label, UI Runtime Public Validated System / Settings / Country geolocation Enable country geolocation and enforcement of country-dependent access control policies.
clearplane.core.geo-ip.license-key String 0-512 characters (empty) CLEARPLANE_CORE_GEO_IP_LICENSE_KEY
CLEARPLANE_CORE_GEO_IP_LICENSE_KEY_FILE
clearplane.core.geo-ip.license-key Environment, Container label, UI Runtime Secret Validated System / Settings / Country geolocation MaxMind license key. It is required only when country geolocation is effectively enabled with the MaxMind provider; empty is allowed when geolocation is disabled or DbIp is effective.
clearplane.core.geo-ip.provider GeoIpProvider DbIp, MaxMind DbIp — clearplane.core.geo-ip.provider Container label, UI Runtime Public Validated System / Settings / Country geolocation GeoIP database provider.
clearplane.core.logs.indexed-retention-days Integer Positive integer 30 — clearplane.core.logs.indexed-retention-days Container label, UI Runtime Public Validated System / Settings / Logs Days of queryable indexed logs retained before pruning.
clearplane.core.logs.raw-retention-days Integer Non-negative integer 1 — clearplane.core.logs.raw-retention-days Container label, UI Runtime Public Validated System / Settings / Logs Days of fully ingested raw JSONL files retained. Zero removes rolled files after ingestion.

Edge directives

Directive Type Accepted values Built-in default Environment variable Docker label Sources Lifecycle Sensitivity Apply UI location Description
clearplane.edge.analytics.flush-interval-seconds Integer 1-3600 30 — clearplane.edge.analytics.flush-interval-seconds Container label, UI Runtime Public Restart required System / Settings / Edge / Telemetry Seconds between Edge analytics counter flushes to Core. Edge reads this once at startup, so a change takes effect when Edge restarts.
clearplane.edge.bootstrap.cache-path String — ../var/cache CLEARPLANE_EDGE_BOOTSTRAP_CACHE_PATH — Environment Bootstrap Public Restart required — Persistent response-cache directory.
clearplane.edge.bootstrap.certificate-password String — (empty) CLEARPLANE_EDGE_BOOTSTRAP_CERTIFICATE_PASSWORD
CLEARPLANE_EDGE_BOOTSTRAP_CERTIFICATE_PASSWORD_FILE
— Environment Bootstrap Secret Restart required — Password used to read stored certificates.
clearplane.edge.bootstrap.challenge-clearance-key String Canonical 43-character base64url encoding of 32 bytes, or empty to disable issuance (empty) CLEARPLANE_EDGE_BOOTSTRAP_CHALLENGE_CLEARANCE_KEY
CLEARPLANE_EDGE_BOOTSTRAP_CHALLENGE_CLEARANCE_KEY_FILE
— Environment Bootstrap Secret Restart required — Machine key for bot-challenge tokens and clearance cookies. Read once at Edge startup; empty disables issuance, while malformed configured material stops Edge at startup.
clearplane.edge.bootstrap.core-uri String Absolute HTTPS origin — CLEARPLANE_EDGE_BOOTSTRAP_CORE_URI — Environment Bootstrap Public Restart required — Internal Core HTTPS origin used for the mutually authenticated control-plane connection. Credentials, paths, queries and fragments are rejected.
clearplane.edge.bootstrap.data-path String — ../var/data CLEARPLANE_EDGE_BOOTSTRAP_DATA_PATH — Environment Bootstrap Public Restart required — Read-only shared data directory.
clearplane.edge.bootstrap.http-port Integer 1-65535 80 CLEARPLANE_EDGE_BOOTSTRAP_HTTP_PORT — Environment Bootstrap Public Restart required — HTTP listen port inside the Edge container.
clearplane.edge.bootstrap.https-port Integer 1-65535 443 CLEARPLANE_EDGE_BOOTSTRAP_HTTPS_PORT — Environment Bootstrap Public Restart required — HTTPS listen port inside the Edge container.
clearplane.edge.bootstrap.instance-id String — (empty) CLEARPLANE_EDGE_BOOTSTRAP_INSTANCE_ID — Environment Bootstrap Public Restart required — Stable Edge instance identifier; defaults to the machine name when empty.
clearplane.edge.bootstrap.logs-path String — ../var/logs CLEARPLANE_EDGE_BOOTSTRAP_LOGS_PATH — Environment Bootstrap Public Restart required — Base directory for Edge logs.
clearplane.edge.bootstrap.minimum-tls-version String 1.2, 1.3 1.2 CLEARPLANE_EDGE_BOOTSTRAP_MINIMUM_TLS_VERSION — Environment Bootstrap Public Restart required — Minimum TLS version accepted on the HTTPS listener. Any other value stops Edge at startup; TLS 1.0 and 1.1 are unavailable.
clearplane.edge.bootstrap.waf-memory-admission-percent Integer 10-100 85 CLEARPLANE_EDGE_BOOTSTRAP_WAF_MEMORY_ADMISSION_PERCENT — Environment Bootstrap Public Restart required — Share of the managed heap ceiling a compiled WAF ruleset set may occupy. A configuration revision whose projected cost exceeds this share is refused and the previously published rulesets keep serving. A value outside the accepted range stops Edge at startup.
clearplane.edge.cache.maximum-per-tier-size-megabytes Integer 1-1048576 1024 — clearplane.edge.cache.maximum-per-tier-size-megabytes Container label, UI Runtime Public Staged System / Settings / Edge / Capacity Maximum response-cache capacity per storage tier in megabytes. The memory tier and the persistent tier each stay within this limit, so both together can reach twice it.
clearplane.edge.configuration.automatic-apply Boolean — false — clearplane.edge.configuration.automatic-apply Container label, UI Runtime Public Immediate System / Settings / Edge / Configuration delivery Apply saved configuration changes to Edge automatically.
clearplane.edge.configuration.automatic-apply-discovered-routes Boolean — true — clearplane.edge.configuration.automatic-apply-discovered-routes Container label, UI Runtime Public Immediate System / Settings / Edge / Configuration delivery Apply container-discovered route changes automatically.
clearplane.edge.connections.maximum-per-ip Integer (optional) Positive integer or empty for unlimited 100 — clearplane.edge.connections.maximum-per-ip Container label, UI Runtime Public Restart required System / Settings / Edge / Request safety Maximum concurrent connections per client address.
clearplane.edge.connections.maximum-total Integer (optional) Positive integer or empty for unlimited 10000 — clearplane.edge.connections.maximum-total Container label, UI Runtime Public Restart required System / Settings / Edge / Request safety Maximum concurrent connections accepted by Edge.
clearplane.edge.http1.enabled Boolean — true — clearplane.edge.http1.enabled Container label, UI Runtime Public Restart required System / Settings / Edge / HTTPS protocols Accept HTTP/1.1 connections on the public HTTPS listener. The clearplane.edge.http1.enabled label on the Edge container overrides the saved UI value. Keep at least one HTTPS protocol enabled. Changes require an Edge restart; the plain HTTP listener retains HTTP/1.1 for redirects, ACME, and health checks.
clearplane.edge.http2.enabled Boolean — true — clearplane.edge.http2.enabled Container label, UI Runtime Public Restart required System / Settings / Edge / HTTPS protocols Accept HTTP/2 connections on the public HTTPS listener. The clearplane.edge.http2.enabled label on the Edge container overrides the saved UI value. Keep at least one HTTPS protocol enabled. Changes require an Edge restart; the plain HTTP listener retains HTTP/1.1 for redirects, ACME, and health checks.
clearplane.edge.http3.enabled Boolean — true — clearplane.edge.http3.enabled Container label, UI Runtime Public Restart required System / Settings / Edge / HTTPS protocols Accept HTTP/3 connections on the public HTTPS listener when QUIC is supported. The clearplane.edge.http3.enabled label on the Edge container overrides the saved UI value. Keep at least one HTTPS protocol enabled. HTTP/3 alone requires clients that can discover or directly request it and a QUIC-capable runtime. Changes require an Edge restart.
clearplane.edge.requests.headers-timeout-seconds Integer 1-300 30 — clearplane.edge.requests.headers-timeout-seconds Container label, UI Runtime Public Restart required System / Settings / Edge / Request safety Seconds allowed for receiving request headers.
clearplane.edge.requests.maximum-body-size-bytes Long integer (optional) Positive integer or empty for unlimited 30000000 — clearplane.edge.requests.maximum-body-size-bytes Container label, UI Runtime Public Restart required System / Settings / Edge / Request safety Maximum request-body size in bytes.
clearplane.edge.requests.maximum-headers-total-size-bytes Integer 1024-1048576 32768 — clearplane.edge.requests.maximum-headers-total-size-bytes Container label, UI Runtime Public Restart required System / Settings / Edge / Request safety Maximum combined request-header size in bytes.
clearplane.edge.requests.maximum-uri-length-bytes Integer 256-16384 8192 — clearplane.edge.requests.maximum-uri-length-bytes Container label, UI Runtime Public Restart required System / Settings / Edge / Request safety Maximum request URI size in bytes.
clearplane.edge.requests.minimum-body-data-rate-bytes-per-second Integer (optional) Positive integer or empty to disable 240 — clearplane.edge.requests.minimum-body-data-rate-bytes-per-second Container label, UI Runtime Public Restart required System / Settings / Edge / Request safety Minimum request-body data rate in bytes per second.
clearplane.edge.requests.minimum-body-data-rate-grace-period-seconds Integer 1-60 5 — clearplane.edge.requests.minimum-body-data-rate-grace-period-seconds Container label, UI Runtime Public Restart required System / Settings / Edge / Request safety Grace period in seconds for the minimum request-body data rate.
clearplane.edge.tracking.maximum-partitions Integer 1000-10000000 100000 — clearplane.edge.tracking.maximum-partitions Container label, UI Runtime Public Staged System / Settings / Edge / Capacity Maximum in-memory partitions retained for rate-limit counting and auto-ban tracking. Unrelated to the response cache.
clearplane.edge.trusted-proxies Whitespace list of string values Whitespace-delimited canonical IPv4 addresses or IPv4 CIDR ranges; /0 is forbidden (empty) — clearplane.edge.trusted-proxies Container label, UI Runtime Public Staged System / Settings / Edge / Network Addresses or CIDR ranges trusted to supply forwarded client information; an empty list trusts none. Never list the Docker bridge gateway address: with Docker's userland proxy or IPv6 published ports every external client arrives from it, and trusting it lets any client choose its own X-Forwarded-For.
clearplane.edge.upstream.restricted-destination-classes Whitespace list of UpstreamDestinationRestrictionClass values Loopback, PrivateNetwork, LinkLocal, CloudMetadata, ControlPlaneNetwork (empty) — clearplane.edge.upstream.restricted-destination-classes Container label, UI Runtime Public Staged System / Settings / Edge / Network Unique whitespace-delimited destination address classes denied for upstream proxy connections. Empty allows all classes. ControlPlaneNetwork may be selected only when control-plane ranges exist.

UI directives

Directive Type Accepted values Built-in default Environment variable Docker label Sources Lifecycle Sensitivity Apply UI location Description
clearplane.ui.bootstrap.data-path String — ../var/data CLEARPLANE_UI_BOOTSTRAP_DATA_PATH — Environment Bootstrap Public Restart required — Read-only persistent UI data directory.
clearplane.ui.bootstrap.logs-path String — ../var/logs CLEARPLANE_UI_BOOTSTRAP_LOGS_PATH — Environment Bootstrap Public Restart required — Base directory for UI logs.
clearplane.ui.bootstrap.public-core-uri String Empty or absolute HTTP/HTTPS origin (empty) CLEARPLANE_UI_BOOTSTRAP_PUBLIC_CORE_URI — Environment Bootstrap Public Restart required — Public Core origin for split-port development; empty uses the browser origin. Credentials, paths, queries and fragments are rejected.

ContainerProxy directives

Directive Type Accepted values Built-in default Environment variable Docker label Sources Lifecycle Sensitivity Apply UI location Description
clearplane.container-proxy.bootstrap.data-path String — ../var/data CLEARPLANE_CONTAINER_PROXY_BOOTSTRAP_DATA_PATH — Environment Bootstrap Public Restart required — Read-only persistent ContainerProxy data directory.
clearplane.container-proxy.bootstrap.logs-path String — ../var/logs CLEARPLANE_CONTAINER_PROXY_BOOTSTRAP_LOGS_PATH — Environment Bootstrap Public Restart required — Base directory for ContainerProxy logs.
clearplane.container-proxy.bootstrap.socket-path String — /var/run/docker.sock CLEARPLANE_CONTAINER_PROXY_BOOTSTRAP_SOCKET_PATH — Environment Bootstrap Public Restart required — Container-runtime Unix socket path.

Proxy directives

Directive Type Accepted values Built-in default Environment variable Docker label Sources Lifecycle Sensitivity Apply UI location Description
clearplane.proxy.access-control PolicyState Inherit, On, Off Inherit — clearplane.proxy.access-control Container label Service resource Public Immediate — Inherit the Global access control policies, turn on this proxy route's own access control policies, or turn the feature off for this route.
clearplane.proxy.access-control.allow-addresses Whitespace list of string values Whitespace-delimited IP addresses or CIDR ranges (empty) — clearplane.proxy.access-control.allow-addresses Container label Service resource Public Immediate — Addresses allowed by the generated inline access control policy.
clearplane.proxy.access-control.allow-countries Whitespace list of string values Whitespace-delimited ISO alpha-2 country codes (empty) — clearplane.proxy.access-control.allow-countries Container label Service resource Public Immediate — Countries allowed by the generated inline access control policy.
clearplane.proxy.access-control.block-addresses Whitespace list of string values Whitespace-delimited IP addresses or CIDR ranges (empty) — clearplane.proxy.access-control.block-addresses Container label Service resource Public Immediate — Addresses blocked by the generated inline access control policy.
clearplane.proxy.access-control.block-countries Whitespace list of string values Whitespace-delimited ISO alpha-2 country codes (empty) — clearplane.proxy.access-control.block-countries Container label Service resource Public Immediate — Countries blocked by the generated inline access control policy.
clearplane.proxy.access-control.default-action AccessControlAction Allow, Block Allow — clearplane.proxy.access-control.default-action Container label Service resource Public Immediate — Default action for the generated inline access control policy.
clearplane.proxy.access-control.policy String Unique whitespace-delimited policy system names — — clearplane.proxy.access-control.policy Container label Service resource Public Immediate — Existing Route-scoped access control policies, each using lowercase letters, digits, and single dashes between words with a 200-character maximum. Used only when clearplane.proxy.access-control is On. Without it, the route's labels create an inline policy; references cannot be mixed with inline access-control fields.
clearplane.proxy.additional-hosts Whitespace list of string values Unique whitespace-delimited exact DNS hosts (max 253 characters) or single-label wildcards whose base is max 253 characters (empty) — clearplane.proxy.additional-hosts Container label Service resource Public Immediate — Additional public hosts matched by the generated route. They are compared case-insensitively, must not repeat the primary host, and should list a wildcard's base domain explicitly when it should also match.
clearplane.proxy.authentication PolicyState Inherit, On, Off Inherit — clearplane.proxy.authentication Container label Service resource Public Immediate — Turn on this proxy route's own authentication policies. Authentication has no Global policy, so Inherit and Off both leave the route without authentication.
clearplane.proxy.authentication.basic.realm String Non-empty string, up to 200 characters — — clearplane.proxy.authentication.basic.realm Container label Service resource Public Immediate — Required realm shown by the generated Basic authentication challenge.
clearplane.proxy.authentication.combine-mode AuthenticationCombineMode Or, And Or — clearplane.proxy.authentication.combine-mode Container label Service resource Public Immediate — How the route combines several authentication policies. Or accepts a request that satisfies any policy; And requires every policy.
clearplane.proxy.authentication.jwt.audiences Whitespace list of string values 1-20 unique whitespace-delimited values, each up to 400 characters — — clearplane.proxy.authentication.jwt.audiences Container label Service resource Public Immediate — Required accepted JWT audiences for the generated policy.
clearplane.proxy.authentication.jwt.clock-skew-seconds Integer 0 to 300 60 — clearplane.proxy.authentication.jwt.clock-skew-seconds Container label Service resource Public Immediate — JWT expiry and not-before tolerance in seconds.
clearplane.proxy.authentication.jwt.issuer String Non-empty string, up to 400 characters — — clearplane.proxy.authentication.jwt.issuer Container label Service resource Public Immediate — Required expected JWT issuer claim for the generated policy.
clearplane.proxy.authentication.key-location AuthenticationKeyLocation Edge, Core Edge — clearplane.proxy.authentication.key-location Container label Service resource Public Immediate — Location that verifies credentials for the generated inline policy.
clearplane.proxy.authentication.policy String Unique whitespace-delimited policy system names — — clearplane.proxy.authentication.policy Container label Service resource Public Immediate — Existing authentication policies, each using lowercase letters, digits, and single dashes between words with a 200-character maximum. Used only when clearplane.proxy.authentication is On. Without it, the route's authentication labels create an inline policy; a reference cannot be mixed with inline authentication fields.
clearplane.proxy.authentication.type AuthenticationType Basic, JwtBearer — — clearplane.proxy.authentication.type Container label Service resource Public Immediate — Authentication method for the generated inline policy. Required when clearplane.proxy.authentication is On without a policy reference.
clearplane.proxy.auto-ban PolicyState Inherit, On, Off Inherit — clearplane.proxy.auto-ban Container label Service resource Public Immediate — Inherit the Global auto-ban policies, turn on this proxy route's own auto-ban policies, or turn the feature off for this route.
clearplane.proxy.auto-ban.ban-duration-seconds Integer Positive integer 600 — clearplane.proxy.auto-ban.ban-duration-seconds Container label Service resource Public Immediate — Initial automatic ban duration in seconds.
clearplane.proxy.auto-ban.error-response.enabled Boolean — true — clearplane.proxy.auto-ban.error-response.enabled Container label Service resource Public Immediate — Ban clients that exceed the configured 4xx-response threshold. Proxied 400–499 responses count, as does Edge's own 401 when presented credentials fail authentication. Server failures never count.
clearplane.proxy.auto-ban.error-response.status-codes Whitespace list of integer values Unique whitespace-delimited HTTP status codes in the 400-499 range (empty) — clearplane.proxy.auto-ban.error-response.status-codes Container label Service resource Public Immediate — Proxied client-error status codes counted by the error-response trigger. Empty counts every 400-499 response.
clearplane.proxy.auto-ban.error-response.threshold Integer Positive integer 100 — clearplane.proxy.auto-ban.error-response.threshold Container label Service resource Public Immediate — Proxied HTTP 400–499 responses permitted during the tracking window before a ban.
clearplane.proxy.auto-ban.error-response.window-seconds Integer Positive integer 60 — clearplane.proxy.auto-ban.error-response.window-seconds Container label Service resource Public Immediate — Proxied 4xx-response tracking window in seconds.
clearplane.proxy.auto-ban.escalation.enabled Boolean — false — clearplane.proxy.auto-ban.escalation.enabled Container label Service resource Public Immediate — Increase repeat ban durations within the escalation window.
clearplane.proxy.auto-ban.escalation.maximum-duration-seconds Integer Positive integer no less than ban-duration-seconds when escalation is enabled 86400 — clearplane.proxy.auto-ban.escalation.maximum-duration-seconds Container label Service resource Public Immediate — Maximum escalated ban duration in seconds. Applies only when escalation is enabled; a policy without escalation always uses the initial duration.
clearplane.proxy.auto-ban.escalation.multiplier Integer Integer greater than or equal to 1; at least 2 when escalation is enabled 2 — clearplane.proxy.auto-ban.escalation.multiplier Container label Service resource Public Immediate — Multiplier applied to repeat automatic bans.
clearplane.proxy.auto-ban.escalation.window-seconds Integer Positive integer 86400 — clearplane.proxy.auto-ban.escalation.window-seconds Container label Service resource Public Immediate — Repeat-ban escalation window in seconds.
clearplane.proxy.auto-ban.policy String Unique whitespace-delimited policy system names — — clearplane.proxy.auto-ban.policy Container label Service resource Public Immediate — Existing Route-scoped auto-ban policies, each using lowercase letters, digits, and single dashes between words with a 200-character maximum. Used only when clearplane.proxy.auto-ban is On. Without it, the route's labels create an inline policy; references cannot be mixed with inline auto-ban fields.
clearplane.proxy.auto-ban.rate-limit-violation.enabled Boolean — true — clearplane.proxy.auto-ban.rate-limit-violation.enabled Container label Service resource Public Immediate — Ban clients that exceed the rate-limit violation threshold. Only rejections by an IP-keyed rate limit policy count as violations.
clearplane.proxy.auto-ban.rate-limit-violation.threshold Integer Positive integer 50 — clearplane.proxy.auto-ban.rate-limit-violation.threshold Container label Service resource Public Immediate — Rate-limit violations permitted during the violation window before a ban.
clearplane.proxy.auto-ban.rate-limit-violation.window-seconds Integer Positive integer 60 — clearplane.proxy.auto-ban.rate-limit-violation.window-seconds Container label Service resource Public Immediate — Rate-limit violation tracking window in seconds.
clearplane.proxy.cache PolicyState Inherit, On, Off Inherit — clearplane.proxy.cache Container label Service resource Public Immediate — Inherit the Global cache policy, turn on this proxy route's own cache policy, or turn caching off for this route.
clearplane.proxy.cache.bypass-cookies Whitespace list of string values Unique whitespace-delimited cookie names, name prefixes ending in *, or * alone (empty) — clearplane.proxy.cache.bypass-cookies Container label Service resource Public Immediate — Request cookies that make a request bypass the cache. Other request cookies are ignored for caching and still forwarded upstream.
clearplane.proxy.cache.default-time-to-live-seconds Integer 1-31536000 7200 — clearplane.proxy.cache.default-time-to-live-seconds Container label Service resource Public Immediate — Fresh cache lifetime in seconds when the upstream declares none and no per-status lifetime applies. Must be between the minimum and maximum lifetimes.
clearplane.proxy.cache.downstream-cache-control DownstreamCacheControl Passthrough, Override, Strip Passthrough — clearplane.proxy.cache.downstream-cache-control Container label Service resource Public Immediate — Cache-Control sent to the client.
clearplane.proxy.cache.downstream-maximum-age-seconds Integer 0-31536000 0 — clearplane.proxy.cache.downstream-maximum-age-seconds Container label Service resource Public Immediate — Client max-age in seconds when the downstream cache control is overridden.
clearplane.proxy.cache.eligibility CacheEligibility StaticFiles, Everything StaticFiles — clearplane.proxy.cache.eligibility Container label Service resource Public Immediate — Requests that use the cache. StaticFiles caches only paths ending in one of the file extensions; Everything caches any path.
clearplane.proxy.cache.file-extensions Whitespace list of string values Unique whitespace-delimited extensions of letters and digits without the leading dot, each up to 32 characters 7z avi apk avif bin bmp bz2 class css csv dat doc docx dmg ejs eot eps exe flac gif gz ico iso jar jpeg jpg js map mid midi mjs mkv mp3 mp4 ogg otf pdf pict pls png ppt pptx ps rar svg svgz swf tar tif tiff ttf wasm webm webmanifest webp woff woff2 xls xlsx zip zst — clearplane.proxy.cache.file-extensions Container label Service resource Public Immediate — File extensions cached when eligibility is StaticFiles. Matching ignores case.
clearplane.proxy.cache.honor-cdn-cache-control Boolean — true — clearplane.proxy.cache.honor-cdn-cache-control Container label Service resource Public Immediate — Prefer the CDN-Cache-Control header over Cache-Control.
clearplane.proxy.cache.ignore-request-no-cache Boolean — true — clearplane.proxy.cache.ignore-request-no-cache Container label Service resource Public Immediate — Serve a stored response despite a client request no-cache directive, so a browser reload cannot force an upstream fetch.
clearplane.proxy.cache.ignore-request-no-store Boolean — true — clearplane.proxy.cache.ignore-request-no-store Container label Service resource Public Immediate — Allow serving and storing a response despite a client request no-store directive. This overrides the client's strongest cache privacy directive.
clearplane.proxy.cache.ignore-upstream-cache-control Boolean — false — clearplane.proxy.cache.ignore-upstream-cache-control Container label Service resource Public Immediate — Discard the lifetime declared by the upstream and use the default lifetime. Cannot be true together with require-upstream-cache-control.
clearplane.proxy.cache.ignore-upstream-no-cache Boolean — false — clearplane.proxy.cache.ignore-upstream-no-cache Container label Service resource Public Immediate — Serve cached responses despite an upstream no-cache directive.
clearplane.proxy.cache.key.headers Whitespace list of string values Unique whitespace-delimited HTTP header names, each up to 200 characters (empty) — clearplane.proxy.cache.key.headers Container label Service resource Public Immediate — Request headers included in cache keys. Authorization, Proxy-Authorization and Cookie are forbidden.
clearplane.proxy.cache.key.include-host Boolean — true — clearplane.proxy.cache.key.include-host Container label Service resource Public Immediate — Include the request host in cache keys.
clearplane.proxy.cache.key.include-path Boolean — true — clearplane.proxy.cache.key.include-path Container label Service resource Public Immediate — Include the request path in cache keys.
clearplane.proxy.cache.key.query-mode CacheQueryStringMode All, None, Include, Exclude All — clearplane.proxy.cache.key.query-mode Container label Service resource Public Immediate — Query-string contribution to cache keys.
clearplane.proxy.cache.key.query-parameters Whitespace list of string values Unique whitespace-delimited names, each non-blank and up to 200 characters (empty) — clearplane.proxy.cache.key.query-parameters Container label Service resource Public Immediate — Query parameters included or excluded by query mode. Include and Exclude require at least one name.
clearplane.proxy.cache.maximum-response-size-megabytes Integer 1-1048576 64 — clearplane.proxy.cache.maximum-response-size-megabytes Container label Service resource Public Immediate — Maximum cached response size in megabytes. Must not exceed maximum-total-size-megabytes.
clearplane.proxy.cache.maximum-time-to-live-seconds Integer 1-31536000 31536000 — clearplane.proxy.cache.maximum-time-to-live-seconds Container label Service resource Public Immediate — Ceiling applied to a lifetime declared by the upstream, in seconds. Must not be less than the minimum or default lifetime.
clearplane.proxy.cache.maximum-total-size-megabytes Integer 1-1048576 256 — clearplane.proxy.cache.maximum-total-size-megabytes Container label Service resource Public Immediate — Cache pool in megabytes shared by every route that uses this policy.
clearplane.proxy.cache.minimum-time-to-live-seconds Integer 0-31536000 0 — clearplane.proxy.cache.minimum-time-to-live-seconds Container label Service resource Public Immediate — Floor applied to a lifetime declared by the upstream, in seconds. Must not exceed the default or maximum lifetime.
clearplane.proxy.cache.path-rules Whitespace list of string values Up to 32 unique whitespace-delimited pattern=action[,ttl=seconds][,ignore-upstream-cache-control][,browser-ttl=seconds] rules; action is cache or bypass; a pattern starts with / and contains no whitespace, =, comma, ? or # (empty) — clearplane.proxy.cache.path-rules Container label Service resource Public Immediate — Ordered path rules; the first rule whose pattern matches the request path applies, and * matches any characters including /. cache caches the path whatever the eligibility and extensions, optionally with its own lifetime (ttl), without the upstream's lifetime (ignore-upstream-cache-control) and with a client max-age (browser-ttl); bypass never caches it. For example: /_framework/=cache,ttl=31536000 /api/=bypass /=cache.
clearplane.proxy.cache.policy String One policy system name — — clearplane.proxy.cache.policy Container label Service resource Public Immediate — One existing Route-scoped cache policy using lowercase letters, digits, and single dashes between words with a 200-character maximum. Used only when clearplane.proxy.cache is On. Without it, the route's labels create an inline policy; the reference cannot be mixed with inline cache fields.
clearplane.proxy.cache.purge-on-redeploy Boolean — true — clearplane.proxy.cache.purge-on-redeploy Container label Service resource Public Immediate — Purge this route's cached responses when discovery sees its container recreated, for example after a deploy.
clearplane.proxy.cache.require-upstream-cache-control Boolean — false — clearplane.proxy.cache.require-upstream-cache-control Container label Service resource Public Immediate — Cache only responses that declare a cache lifetime. Cannot be true together with ignore-upstream-cache-control.
clearplane.proxy.cache.stale-if-error-seconds Integer 0-31536000 300 — clearplane.proxy.cache.stale-if-error-seconds Container label Service resource Public Immediate — Stale-if-error window in seconds.
clearplane.proxy.cache.stale-while-revalidate-seconds Integer 0-31536000 30 — clearplane.proxy.cache.stale-while-revalidate-seconds Container label Service resource Public Immediate — Stale-while-revalidate window in seconds.
clearplane.proxy.cache.status-codes Whitespace list of integer values Unique whitespace-delimited HTTP status codes from 100 through 599 200 301 302 303 404 410 — clearplane.proxy.cache.status-codes Container label Service resource Public Immediate — Response status codes eligible for caching.
clearplane.proxy.cache.status-codes-time-to-live Whitespace list of string values Non-overlapping whitespace-delimited code[-code]=seconds entries; codes 100-599 and seconds 0-31536000 302-303=1200 404=180 410=180 — clearplane.proxy.cache.status-codes-time-to-live Container label Service resource Public Immediate — Per-status cache lifetimes that replace the default lifetime when the upstream declares none.
clearplane.proxy.cache.storage-mode CacheStorageMode MemoryOnly, PersistentOnly, MemoryWithPersistentFallback MemoryWithPersistentFallback — clearplane.proxy.cache.storage-mode Container label Service resource Public Immediate — Cache storage mode.
clearplane.proxy.cache.vary-handling CacheVaryHandling Honor, Ignore Honor — clearplane.proxy.cache.vary-handling Container label Service resource Public Immediate — Honor stores a separate copy per value of each header the upstream lists in Vary; Ignore stores one copy regardless of Vary. Vary: *, Cookie or Authorization is never stored.
clearplane.proxy.certificate.additional-domains Whitespace list of string values Unique whitespace-delimited exact DNS hosts (max 253 characters) or single-label wildcards whose base is max 253 characters (empty) — clearplane.proxy.certificate.additional-domains Container label Service resource Public Immediate — Extra certificate domains beyond the route's hosts and redirect sources. The final certificate may have at most 99 subject alternative names. Wildcards require a DNS profile or inline credentials.
clearplane.proxy.certificate.dns.api-token String Non-empty single-line value, up to 4096 characters — — clearplane.proxy.certificate.dns.api-token Container label Service resource Secret Immediate — Required whenever any inline DNS field is present. Core encrypts the token before persistence. Inline DNS fields cannot be combined with dns.profile.
clearplane.proxy.certificate.dns.profile String Trimmed non-empty profile name, up to 200 characters — — clearplane.proxy.certificate.dns.profile Container label Service resource Public Immediate — Named DNS profile used for DNS-01 validation. Cannot be combined with the dns.provider, dns.api-token, or dns.propagation-seconds fields. Without either form of DNS configuration, HTTP-01 is used.
clearplane.proxy.certificate.dns.propagation-seconds Integer (optional) 1-3600, or empty for the provider default — — clearplane.proxy.certificate.dns.propagation-seconds Container label Service resource Public Immediate — Optional propagation delay in seconds for this route's inline DNS credentials. Requires dns.api-token.
clearplane.proxy.certificate.dns.provider AcmeDnsProvider Cloudflare Cloudflare — clearplane.proxy.certificate.dns.provider Container label Service resource Public Immediate — Provider for this route's inline DNS credentials. Requires dns.api-token and cannot be combined with the dns.profile field.
clearplane.proxy.certificate.domain String Exact DNS host, up to 253 characters — — clearplane.proxy.certificate.domain Container label Service resource Public Immediate — Primary certificate domain. Defaults to the route host or the base of a covering wildcard route host. An explicit domain must not be covered by a requested wildcard. Wildcard route hosts are included in the certificate and require a DNS profile.
clearplane.proxy.certificate.enabled Boolean — false — clearplane.proxy.certificate.enabled Container label Service resource Public Immediate — Request and renew an ACME certificate for this proxy route.
clearplane.proxy.certificate.wildcard Boolean — false — clearplane.proxy.certificate.wildcard Container label Service resource Public Immediate — Include a one-label wildcard for the primary certificate domain. Enabling it requires a named DNS profile or inline DNS credentials.
clearplane.proxy.compression PolicyState Inherit, On, Off Inherit — clearplane.proxy.compression Container label Service resource Public Immediate — Inherit the Global compression policy, turn on this proxy route's own compression policy, or turn the feature off for this route.
clearplane.proxy.compression.brotli.enabled Boolean — true — clearplane.proxy.compression.brotli.enabled Container label Service resource Public Immediate — Enable Brotli response compression in the generated inline policy. At least one of Brotli or gzip must be enabled.
clearplane.proxy.compression.brotli.level Integer 0 to 11 4 — clearplane.proxy.compression.brotli.level Container label Service resource Public Immediate — Brotli quality level for the generated inline policy.
clearplane.proxy.compression.content-types Whitespace list of string values Up to 256 unique whitespace-delimited media-type selectors, each up to 200 characters; prefix exclusions with ! text/* application/json application/+json application/javascript application/x-javascript application/xml application/+xml application/wasm image/svg+xml font/* application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf !text/event-stream !font/woff !font/woff2 — clearplane.proxy.compression.content-types Container label Service resource Public Immediate — Response content types eligible for compression. Selectors may be exact, type/, type/+suffix, or /. Exclusions always win, the combined selectors must leave at least one included type, and HTTP request methods are not filtered.
clearplane.proxy.compression.gzip.enabled Boolean — true — clearplane.proxy.compression.gzip.enabled Container label Service resource Public Immediate — Enable gzip response compression in the generated inline policy. At least one of Brotli or gzip must be enabled.
clearplane.proxy.compression.gzip.level Integer 1 to 9 6 — clearplane.proxy.compression.gzip.level Container label Service resource Public Immediate — gzip compression level for the generated inline policy.
clearplane.proxy.compression.minimum-length-bytes Integer 0 to 1048576 1024 — clearplane.proxy.compression.minimum-length-bytes Container label Service resource Public Immediate — Minimum identity response body length in bytes before compression is applied.
clearplane.proxy.compression.policy String One policy system name — — clearplane.proxy.compression.policy Container label Service resource Public Immediate — One existing Route-scoped compression policy using lowercase letters, digits, and single dashes between words with a 200-character maximum. Used only when clearplane.proxy.compression is On. Without it, the route's labels create an inline policy; the reference cannot be mixed with inline compression fields.
clearplane.proxy.cors PolicyState Inherit, On, Off Inherit — clearplane.proxy.cors Container label Service resource Public Immediate — Inherit the Global CORS policy, turn on this proxy route's own CORS policy, or turn the feature off for this route.
clearplane.proxy.cors.allow-any-header Boolean — true — clearplane.proxy.cors.allow-any-header Container label Service resource Public Immediate — Allow any request header.
clearplane.proxy.cors.allow-any-method Boolean — true — clearplane.proxy.cors.allow-any-method Container label Service resource Public Immediate — Allow any request method.
clearplane.proxy.cors.allow-credentials Boolean — false — clearplane.proxy.cors.allow-credentials Container label Service resource Public Immediate — Allow credentialed cross-origin requests. Cannot be combined with the wildcard origin.
clearplane.proxy.cors.allowed-headers Whitespace list of string values Unique HTTP header names up to 200 characters; non-empty when allow-any-header is false (empty) — clearplane.proxy.cors.allowed-headers Container label Service resource Public Immediate — Request headers allowed when allow-any-header is false.
clearplane.proxy.cors.allowed-methods Whitespace list of string values Unique non-empty whitespace-delimited HTTP method tokens when allow-any-method is false (empty) — clearplane.proxy.cors.allowed-methods Container label Service resource Public Immediate — Methods allowed when allow-any-method is false.
clearplane.proxy.cors.allowed-origins Whitespace list of string values Unique whitespace-delimited HTTP origins, or * by itself (empty) — clearplane.proxy.cors.allowed-origins Container label Service resource Public Immediate — Origins allowed by the generated inline CORS policy. Credentials cannot be enabled with the wildcard origin.
clearplane.proxy.cors.exposed-headers Whitespace list of string values Unique whitespace-delimited HTTP header names, each up to 200 characters (empty) — clearplane.proxy.cors.exposed-headers Container label Service resource Public Immediate — Response headers exposed to the browser.
clearplane.proxy.cors.policy String One policy system name — — clearplane.proxy.cors.policy Container label Service resource Public Immediate — One existing Route-scoped CORS policy using lowercase letters, digits, and single dashes between words with a 200-character maximum. Used only when clearplane.proxy.cors is On. Without it, the route's labels create an inline policy; the reference cannot be mixed with inline CORS fields.
clearplane.proxy.cors.preflight-max-age-seconds Integer 0 to 86400 0 — clearplane.proxy.cors.preflight-max-age-seconds Container label Service resource Public Immediate — Preflight cache lifetime in seconds.
clearplane.proxy.cors.upstream-header-mode CorsUpstreamHeaderMode Override, Preserve Override — clearplane.proxy.cors.upstream-header-mode Container label Service resource Public Immediate — Override replaces the proxied service's CORS headers with this policy's. Preserve forwards preflights and applies this policy only when the service returned no Access-Control-Allow-Origin, so it cannot deny an origin the service allows — the service's own headers win whenever it sends them. If the service does not answer OPTIONS, Preserve forwards the preflight and the service's 404/405 reaches the browser, failing every non-simple cross-origin request to that route.
clearplane.proxy.enabled Boolean — false — clearplane.proxy.enabled Container label Service resource Public Immediate — Publish this container through Clearplane.
clearplane.proxy.error-page.enabled Boolean — true — clearplane.proxy.error-page.enabled Container label Service resource Public Immediate — Replace selected error responses with Clearplane's branded HTML page for clients that accept HTML.
clearplane.proxy.error-page.status-codes Whitespace list of integer values Whitespace-delimited HTTP status codes and inclusive ranges from 400 through 599; prefix exclusions with ! (for example, 400-599 !404) 502 503 504 — clearplane.proxy.error-page.status-codes Container label Service resource Public Immediate — Error response status codes eligible for branded replacement. At least one inclusion is required, included codes and ranges cannot overlap, and exclusions must leave a non-empty result.
clearplane.proxy.group.collapsed-by-default Boolean — false — clearplane.proxy.group.collapsed-by-default Container label Service resource Public Immediate — Collapse this resource group by default in route and cluster overviews. Ignored when group.name is absent.
clearplane.proxy.group.name String Trimmed non-blank name, up to 200 characters — — clearplane.proxy.group.name Container label Service resource Public Immediate — Optional resource group assigned to the generated route and cluster. The order and collapsed fields are ignored with a warning when this name label is absent.
clearplane.proxy.group.order Integer — 0 — clearplane.proxy.group.order Container label Service resource Public Immediate — Resource group display order. Any signed integer is accepted and lower values appear first. Ignored when group.name is absent.
clearplane.proxy.host String Exact DNS host (maximum 253 characters) or single-label wildcard with a base up to 253 characters — — clearplane.proxy.host Container label Service resource Public Immediate — Required public host matched by the generated route. A wildcard such as '*.example.com' excludes its base domain; canonical host redirects require an exact host.
clearplane.proxy.methods Whitespace list of string values Unique whitespace-delimited HTTP method tokens (empty) — clearplane.proxy.methods Container label Service resource Public Immediate — HTTP methods matched by the generated route. Values are normalized to uppercase; duplicates after normalization are rejected. Empty matches every method.
clearplane.proxy.name String Non-blank name within the generated resource limits — — clearplane.proxy.name Container label Service resource Public Immediate — Optional base name for the generated route, cluster, and inline access control, authentication, auto-ban, cache, compression, CORS, rate limit, request headers, response headers and WAF policies. Defaults to the container discovery key. The maximum depends on which generated resources are enabled, and an overlong name reports the exact applicable limit.
clearplane.proxy.order Integer Signed integer from -2147483638 to 2147483647 0 — clearplane.proxy.order Container label Service resource Public Immediate — Route match order. Lower values are evaluated first; the ten lowest signed integers are reserved for Clearplane management and guard routes.
clearplane.proxy.path String Non-empty complete route path pattern other than /_clearplane/challenge, up to 2000 characters /{**catch-all} — clearplane.proxy.path Container label Service resource Public Immediate — Complete public path pattern matched by the generated route, using the same route-template syntax as the UI and REST API. Use '/api/{**catch-all}' to match /api and every path below it; use '/api' to match only that literal path.
clearplane.proxy.path-rewrite String Valid route path pattern, up to 500 characters — — clearplane.proxy.path-rewrite Container label Service resource Public Immediate — Optional ASP.NET route pattern written before forwarding to the upstream service. Relative and slash-prefixed patterns are accepted; empty or whitespace disables rewriting.
clearplane.proxy.port Integer 1-65535 — — clearplane.proxy.port Container label Service resource Public Immediate — Container port reached by Edge.
clearplane.proxy.preserve-host-header Boolean true, false false — clearplane.proxy.preserve-host-header Container label Service resource Public Immediate — Forward the incoming Host header, including its port, to the upstream service. Enable for upstreams that validate the public hostname. Independent of X-Forwarded-Host.
clearplane.proxy.rate-limit PolicyState Inherit, On, Off Inherit — clearplane.proxy.rate-limit Container label Service resource Public Immediate — Inherit the Global rate limit policies, turn on this proxy route's own rate limit policies, or turn the feature off for this route.
clearplane.proxy.rate-limit.action RateLimitAction Reject, Challenge Reject — clearplane.proxy.rate-limit.action Container label Service resource Public Immediate — What the generated inline rate limit policy does when a client exceeds the limit. Reject returns 429. Challenge asks eligible browsers to complete proof of work and returns 429 to other clients; the route must enable bot challenges.
clearplane.proxy.rate-limit.header-name String Non-empty header name, up to 200 characters — — clearplane.proxy.rate-limit.header-name Container label Service resource Public Immediate — Required partition header when the generated rate limit policy key type is Header; otherwise it is optional and unused.
clearplane.proxy.rate-limit.key-type RateLimitKeyType Ip, Path, Header Ip — clearplane.proxy.rate-limit.key-type Container label Service resource Public Immediate — Partition key for the generated inline rate limit policy.
clearplane.proxy.rate-limit.policy String Unique whitespace-delimited policy system names — — clearplane.proxy.rate-limit.policy Container label Service resource Public Immediate — Existing Route-scoped rate limit policies, each using lowercase letters, digits, and single dashes between words with a 200-character maximum. Used only when clearplane.proxy.rate-limit is On. Without it, the route's labels create an inline policy; references cannot be mixed with inline rate-limit fields.
clearplane.proxy.rate-limit.request-limit Integer Positive integer 100 — clearplane.proxy.rate-limit.request-limit Container label Service resource Public Immediate — Requests permitted in each generated rate-limit window.
clearplane.proxy.rate-limit.window-seconds Integer Positive integer 60 — clearplane.proxy.rate-limit.window-seconds Container label Service resource Public Immediate — Window length in seconds for the generated rate limit policy.
clearplane.proxy.redirect.from-hosts Whitespace list of string values Case-insensitively unique whitespace-delimited exact DNS hosts, each up to 253 characters (empty) — clearplane.proxy.redirect.from-hosts Container label Service resource Public Immediate — Exact source hosts redirected to the route host. The primary route host must be exact rather than wildcard, and these sources must differ from it and not overlap any additional forwarding host.
clearplane.proxy.redirect.http-to-https Boolean (optional) — — — clearplane.proxy.redirect.http-to-https Container label Service resource Public Immediate — Redirect HTTP requests to HTTPS after the canonical host certificate is ready. Defaults to certificate.enabled.
clearplane.proxy.redirect.status-code RedirectStatusCode 301, 302, 307, 308 308 — clearplane.proxy.redirect.status-code Container label Service resource Public Immediate — Status code used by host and scheme redirects on this route.
clearplane.proxy.request-headers PolicyState Inherit, On, Off Inherit — clearplane.proxy.request-headers Container label Service resource Public Immediate — Inherit the Global request headers policy, turn on this proxy route's own request headers policy, or turn the feature off for this route.
clearplane.proxy.request-headers.add-x-request-id Boolean — true — clearplane.proxy.request-headers.add-x-request-id Container label Service resource Public Immediate — Add X-Request-ID when absent in the generated inline policy.
clearplane.proxy.request-headers.forward-x-forwarded-for Boolean — true — clearplane.proxy.request-headers.forward-x-forwarded-for Container label Service resource Public Immediate — Forward X-Forwarded-For in the generated inline policy.
clearplane.proxy.request-headers.forward-x-forwarded-host Boolean — true — clearplane.proxy.request-headers.forward-x-forwarded-host Container label Service resource Public Immediate — Forward X-Forwarded-Host in the generated inline policy.
clearplane.proxy.request-headers.forward-x-forwarded-proto Boolean — true — clearplane.proxy.request-headers.forward-x-forwarded-proto Container label Service resource Public Immediate — Forward X-Forwarded-Proto in the generated inline policy.
clearplane.proxy.request-headers.forward-x-real-ip Boolean — true — clearplane.proxy.request-headers.forward-x-real-ip Container label Service resource Public Immediate — Forward X-Real-IP in the generated inline policy.
clearplane.proxy.request-headers.policy String One policy system name — — clearplane.proxy.request-headers.policy Container label Service resource Public Immediate — One existing Route-scoped request headers policy using lowercase letters, digits, and single dashes between words with a 200-character maximum. Used only when clearplane.proxy.request-headers is On. Without it, the route's labels create an inline policy; the reference cannot be mixed with inline request-header fields.
clearplane.proxy.response-headers PolicyState Inherit, On, Off Inherit — clearplane.proxy.response-headers Container label Service resource Public Immediate — Inherit the Global response headers policy, turn on this proxy route's own response headers policy, or turn the feature off for this route.
clearplane.proxy.response-headers.content-security-policy String Value without CR/LF, up to 4000 characters; or empty (empty) — clearplane.proxy.response-headers.content-security-policy Container label Service resource Public Immediate — Content-Security-Policy value for the generated inline policy. Empty keeps the upstream service's own header.
clearplane.proxy.response-headers.permissions-policy String Value without CR/LF, up to 2000 characters; or empty camera=(), microphone=(), geolocation=() — clearplane.proxy.response-headers.permissions-policy Container label Service resource Public Immediate — Permissions-Policy value for the generated inline policy. Empty leaves the header unset.
clearplane.proxy.response-headers.policy String One policy system name — — clearplane.proxy.response-headers.policy Container label Service resource Public Immediate — One existing Route-scoped response headers policy using lowercase letters, digits, and single dashes between words with a 200-character maximum. Used only when clearplane.proxy.response-headers is On. Without it, the route's labels create an inline policy; the reference cannot be mixed with inline response-header fields.
clearplane.proxy.response-headers.referrer-policy String no-referrer, no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url, or empty strict-origin-when-cross-origin — clearplane.proxy.response-headers.referrer-policy Container label Service resource Public Immediate — Referrer-Policy value for the generated inline policy, up to 200 characters. Empty leaves the header unset.
clearplane.proxy.response-headers.strict-transport-security String One numeric max-age plus optional unique includeSubDomains and preload directives, up to 4000 characters; or empty max-age=31536000; includeSubDomains — clearplane.proxy.response-headers.strict-transport-security Container label Service resource Public Immediate — Strict-Transport-Security value for the generated inline policy. Directives are semicolon-delimited, CR/LF is forbidden, and empty leaves the header unset.
clearplane.proxy.response-headers.strip-server-header Boolean — true — clearplane.proxy.response-headers.strip-server-header Container label Service resource Public Immediate — Remove the Server response header in the generated inline policy.
clearplane.proxy.response-headers.strip-x-asp-net-version-header Boolean — true — clearplane.proxy.response-headers.strip-x-asp-net-version-header Container label Service resource Public Immediate — Remove the X-AspNet-Version response header in the generated inline policy.
clearplane.proxy.response-headers.strip-x-powered-by-header Boolean — true — clearplane.proxy.response-headers.strip-x-powered-by-header Container label Service resource Public Immediate — Remove the X-Powered-By response header in the generated inline policy.
clearplane.proxy.response-headers.x-content-type-options-no-sniff Boolean — true — clearplane.proxy.response-headers.x-content-type-options-no-sniff Container label Service resource Public Immediate — Set X-Content-Type-Options to nosniff in the generated inline policy.
clearplane.proxy.response-headers.x-frame-options String DENY, SAMEORIGIN, or empty DENY — clearplane.proxy.response-headers.x-frame-options Container label Service resource Public Immediate — X-Frame-Options value for the generated inline policy. Empty leaves the header unset.
clearplane.proxy.strip-prefix String Path prefix beginning with /, up to 500 characters — — clearplane.proxy.strip-prefix Container label Service resource Public Immediate — Optional path prefix removed before forwarding to the upstream service. Empty or whitespace disables stripping.
clearplane.proxy.upstream.activity-timeout-seconds Integer (optional) 1-86400 60 — clearplane.proxy.upstream.activity-timeout-seconds Container label Service resource Public Immediate — Maximum upstream inactivity in seconds while sending the request or reading the response. Resets whenever data moves.
clearplane.proxy.upstream.protocol UpstreamProtocol Auto, Http2 Auto — clearplane.proxy.upstream.protocol Container label Service resource Public Immediate — Protocol Edge uses to reach the upstream. Http2 forces HTTP/2 exactly, including prior-knowledge h2c to plain-HTTP upstreams, as gRPC requires; Auto negotiates.
clearplane.proxy.waf PolicyState Inherit, On, Off Inherit — clearplane.proxy.waf Container label Service resource Public Immediate — Inherit the Global WAF policy, turn on this proxy route's own WAF policy, or turn the feature off for this route.
clearplane.proxy.waf.allowed-methods Whitespace list of string values Up to 32 unique uppercase HTTP method names, each up to 32 characters (empty) — clearplane.proxy.waf.allowed-methods Container label Service resource Public Immediate — Methods the route's inline policy allows in addition to the WAF rulesets' defaults (GET, HEAD, POST, OPTIONS, PUT, PATCH, DELETE), such as PROPFIND MKCOL. Values start with A-Z and then use A-Z, digits, underscore or dash.
clearplane.proxy.waf.allowed-request-content-types Whitespace list of string values Up to 32 unique lowercase media types without parameters, each up to 255 characters (empty) — clearplane.proxy.waf.allowed-request-content-types Container label Service resource Public Immediate — Request body media types the route's inline policy allows in addition to the WAF rulesets' defaults, such as text/plain. Bodies are still inspected as raw text.
clearplane.proxy.waf.challenge.clearance-minutes Integer 5 to 1440 30 — clearplane.proxy.waf.challenge.clearance-minutes Container label Service resource Public Immediate — How long a passed challenge lasts.
clearplane.proxy.waf.challenge.difficulty Integer 12 to 24 18 — clearplane.proxy.waf.challenge.difficulty Container label Service resource Public Immediate — Proof-of-work difficulty in leading zero bits.
clearplane.proxy.waf.challenge.mode WafChallengeMode Off, ProofOfWork Off — clearplane.proxy.waf.challenge.mode Container label Service resource Public Immediate — Serve proof-of-work bot challenges on the route. Requires Prevention; routes without redirect.http-to-https never challenge. Eligible browser requests can be challenged by WAF rules, Combined scores or Challenge rate limits.
clearplane.proxy.waf.challenge.threshold Integer 1 to threshold - 1 3 — clearplane.proxy.waf.challenge.threshold Container label Service resource Public Immediate — Combined anomaly score at which an eligible browser is challenged. Must stay below threshold.
clearplane.proxy.waf.detection-paranoia-level Integer (optional) Paranoia level through 4, or empty — — clearplane.proxy.waf.detection-paranoia-level Container label Service resource Public Immediate — Rules above the blocking paranoia level, up to and including this level, score in Detection only. It may equal the blocking level; empty disables the additional detection-only band.
clearplane.proxy.waf.exclusion-rulesets Whitespace list of string values Up to 256 unique whitespace-delimited ruleset IDs, each up to 200 characters (empty) — clearplane.proxy.waf.exclusion-rulesets Container label Service resource Public Immediate — Exclusion rulesets the route's inline policy opts into. IDs start with a lowercase letter or digit and then contain lowercase letters, digits, dots or dashes. Exclusion rulesets never apply without opting in.
clearplane.proxy.waf.grpc.maximum-message-bytes Integer 1024 to 16777216 4194304 — clearplane.proxy.waf.grpc.maximum-message-bytes Container label Service resource Public Immediate — Largest gRPC message the route's inline policy inspects.
clearplane.proxy.waf.grpc.maximum-messages Integer 1 to 1024 16 — clearplane.proxy.waf.grpc.maximum-messages Container label Service resource Public Immediate — gRPC messages inspected per stream by the route's inline policy.
clearplane.proxy.waf.mode WafMode Detection, Prevention Detection — clearplane.proxy.waf.mode Container label Service resource Public Immediate — WAF mode of the route's inline policy. Detection records findings without blocking; Prevention blocks when the policy reaches its blocking decision.
clearplane.proxy.waf.opt-out-rulesets Whitespace list of string values Up to 256 unique whitespace-delimited ruleset IDs, each up to 200 characters (empty) — clearplane.proxy.waf.opt-out-rulesets Container label Service resource Public Immediate — Active WAF rulesets the route's inline policy does not use. IDs start with a lowercase letter or digit and then contain lowercase letters, digits, dots or dashes.
clearplane.proxy.waf.paranoia-level Integer 1 to 4 1 — clearplane.proxy.waf.paranoia-level Container label Service resource Public Immediate — Paranoia level. Rules at or below this level can block.
clearplane.proxy.waf.policy String One policy system name — — clearplane.proxy.waf.policy Container label Service resource Public Immediate — One existing Route-scoped WAF policy using lowercase letters, digits, and single dashes between words with a 200-character maximum. Used only when clearplane.proxy.waf is On. Without it, the route's labels create an inline policy; the reference cannot be mixed with inline WAF fields.
clearplane.proxy.waf.profile WafProfile Standard, Management Standard — clearplane.proxy.waf.profile Container label Service resource Public Immediate — WAF profile of the route's inline policy.
clearplane.proxy.waf.request-body.inspection-mode WafBodyInspectionMode MetadataOnly, MemoryBuffered, DiskSpool MemoryBuffered — clearplane.proxy.waf.request-body.inspection-mode Container label Service resource Public Immediate — How the route's inline policy reads ordinary request bodies. MetadataOnly skips them; MemoryBuffered buffers up to request-body.maximum-bytes; DiskSpool spools larger bodies to disk. WebSocket and gRPC use their own limits.
clearplane.proxy.waf.request-body.maximum-bytes Long integer (optional) 1 to 104857600 — — clearplane.proxy.waf.request-body.maximum-bytes Container label Service resource Public Immediate — Request body bytes the route's inline policy inspects. Defaults to 1048576, or 262144 with the Management profile. With Block, active ruleset profiles can lower this limit.
clearplane.proxy.waf.request-body.maximum-spooled-bytes Long integer request-body.maximum-bytes to 1073741824 104857600 — clearplane.proxy.waf.request-body.maximum-spooled-bytes Container label Service resource Public Immediate — Raw request body bytes inspected from disk under DiskSpool with InspectPrefix.
clearplane.proxy.waf.request-body.oversize-action WafOversizeBodyAction Block, InspectPrefix Block — clearplane.proxy.waf.request-body.oversize-action Container label Service resource Public Immediate — What happens to a request body above the inspection limit. Block rejects it in Prevention; InspectPrefix inspects its first bytes, and with disk spooling its raw content up to request-body.maximum-spooled-bytes, then forwards it.
clearplane.proxy.waf.request-context.enabled Boolean — true — clearplane.proxy.waf.request-context.enabled Container label Service resource Public Immediate — Record the redacted query string, request headers and matched values of the route's WAF detections. Settings → Firewall defines what is redacted and can turn capture off everywhere.
clearplane.proxy.waf.request-context.header-capture-mode WafHeaderCaptureMode Allowlist, RedactSensitive Allowlist — clearplane.proxy.waf.request-context.header-capture-mode Container label Service resource Public Immediate — Which request header values a detection records. Allowlist records only the values of the headers listed under Settings → Firewall and redacts the rest; RedactSensitive records every value except the sensitive headers listed there.
clearplane.proxy.waf.response.inspection WafResponseInspection Off, Headers, HeadersAndBody Off — clearplane.proxy.waf.response.inspection Container label Service resource Public Immediate — Inspect upstream responses under the route's inline policy. Headers inspects status and headers before any byte is sent; HeadersAndBody also buffers text, JSON, XML and JavaScript bodies up to response.maximum-body-bytes, which adds latency. Streaming responses are never held.
clearplane.proxy.waf.response.maximum-body-bytes Integer 1024 to 16777216 1048576 — clearplane.proxy.waf.response.maximum-body-bytes Container label Service resource Public Immediate — Response body bytes buffered for inspection under HeadersAndBody.
clearplane.proxy.waf.response.threshold Integer 1 to 100 4 — clearplane.proxy.waf.response.threshold Container label Service resource Public Immediate — Response anomaly score at which the route's inline policy blocks in Prevention.
clearplane.proxy.waf.scoring-mode WafScoringMode Combined, PerRuleset Combined — clearplane.proxy.waf.scoring-mode Container label Service resource Public Immediate — Scoring mode of the route's inline policy. Combined adds the Prevention rulesets' scores against one threshold; PerRuleset gives each ruleset its own threshold.
clearplane.proxy.waf.threshold Integer 5 to 100 5 — clearplane.proxy.waf.threshold Container label Service resource Public Immediate — Combined anomaly score at which the route's inline policy blocks in Prevention.
clearplane.proxy.waf.websocket.enabled Boolean — true — clearplane.proxy.waf.websocket.enabled Container label Service resource Public Immediate — Inspect client-to-server WebSocket messages under the route's inline policy. Each message is scored on its own; in Prevention a blocking message closes the connection with status 1008.
clearplane.proxy.waf.websocket.maximum-message-bytes Integer 1024 to 16777216 1048576 — clearplane.proxy.waf.websocket.maximum-message-bytes Container label Service resource Public Immediate — Largest WebSocket message the route's inline policy inspects.
clearplane.proxy.authentication.basic.credentials.<index>.password String Non-empty string up to 400 characters — — clearplane.proxy.authentication.basic.credentials.<index>.password Container label Service resource Secret Immediate — Required plaintext credential password. Clearplane hashes the value before persistence.
clearplane.proxy.authentication.basic.credentials.<index>.username String Non-empty string up to 200 characters — — clearplane.proxy.authentication.basic.credentials.<index>.username Container label Service resource Public Immediate — Required credential username. Usernames must be unique across the indexed entries.
clearplane.proxy.authentication.jwt.required-claims.<index>.claim String Non-empty string up to 200 characters — — clearplane.proxy.authentication.jwt.required-claims.<index>.claim Container label Service resource Public Immediate — JWT claim name required on accepted tokens. A claim/value pair cannot duplicate an earlier entry.
clearplane.proxy.authentication.jwt.required-claims.<index>.value String Non-empty string up to 200 characters — — clearplane.proxy.authentication.jwt.required-claims.<index>.value Container label Service resource Public Immediate — Required value for the indexed JWT claim. A claim/value pair cannot duplicate an earlier entry.
clearplane.proxy.authentication.jwt.signing-keys.<index>.kind JwtKeyKind Symmetric, RsaPublic, EcPublic — — clearplane.proxy.authentication.jwt.signing-keys.<index>.kind Container label Service resource Public Immediate — JWT signing-key kind.
clearplane.proxy.authentication.jwt.signing-keys.<index>.material String Symmetric secret of 32-8192 characters or valid RSA/EC public-key PEM up to 8192 characters — — clearplane.proxy.authentication.jwt.signing-keys.<index>.material Container label Service resource Secret Immediate — Required JWT signing-key material valid for the indexed kind. Symmetric values are encrypted before persistence.
clearplane.proxy.request-headers.entries.<index>.action HeaderTransformAction Set, Append, Remove — — clearplane.proxy.request-headers.entries.<index>.action Container label Service resource Public Immediate — Transformation action for the indexed request header entry.
clearplane.proxy.request-headers.entries.<index>.header-name String Valid non-reserved HTTP header name up to 200 characters — — clearplane.proxy.request-headers.entries.<index>.header-name Container label Service resource Public Immediate — Required request header transformed by the indexed entry.
clearplane.proxy.request-headers.entries.<index>.value String Header value without CR or LF, up to 4000 characters — — clearplane.proxy.request-headers.entries.<index>.value Container label Service resource Public Immediate — Value required by Set or Append and forbidden by Remove.
clearplane.proxy.response-headers.entries.<index>.action HeaderTransformAction Set, Append, Remove — — clearplane.proxy.response-headers.entries.<index>.action Container label Service resource Public Immediate — Transformation action for the indexed response header entry.
clearplane.proxy.response-headers.entries.<index>.condition ResponseHeaderCondition Always, Success, Failure Always — clearplane.proxy.response-headers.entries.<index>.condition Container label Service resource Public Immediate — Response condition for the indexed entry.
clearplane.proxy.response-headers.entries.<index>.header-name String Valid non-reserved HTTP header name up to 200 characters — — clearplane.proxy.response-headers.entries.<index>.header-name Container label Service resource Public Immediate — Required response header transformed by the indexed entry.
clearplane.proxy.response-headers.entries.<index>.value String Header value without CR or LF, up to 4000 characters — — clearplane.proxy.response-headers.entries.<index>.value Container label Service resource Public Immediate — Value required by Set or Append and forbidden by Remove.

Redirect directives

Directive Type Accepted values Built-in default Environment variable Docker label Sources Lifecycle Sensitivity Apply UI location Description
clearplane.redirect.additional-source-hosts Whitespace list of string values Unique whitespace-delimited exact DNS hosts, each up to 253 characters (empty) — clearplane.redirect.additional-source-hosts Container label Service resource Public Immediate — Additional public hosts matched by the generated redirect route. Values are normalized to lowercase and must not repeat the primary source host.
clearplane.redirect.certificate.additional-domains Whitespace list of string values Unique whitespace-delimited exact DNS hosts (max 253 characters) or single-label wildcards whose base is max 253 characters (empty) — clearplane.redirect.certificate.additional-domains Container label Service resource Public Immediate — Extra certificate domains beyond the redirect's source hosts. The final certificate may have at most 99 subject alternative names. Wildcards require a DNS profile or inline credentials.
clearplane.redirect.certificate.dns.api-token String Non-empty single-line value, up to 4096 characters — — clearplane.redirect.certificate.dns.api-token Container label Service resource Secret Immediate — Required whenever any inline DNS field is present. Core encrypts the token before persistence. Inline DNS fields cannot be combined with dns.profile.
clearplane.redirect.certificate.dns.profile String Trimmed non-empty profile name, up to 200 characters — — clearplane.redirect.certificate.dns.profile Container label Service resource Public Immediate — Named DNS profile used for DNS-01 validation. Cannot be combined with the dns.provider, dns.api-token, or dns.propagation-seconds fields. Without either form of DNS configuration, HTTP-01 is used.
clearplane.redirect.certificate.dns.propagation-seconds Integer (optional) 1-3600, or empty for the provider default — — clearplane.redirect.certificate.dns.propagation-seconds Container label Service resource Public Immediate — Optional propagation delay in seconds for this route's inline DNS credentials. Requires dns.api-token.
clearplane.redirect.certificate.dns.provider AcmeDnsProvider Cloudflare Cloudflare — clearplane.redirect.certificate.dns.provider Container label Service resource Public Immediate — Provider for this route's inline DNS credentials. Requires dns.api-token and cannot be combined with the dns.profile field.
clearplane.redirect.certificate.domain String Exact DNS host, up to 253 characters — — clearplane.redirect.certificate.domain Container label Service resource Public Immediate — Primary certificate domain. Defaults to the redirect source host and must not be covered by a requested wildcard.
clearplane.redirect.certificate.enabled Boolean — false — clearplane.redirect.certificate.enabled Container label Service resource Public Immediate — Request and renew an ACME certificate for this redirect.
clearplane.redirect.certificate.wildcard Boolean — false — clearplane.redirect.certificate.wildcard Container label Service resource Public Immediate — Include a one-label wildcard for the primary certificate domain. Enabling it requires a named DNS profile or inline DNS credentials.
clearplane.redirect.enabled Boolean — false — clearplane.redirect.enabled Container label Service resource Public Immediate — Publish a standalone external redirect from this container.
clearplane.redirect.group.collapsed-by-default Boolean — false — clearplane.redirect.group.collapsed-by-default Container label Service resource Public Immediate — Collapse this resource group by default in redirect overviews. Ignored when group.name is absent.
clearplane.redirect.group.name String Trimmed non-blank name, up to 200 characters — — clearplane.redirect.group.name Container label Service resource Public Immediate — Optional resource group assigned to the generated redirect route. The order and collapsed fields are ignored with a warning when this name label is absent.
clearplane.redirect.group.order Integer — 0 — clearplane.redirect.group.order Container label Service resource Public Immediate — Resource group display order. Any signed integer is accepted and lower values appear first. Ignored when group.name is absent.
clearplane.redirect.methods Whitespace list of string values Unique whitespace-delimited HTTP method tokens (empty) — clearplane.redirect.methods Container label Service resource Public Immediate — Optional HTTP methods matched by the generated redirect route. Values are normalized to uppercase; duplicates after normalization are rejected. Empty matches every method.
clearplane.redirect.name String Non-blank name, up to 200 characters; up to 191 with inline DNS credentials — — clearplane.redirect.name Container label Service resource Public Immediate — Optional name for the generated redirect route. Defaults to the container discovery key. Inline DNS credentials append '-acme-dns' to create a credential-profile name, reducing the maximum base name to 191 characters.
clearplane.redirect.order Integer Signed integer from -2147483638 to 2147483647 0 — clearplane.redirect.order Container label Service resource Public Immediate — Route match order. Lower values are evaluated first; the ten lowest signed integers are reserved for Clearplane management and guard routes.
clearplane.redirect.path String Non-empty complete route path pattern, up to 2000 characters /{**catch-all} — clearplane.redirect.path Container label Service resource Public Immediate — Complete public path pattern matched by the generated redirect route, using the same route-template syntax as the UI and REST API. Use '/api/{**catch-all}' to match /api and every path below it; use '/api' to match only that literal path.
clearplane.redirect.preserve-path-and-query Boolean — false — clearplane.redirect.preserve-path-and-query Container label Service resource Public Immediate — Append the matched request path and query string to the target URI.
clearplane.redirect.source-host String Exact DNS host, up to 253 characters — — clearplane.redirect.source-host Container label Service resource Public Immediate — Required primary public host matched by the generated redirect route. Schemes, ports, paths, wildcards and IP literals are rejected.
clearplane.redirect.status-code RedirectStatusCode 301, 302, 307, or 308 308 — clearplane.redirect.status-code Container label Service resource Public Immediate — HTTP status code returned by the redirect.
clearplane.redirect.target-uri String Absolute HTTP/HTTPS URI, up to 2000 characters — — clearplane.redirect.target-uri Container label Service resource Public Immediate — Required redirect target. User information, fragments, control characters, backslashes, and a target that loops to a source host are rejected; preserving the path also restricts the target path and query shape.

Compose-only and framework settings

These values are outside Clearplane's typed application catalog because Docker Compose or ASP.NET Core consumes them before Clearplane configuration binding. Set Compose inputs in the invoking shell, a sibling .env file, or a file passed with --env-file.

Key Consumer Default Purpose
COMPOSE_PROJECT_NAME Docker Compose clearplane Compose project name. The shipped Compose file passes the effective value to Core so first-party container ownership can be verified.
CLEARPLANE_IMAGE_TAG Docker Compose the release version Image tag for all four services. This does not provide database rollback.
CLEARPLANE_CONTAINER_PROXY_SOCKET_PATH Docker Compose /var/run/docker.sock Container-runtime socket bind source, mount target and Container proxy socket setting.
CLEARPLANE_MANAGEMENT_ALLOW_ADDRESSES Docker Compose empty Whitespace-delimited IP addresses and CIDR ranges allowed to reach the management UI and API routes. Empty blocks every address.
ASPNETCORE_ENVIRONMENT ASP.NET Core host Production Selects the hosting environment. Clearplane permits development-only credentials and relaxed local behavior only in Development.

Clearplane UI and API proxy routes

Core and UI are ordinary discovered services. The shipped Compose file gives both containers one YAML anchor, x-clearplane-management-labels, with ordinary route policy labels: access control that blocks every address except CLEARPLANE_MANAGEMENT_ALLOW_ADDRESSES, a 600-request rate limit, automatic bans, request and response headers with the management Content-Security-Policy, the WAF in Detection with the Management profile, branded 403/502/503/504 error pages, and caching off. Each route owns its inline policies, placed in the System resource group.

The routes ship disabled. A deployment override enables them and supplies the public host:

services:
  clearplane-core:
    labels:
      clearplane.proxy.enabled: "true"
      clearplane.proxy.host: "waf.example.com"
  clearplane-ui:
    labels:
      clearplane.proxy.enabled: "true"
      clearplane.proxy.host: "waf.example.com"

Change any management policy by overriding its label on both containers; these are secure defaults, not immutable behavior.

Examples

Core configuration

Runtime Core settings use validated labels on the Core container or the UI. The MaxMind license key is the only runtime setting that also accepts an environment variable and _FILE twin:

CLEARPLANE_CORE_GEO_IP_LICENSE_KEY=replace-with-your-key

The non-secret MaxMind settings can be labels on the Core container:

services:
  clearplane-core:
    labels:
      clearplane.core.geo-ip.enabled: "true"
      clearplane.core.geo-ip.provider: "MaxMind"

Edge configuration

Edge bootstrap settings are environment-only. Runtime Edge settings use validated labels on the Edge container or the UI:

CLEARPLANE_EDGE_BOOTSTRAP_CORE_URI=https://clearplane-core:8443
services:
  clearplane-edge:
    labels:
      clearplane.edge.connections.maximum-per-ip: "100"

HTTP/1.1, HTTP/2, and HTTP/3 default to enabled on public HTTPS, with HTTP/3 available when QUIC is supported. Select any nonempty combination through System / Settings / Edge, or set it with labels on the Edge container, which lock the UI fields. This example disables HTTP/1.1 on HTTPS while allowing HTTP/2 and HTTP/3. The plain HTTP listener retains HTTP/1.1 for redirects, ACME, and health checks. Changes require an Edge restart; HTTP/3 also requires UDP port 443. HTTP/3 alone requires a QUIC-capable runtime and clients that can discover or directly request it, because the usual HTTP/1.1 or HTTP/2 discovery response is unavailable.

services:
  clearplane-edge:
    labels:
      clearplane.edge.http1.enabled: "false"
      clearplane.edge.http2.enabled: "true"
      clearplane.edge.http3.enabled: "true"

Upstream destination restrictions are opt-in. This label blocks selected address classes globally while preserving Docker's ordinary private-network upstreams:

services:
  clearplane-edge:
    labels:
      clearplane.edge.upstream.restricted-destination-classes: "Loopback LinkLocal CloudMetadata ControlPlaneNetwork"

A proxy policy family takes effect on a route only with its root label set to On. Set policy to the SystemName of an existing policy (lowercase ASCII letters, digits, and single internal dashes); the multi-policy families accept a space-separated list. Without policy, the family creates an inline policy. Set the root label to Off to opt the route out of a Global policy while retaining the family's other labels. Generated names use clearplane.proxy.name (or the discovery key) plus the family suffix:

services:
  app:
    labels:
      clearplane.proxy.response-headers: "On"
      clearplane.proxy.response-headers.policy: "shared-security-headers"
      clearplane.proxy.cors: "Off"
  api:
    labels:
      clearplane.proxy.name: "api"
      clearplane.proxy.response-headers: "On"
      clearplane.proxy.response-headers.content-security-policy: "default-src 'self'"

UI configuration

UI settings are bootstrap settings and are supplied to the UI container as environment variables:

CLEARPLANE_UI_BOOTSTRAP_LOGS_PATH=/app/logs

ContainerProxy configuration

ContainerProxy settings are bootstrap settings and are supplied to the ContainerProxy container as environment variables:

CLEARPLANE_CONTAINER_PROXY_BOOTSTRAP_SOCKET_PATH=/var/run/docker.sock

Standalone external redirect

A container can declare a redirect without publishing an upstream port or joining the proxy network. Set clearplane.redirect.certificate.enabled to request a certificate whose domain defaults to the source host. Additional source hosts become certificate identifiers. A container must not enable both clearplane.proxy.enabled and clearplane.redirect.enabled.

services:
  drive-redirect:
    image: alpine:latest
    command: ["sleep", "infinity"]
    labels:
      clearplane.redirect.enabled: "true"
      clearplane.redirect.name: "sharepoint-drive"
      clearplane.redirect.source-host: "drive.example.com"
      clearplane.redirect.certificate.enabled: "true"
      clearplane.redirect.target-uri: "https://target.example.com"
      clearplane.redirect.status-code: "308"

Inline access control

With clearplane.proxy.access-control: "On" and no policy, the access-control labels create an inline policy. Country codes are normalized to uppercase. default-action: Block blocks everything the allow-lists do not name, so this example permits only the listed address and countries:

services:
  app:
    image: example/app
    labels:
      clearplane.proxy.enabled: "true"
      clearplane.proxy.name: "sample-app"
      clearplane.proxy.host: "app.example.com"
      clearplane.proxy.port: "8080"
      clearplane.proxy.access-control: "On"
      clearplane.proxy.access-control.default-action: "Block"
      clearplane.proxy.access-control.allow-addresses: "203.0.113.10"
      clearplane.proxy.access-control.allow-countries: "NL CW"

Whitespace lists may also use YAML's folded form. Line breaks become spaces, so this is equivalent to one quoted whitespace-delimited value:

services:
  app:
    labels:
      clearplane.proxy.access-control: "On"
      clearplane.proxy.access-control.allow-countries: >-
        NL
        CW
      clearplane.proxy.cache: "On"
      clearplane.proxy.cache.key.headers: >-
        Accept-Language
        X-Tenant

Inline policy labels are reconciled transactionally with the discovered route. The container owns its inline policies: their labelled settings are read-only in the API and UI, and discovery recreates a deleted inline policy on its next pass. Invalid labels leave the last accepted configuration in place. Set the family's policy label instead of inline fields to reference an existing policy.

Inline Basic authentication

Basic authentication uses complete indexed credential entries. Password label values are hashed before persistence and never rendered by APIs, diagnostics, logs, or this reference:

services:
  app:
    labels:
      clearplane.proxy.authentication: "On"
      clearplane.proxy.authentication.type: "Basic"
      clearplane.proxy.authentication.key-location: "Edge"
      clearplane.proxy.authentication.basic.realm: "Restricted"
      clearplane.proxy.authentication.basic.credentials.1.username: "alice"
      clearplane.proxy.authentication.basic.credentials.1.password: "replace-with-a-password"

Inline JWT bearer authentication

JWT signing-key material is always treated as secret metadata. Symmetric material is encrypted before persistence; RSA and EC public keys use PEM block values:

services:
  api:
    labels:
      clearplane.proxy.authentication: "On"
      clearplane.proxy.authentication.type: "JwtBearer"
      clearplane.proxy.authentication.jwt.issuer: "https://identity.example.com"
      clearplane.proxy.authentication.jwt.audiences: "clearplane-api account-api"
      clearplane.proxy.authentication.jwt.signing-keys.1.kind: "Symmetric"
      clearplane.proxy.authentication.jwt.signing-keys.1.material: "a-secret-signing-key-at-least-32-characters"
      clearplane.proxy.authentication.jwt.required-claims.1.claim: "scope"
      clearplane.proxy.authentication.jwt.required-claims.1.value: "clearplane.read"

Warning

Docker labels remain visible through container inspection and Compose source. If credentials cannot be stored in Docker metadata, create the authentication policy through the UI/API and reference it with clearplane.proxy.authentication.policy.

The shipped bootstrap environment values live under each service's environment: block in docker-compose.yml. Deployment overrides belong in docker-compose.override.yml. Runtime settings use validated labels or the UI; only documented secret runtime settings have environment-variable twins. Container-resource labels are label-only.