Skip to main content
Version: Next

Thunder Extension

A Helm chart to add Thunder Identity Provider functionality for the Agent Management Platform.

helm install amp-thunder-extension oci://ghcr.io/wso2/helm-charts/wso2-amp-thunder-extension \
--namespace <namespace> --create-namespace \
--values my-values.yaml

thunder​

ParameterDescriptionTypeDefault
thunderThunder subchart configurationobject

thunder.bootstrap​

ParameterDescriptionTypeDefault
thunder.bootstrapJob that seeds the OAuth clients, organization unit, and console branding the platform expects.object
thunder.bootstrap.enabledRun the bootstrap job.booleantrue
thunder.bootstrap.observabilityScopesThe observability data-read scopes, single-sourced: 59-am-mcp-client.yaml subtracts this list from am-mcp's allowance and 73-am-obs-mcp-client.yaml appends it to am-obs-mcp's OIDC scopes (both at template render time). The same scopes also appear in ampScopes below as part of the full catalog for the other interactive clients.arraysee values.yaml
thunder.bootstrap.ampScopesFull list of AMP OAuth2 scopes that interactive clients are allowed to request. Thunder only grants scopes that appear in an app's registered scope list, so all permission scopes must be declared here for role-based access to work. Exception: am-mcp's allowance is this catalog MINUS observabilityScopes (filtered in 59-am-mcp-client.yaml) — those scopes are owned exclusively by the observer MCP client (amObsMcpClient below).arraysee values.yaml
thunder.bootstrap.configMapConfigMap holding the bootstrap payload.object
thunder.bootstrap.configMap.nameName of the ConfigMap holding the bootstrap payload.string"amp-thunder-bootstrap"
thunder.bootstrap.configMap.filesBootstrap files to mount from the ConfigMap. Leave empty to mount the whole ConfigMap, which replaces the chart's defaults.arraysee values.yaml
thunder.bootstrap.observerResourceReaderClientObserver Resource Reader Client configuration (for observability plane to read resources)object
thunder.bootstrap.observerResourceReaderClient.clientIdOAuth 2.0 client ID Allowed values: clusterauthzrolebinding is already created with this clientId by openchoreo, so it should not be changed unless the corresponding ClusterAuthzRoleBinding is also updated.string"openchoreo-observer-resource-reader-client"
thunder.bootstrap.observerResourceReaderClient.clientSecretOAuth 2.0 client secretstring"openchoreo-observer-resource-reader-client-secret"
thunder.bootstrap.observerResourceReaderClient.nameInternal name of the OAuth applicationstring"OpenChoreo Observer Resource Reader"
thunder.bootstrap.observerResourceReaderClient.descriptionDescription of the OAuth applicationstring"OpenChoreo Observer Resource Reader Client for reading resources from control plane"
thunder.bootstrap.observerResourceReaderClient.grantTypesOAuth 2.0 grant types the client may usearraysee values.yaml
thunder.bootstrap.observerResourceReaderClient.tokenEndpointAuthMethodAuthentication method the client uses at the token endpointstring"client_secret_post"
thunder.bootstrap.observerResourceReaderClient.pkceRequiredRequire PKCE on the authorization code flowbooleanfalse
thunder.bootstrap.observerResourceReaderClient.publicClientTreat as a public client, which authenticates without a secretbooleanfalse
thunder.bootstrap.observerResourceReaderClient.accessTokenValidityPeriodAccess token lifetime in secondsinteger3600
thunder.bootstrap.workloadPublisherClientWorkload Publisher Client configuration (for CI workflows to create workloads)object
thunder.bootstrap.workloadPublisherClient.clientIdOAuth 2.0 client ID Allowed values: clusterauthzrolebinding is already created with this clientId by openchoreo, so it should not be changed unless the corresponding ClusterAuthzRoleBinding is also updated.string"openchoreo-workload-publisher-client"
thunder.bootstrap.workloadPublisherClient.clientSecretOAuth 2.0 client secretstring"openchoreo-workload-publisher-secret"
thunder.bootstrap.workloadPublisherClient.nameInternal name of the OAuth applicationstring"Workload Publisher"
thunder.bootstrap.workloadPublisherClient.descriptionDescription of the OAuth applicationstring"OpenChoreo Workload Publisher Client for creating workloads from CI workflows"
thunder.bootstrap.workloadPublisherClient.grantTypesOAuth 2.0 grant types the client may usearraysee values.yaml
thunder.bootstrap.workloadPublisherClient.tokenEndpointAuthMethodAuthentication method the client uses at the token endpointstring"client_secret_post"
thunder.bootstrap.workloadPublisherClient.pkceRequiredRequire PKCE on the authorization code flowbooleanfalse
thunder.bootstrap.workloadPublisherClient.publicClientTreat as a public client, which authenticates without a secretbooleanfalse
thunder.bootstrap.workloadPublisherClient.accessTokenValidityPeriodAccess token lifetime in secondsinteger3600
thunder.bootstrap.ampApiClientAMP API Client configurationobject
thunder.bootstrap.ampApiClient.clientIdOAuth 2.0 client IDstring"amp-api-client"
thunder.bootstrap.ampApiClient.clientSecretOAuth 2.0 client secretstring"amp-api-client-secret"
thunder.bootstrap.ampApiClient.nameInternal name of the OAuth applicationstring"AMP API Client"
thunder.bootstrap.ampApiClient.descriptionDescription of the OAuth applicationstring"Client application for AMP API access"
thunder.bootstrap.ampApiClient.grantTypesOAuth 2.0 grant types the client may usearraysee values.yaml
thunder.bootstrap.ampApiClient.tokenEndpointAuthMethodAuthentication method the client uses at the token endpointstring"client_secret_basic"
thunder.bootstrap.ampApiClient.pkceRequiredRequire PKCE on the authorization code flowbooleanfalse
thunder.bootstrap.ampApiClient.publicClientTreat as a public client, which authenticates without a secretbooleanfalse
thunder.bootstrap.ampApiClient.accessTokenValidityPeriodAccess token lifetime in secondsinteger3600
thunder.bootstrap.ampSystemClientAMP System Client configuration (for agent-manager to provision per-org OAuth apps via Thunder admin API) WARNING: clientSecret below is a LOCAL-DEVELOPMENT-ONLY placeholder. In production, override ampSystemClient.clientSecret via a Kubernetes Secret or external secret manager. Deploying with this default value is insecure.object
thunder.bootstrap.ampSystemClient.clientIdOAuth 2.0 client IDstring"amp-system-client"
thunder.bootstrap.ampSystemClient.clientSecretOAuth 2.0 client secretstring"amp-system-client-secret"
thunder.bootstrap.ampSystemClient.nameInternal name of the OAuth applicationstring"AMP System Client"
thunder.bootstrap.ampSystemClient.descriptionDescription of the OAuth applicationstring"System client for agent-manager to provision per-org OAuth apps"
thunder.bootstrap.ampSystemClient.grantTypesOAuth 2.0 grant types the client may usearraysee values.yaml
thunder.bootstrap.ampSystemClient.tokenEndpointAuthMethodAuthentication method the client uses at the token endpointstring"client_secret_basic"
thunder.bootstrap.ampSystemClient.pkceRequiredRequire PKCE on the authorization code flowbooleanfalse
thunder.bootstrap.ampSystemClient.publicClientTreat as a public client, which authenticates without a secretbooleanfalse
thunder.bootstrap.ampSystemClient.accessTokenValidityPeriodAccess token lifetime in secondsinteger3600
thunder.bootstrap.ampPublisherClientAMP Publisher Client configuration (for evaluation job to publish scores)object
thunder.bootstrap.ampPublisherClient.clientIdOAuth 2.0 client IDstring"amp-publisher-client"
thunder.bootstrap.ampPublisherClient.clientSecretOAuth 2.0 client secret Allowed values: Override in production; must match the value stored in OpenBao at secret/amp-publisher-client-secret (used by ExternalSecret at workflow runtime).string"amp-publisher-client-secret"
thunder.bootstrap.ampPublisherClient.nameInternal name of the OAuth applicationstring"AMP Publisher Client"
thunder.bootstrap.ampPublisherClient.descriptionDescription of the OAuth applicationstring"Client application for evaluation job to publish scores"
thunder.bootstrap.ampPublisherClient.grantTypesOAuth 2.0 grant types the client may usearraysee values.yaml
thunder.bootstrap.ampPublisherClient.tokenEndpointAuthMethodAuthentication method the client uses at the token endpointstring"client_secret_basic"
thunder.bootstrap.ampPublisherClient.pkceRequiredRequire PKCE on the authorization code flowbooleanfalse
thunder.bootstrap.ampPublisherClient.publicClientTreat as a public client, which authenticates without a secretbooleanfalse
thunder.bootstrap.ampPublisherClient.accessTokenValidityPeriodAccess token lifetime in secondsinteger3600
thunder.bootstrap.amObserverClientAM Observer Client configuration (dedicated outbound identity for agent-manager-observer's calls to the OpenChoreo observer backend). Its authority comes from the OpenChoreo ClusterAuthzRoleBinding (amp-observer-reader-binding in wso2-amp-platform-resources-extension), NOT from AMP scopes — it has no scope allowance at all, so its tokens fail agent-manager-service's scope checks by construction. WARNING: clientSecret below is a LOCAL-DEVELOPMENT-ONLY placeholder. In production, override amObserverClient.clientSecret via a Kubernetes Secret or external secret manager. Deploying with this default value is insecure. NOTE: pre-install bootstrap job only — see the upgrade note on mcpResourceServers below / docs/reference/mcp-server.mdx.object
thunder.bootstrap.amObserverClient.clientIdOAuth 2.0 client IDstring"am-observer-client"
thunder.bootstrap.amObserverClient.clientSecretOAuth 2.0 client secretstring"am-observer-client-secret"
thunder.bootstrap.amObserverClient.nameInternal name of the OAuth applicationstring"AM Observer Client"
thunder.bootstrap.amObserverClient.descriptionDescription of the OAuth applicationstring"Dedicated client for agent-manager-observer to read observability data from the OpenChoreo observer"
thunder.bootstrap.amObserverClient.grantTypesOAuth 2.0 grant types the client may usearraysee values.yaml
thunder.bootstrap.amObserverClient.tokenEndpointAuthMethodAuthentication method the client uses at the token endpointstring"client_secret_basic"
thunder.bootstrap.amObserverClient.pkceRequiredRequire PKCE on the authorization code flowbooleanfalse
thunder.bootstrap.amObserverClient.publicClientTreat as a public client, which authenticates without a secretbooleanfalse
thunder.bootstrap.amObserverClient.accessTokenValidityPeriodAccess token lifetime in secondsinteger3600
thunder.bootstrap.amCliClientAMP CLI Client configuration (public PKCE client for interactive login)object
thunder.bootstrap.amCliClient.clientIdOAuth 2.0 client IDstring"amctl"
thunder.bootstrap.amCliClient.nameInternal name of the OAuth applicationstring"AMCTL"
thunder.bootstrap.amCliClient.descriptionDescription of the OAuth applicationstring"AMP CLI application for interactive user login"
thunder.bootstrap.amCliClient.redirectUrisRedirect URIs permitted for the authorization code flowarraysee values.yaml
thunder.bootstrap.amCliClient.grantTypesOAuth 2.0 grant types the client may usearraysee values.yaml
thunder.bootstrap.amCliClient.responseTypesOAuth 2.0 response types the client may requestarraysee values.yaml
thunder.bootstrap.amCliClient.allowedUserTypesUser types permitted to authenticate through this clientarraysee values.yaml
thunder.bootstrap.amCliClient.tokenEndpointAuthMethodAuthentication method the client uses at the token endpointstring"none"
thunder.bootstrap.amCliClient.pkceRequiredRequire PKCE on the authorization code flowbooleantrue
thunder.bootstrap.amCliClient.publicClientTreat as a public client, which authenticates without a secretbooleantrue
thunder.bootstrap.amCliClient.accessTokenValidityPeriodAccess token lifetime in secondsinteger3600
thunder.bootstrap.amCliClient.idTokenValidityPeriodID token lifetime in secondsinteger3600
thunder.bootstrap.amCliClient.userAttributesUser attributes released to the CLI after login.arraysee values.yaml
thunder.bootstrap.amMcpClientAMP MCP Client configuration (public PKCE client for interactive login)object
thunder.bootstrap.amMcpClient.clientIdOAuth 2.0 client IDstring"am-mcp"
thunder.bootstrap.amMcpClient.nameInternal name of the OAuth applicationstring"AMP MCP"
thunder.bootstrap.amMcpClient.descriptionDescription of the OAuth applicationstring"AMP MCP application for interactive user login"
thunder.bootstrap.amMcpClient.redirectUrisRedirect URIs permitted for the authorization code flowarraysee values.yaml
thunder.bootstrap.amMcpClient.grantTypesOAuth 2.0 grant types the client may usearraysee values.yaml
thunder.bootstrap.amMcpClient.responseTypesOAuth 2.0 response types the client may requestarraysee values.yaml
thunder.bootstrap.amMcpClient.allowedUserTypesUser types permitted to authenticate through this clientarraysee values.yaml
thunder.bootstrap.amMcpClient.tokenEndpointAuthMethodAuthentication method the client uses at the token endpointstring"none"
thunder.bootstrap.amMcpClient.pkceRequiredRequire PKCE on the authorization code flowbooleantrue
thunder.bootstrap.amMcpClient.publicClientTreat as a public client, which authenticates without a secretbooleantrue
thunder.bootstrap.amMcpClient.accessTokenValidityPeriodAccess token lifetime in secondsinteger3600
thunder.bootstrap.amMcpClient.idTokenValidityPeriodID token lifetime in secondsinteger3600
thunder.bootstrap.amMcpClient.userAttributesUser attributes released to the MCP server after login.arraysee values.yaml
thunder.bootstrap.amObsMcpClientAMP Observer MCP Client configuration (public PKCE client for the observer MCP server's interactive login). Allowed ONLY the OIDC scopes plus the four observability data-read scopes; the am-service MCP client (amMcpClient above) is allowed the rest of the catalog. NOTE: pre-install bootstrap job only — see the upgrade note on mcpResourceServers below / docs/reference/mcp-server.mdx.object
thunder.bootstrap.amObsMcpClient.clientIdOAuth 2.0 client IDstring"am-obs-mcp"
thunder.bootstrap.amObsMcpClient.nameInternal name of the OAuth applicationstring"AMP Observer MCP"
thunder.bootstrap.amObsMcpClient.descriptionDescription of the OAuth applicationstring"AMP Observer MCP application for interactive user login"
thunder.bootstrap.amObsMcpClient.redirectUrisRedirect URIs permitted for the authorization code flowarraysee values.yaml
thunder.bootstrap.amObsMcpClient.grantTypesOAuth 2.0 grant types the client may usearraysee values.yaml
thunder.bootstrap.amObsMcpClient.responseTypesOAuth 2.0 response types the client may requestarraysee values.yaml
thunder.bootstrap.amObsMcpClient.allowedUserTypesUser types permitted to authenticate through this clientarraysee values.yaml
thunder.bootstrap.amObsMcpClient.tokenEndpointAuthMethodAuthentication method the client uses at the token endpointstring"none"
thunder.bootstrap.amObsMcpClient.pkceRequiredRequire PKCE on the authorization code flowbooleantrue
thunder.bootstrap.amObsMcpClient.publicClientTreat as a public client, which authenticates without a secretbooleantrue
thunder.bootstrap.amObsMcpClient.accessTokenValidityPeriodAccess token lifetime in secondsinteger3600
thunder.bootstrap.amObsMcpClient.idTokenValidityPeriodID token lifetime in secondsinteger3600
thunder.bootstrap.amObsMcpClient.scopesOIDC scopes only — the four observability data-read scopes are appended from observabilityScopes at template render time (73-am-obs-mcp-client.yaml).arraysee values.yaml
thunder.bootstrap.amObsMcpClient.userAttributesUser attributes released to the Observer MCP server after login.arraysee values.yaml
thunder.bootstrap.agentManagerMcpBaseUrlRFC 8707 resource servers for the public MCP origins. The bootstrap renders these as separate resource servers; urn:wso2:amp remains the platform API resource identifier. baseUrlValue selects the deployment- specific origin — one scalar per MCP endpoint, overridden to whatever that install actually serves (docker-compose dev, k3d, a VM, or a real domain); there is no separate "dev" scalar to keep in sync, the same way observerMcpBaseUrl has never needed one.string"http://api.amp.localhost:8080"
thunder.bootstrap.observerMcpBaseUrlBase URL of the Observer MCP server, registered as a resource server.string"http://traces.amp.localhost:11080"
thunder.bootstrap.mcpResourceServersMCP resource servers registered so agent tokens can be scoped to them.arraysee values.yaml
thunder.bootstrap.ampConsoleClientAMP Console Client configurationobject
thunder.bootstrap.ampConsoleClient.clientIdOAuth 2.0 client IDstring"amp-console-client"
thunder.bootstrap.ampConsoleClient.clientSecretOAuth 2.0 client secretstring"amp-console-client-secret"
thunder.bootstrap.ampConsoleClient.nameInternal name of the OAuth applicationstring"AMP Console"
thunder.bootstrap.ampConsoleClient.descriptionDescription of the OAuth applicationstring"AMP Console Application"
thunder.bootstrap.ampConsoleClient.logoUrlLogo shown on the Console's login and consent screens.string"https://wso2.cachefly.net/wso2/sites/all/image_resources/logos/WSO2-Pulse-Orange.webp"
thunder.bootstrap.ampConsoleClient.redirectUrisRedirect URIs permitted for the authorization code flowarraysee values.yaml
thunder.bootstrap.ampConsoleClient.grantTypesOAuth 2.0 grant types the client may usearraysee values.yaml
thunder.bootstrap.ampConsoleClient.responseTypesOAuth 2.0 response types the client may requestarraysee values.yaml
thunder.bootstrap.ampConsoleClient.allowedUserTypesUser types permitted to authenticate through this clientarraysee values.yaml
thunder.bootstrap.ampConsoleClient.tokenEndpointAuthMethodAuthentication method the client uses at the token endpointstring"none"
thunder.bootstrap.ampConsoleClient.pkceRequiredRequire PKCE on the authorization code flowbooleantrue
thunder.bootstrap.ampConsoleClient.publicClientTreat as a public client, which authenticates without a secretbooleantrue
thunder.bootstrap.ampConsoleClient.accessTokenValidityPeriodAccess token lifetime in secondsinteger3600
thunder.bootstrap.ampConsoleClient.idTokenValidityPeriodID token lifetime in secondsinteger3600
thunder.bootstrap.ampConsoleClient.userAttributesUser attributes released to the Console after login.arraysee values.yaml
thunder.bootstrap.ampConsoleThemeAgent Manager Console Theme (applied to amp-console-client sign-in page)object
thunder.bootstrap.ampConsoleTheme.handleUnique handle identifying the Console theme.string"wso2-agent-manager-console"
thunder.bootstrap.ampConsoleTheme.displayNameHuman-readable name for the Console theme.string"WSO2 Agent Manager Console Theme"
thunder.bootstrap.ampConsoleTheme.themeThe theme definition itself.object
thunder.bootstrap.ampConsoleTheme.theme.directionText direction, ltr or rtl.string"ltr"
thunder.bootstrap.ampConsoleTheme.theme.defaultColorSchemeColour scheme used before the user expresses a preference.string"light"
thunder.bootstrap.ampConsoleTheme.theme.shapeShape tokens such as corner radius.object
thunder.bootstrap.ampConsoleTheme.theme.shape.borderRadiusConsole theme typography or shape tokeninteger8
thunder.bootstrap.ampConsoleTheme.theme.typographyTypography tokens for the Console.object
thunder.bootstrap.ampConsoleTheme.theme.typography.fontFamilyConsole theme typography or shape tokenstring"Inter Variable, sans-serif"
thunder.bootstrap.ampConsoleTheme.theme.typography.h1Styling for top-level headings.object
thunder.bootstrap.ampConsoleTheme.theme.typography.h1.fontSizeConsole theme typography or shape tokenstring"1.75rem"
thunder.bootstrap.ampConsoleTheme.theme.typography.h1.fontWeightConsole theme typography or shape tokeninteger600
thunder.bootstrap.ampConsoleTheme.theme.typography.h1.lineHeightLine height for top-level headings.number1.3
thunder.bootstrap.ampConsoleTheme.theme.colorSchemesLight and dark colour palettes.object
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.lightPalette used in light mode.object
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.light.colorsColour tokens for light mode.object
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.light.colors.primaryConsole theme colour tokenobject
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.light.colors.primary.mainConsole theme colour tokenstring"#fa7b3f"
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.light.colors.primary.darkConsole theme colour tokenstring"#e74420"
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.light.colors.primary.contrastTextConsole theme colour tokenstring"#ffffff"
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.light.colors.secondaryConsole theme colour tokenobject
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.light.colors.secondary.mainConsole theme colour tokenstring"#1a1a2e"
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.light.colors.secondary.darkConsole theme colour tokenstring"#0d0d1a"
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.light.colors.secondary.contrastTextConsole theme colour tokenstring"#ffffff"
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.light.colors.backgroundConsole theme colour tokenobject
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.light.colors.background.defaultConsole theme colour tokenstring"#f7f8fb"
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.light.colors.background.paperConsole theme colour tokenstring"#ffffff"
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.light.colors.textConsole theme colour tokenobject
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.light.colors.text.primaryConsole theme colour tokenstring"#000000"
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.light.colors.text.secondaryConsole theme colour tokenstring"#494848"
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.darkPalette used in dark mode.object
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.dark.colorsColour tokens for dark mode.object
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.dark.colors.primaryConsole theme colour tokenobject
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.dark.colors.primary.mainConsole theme colour tokenstring"#fa7b3f"
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.dark.colors.primary.darkConsole theme colour tokenstring"#e74420"
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.dark.colors.primary.contrastTextConsole theme colour tokenstring"#ffffff"
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.dark.colors.secondaryConsole theme colour tokenobject
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.dark.colors.secondary.mainConsole theme colour tokenstring"#ff9966"
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.dark.colors.secondary.darkConsole theme colour tokenstring"#fa7b3f"
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.dark.colors.secondary.contrastTextConsole theme colour tokenstring"#000000"
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.dark.colors.backgroundConsole theme colour tokenobject
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.dark.colors.background.defaultConsole theme colour tokenstring"#121212"
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.dark.colors.background.paperConsole theme colour tokenstring"#1e1e1e"
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.dark.colors.textConsole theme colour tokenobject
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.dark.colors.text.primaryConsole theme colour tokenstring"#ffffff"
thunder.bootstrap.ampConsoleTheme.theme.colorSchemes.dark.colors.text.secondaryConsole theme colour tokenstring"#cccccc"
thunder.bootstrap.ampConsoleLayoutAgent Manager Console Layout (split-screen sign-in page for amp-console-client).object
thunder.bootstrap.ampConsoleLayout.idConsole layout settingstring"0e0dc039-bae9-4563-82b9-ee4e76f9a58c"
thunder.bootstrap.ampConsoleLayout.handleConsole layout settingstring"wso2-agent-manager-console"
thunder.bootstrap.ampConsoleLayout.displayNameConsole layout settingstring"WSO2 Agent Manager Console Layout"
thunder.bootstrap.ampConsoleLayout.layoutConsole layout settingobject
thunder.bootstrap.ampConsoleLayout.layout.headConsole layout settingobject
thunder.bootstrap.ampConsoleLayout.layout.head.stylesheetsConsole layout settingarraysee values.yaml
thunder.bootstrap.ampConsoleLayout.layout.screensConsole layout settingobject
thunder.bootstrap.ampConsoleLayout.layout.screens.signinConsole layout settingobject
thunder.bootstrap.ampConsoleLayout.layout.screens.signin.titleConsole layout settingstring"Sign In"
thunder.bootstrap.ampConsoleLayout.layout.screens.signin.layoutConsole layout settingstring"split"
thunder.bootstrap.ampConsoleLayout.layout.screens.signupConsole layout settingobject
thunder.bootstrap.ampConsoleLayout.layout.screens.signup.titleConsole layout settingstring"Create your WSO2 Cloud account"
thunder.bootstrap.ampConsoleLayout.layout.screens.signup.layoutConsole layout settingstring"split"
thunder.bootstrap.ampConsoleLayout.layout.screens.commonConsole layout settingobject
thunder.bootstrap.ampConsoleLayout.layout.screens.common.layoutConsole layout settingstring"split"
thunder.bootstrap.organizationUnitDefault Organization unit configurationobject
thunder.bootstrap.organizationUnit.nameDisplay name of the default organization unit.string"Default"
thunder.bootstrap.organizationUnit.handleHandle of the default organization unit. Appears in token claims.string"default"
thunder.bootstrap.organizationUnit.descriptionDescription of the default organization unit.string"Default organizational unit"
thunder.bootstrap.userSchemaUser schema configurationobject
thunder.bootstrap.userSchema.nameName of the user attribute schema.string"engineer"
thunder.bootstrap.userSchema.allowSelfRegistrationLet users register themselves rather than being invited.booleantrue
thunder.bootstrap.defaultUsersDefault users configurationarraysee values.yaml

thunder.configuration​

ParameterDescriptionTypeDefault
thunder.configurationThunder's own runtime configuration, rendered into its config file.object
thunder.configuration.serverServer listener settings.object
thunder.configuration.server.portPort the server process listens oninteger8090
thunder.configuration.server.httpOnlyServe plain HTTP only, leaving TLS termination to the gateway.booleantrue
thunder.configuration.server.publicUrlURL where users reach Thunder in their browser. Thunder uses it to build login and error redirect links.string"http://thunder.amp.localhost:8080"
thunder.configuration.gateClientWhere Thunder serves its login and consent screens. Hostname, port, and scheme default to server.publicUrl, and are only needed when Gate is hosted separately.object
thunder.configuration.gateClient.hostnameHostname serving those screens.string"thunder.amp.localhost"
thunder.configuration.gateClient.portPort serving those screens.integer8080
thunder.configuration.gateClient.schemeURL scheme used to build the redirect.string"http"
thunder.configuration.gateClient.pathBase path the screens are served under.string"/gate"
thunder.configuration.cryptoCryptographic material and password hashing settings.object
thunder.configuration.crypto.encryptionKey used to encrypt data Thunder stores at rest.object
thunder.configuration.crypto.encryption.keyLocation of the encryption key, as a file:// reference. Replace the default with a 32-byte (64-character) hex string before any production deployment.string"file://config/certs/crypto.key"
thunder.configuration.crypto.passwordHashingHow user passwords are hashed before storage.object
thunder.configuration.crypto.passwordHashing.algorithmHashing algorithm used for new passwords.string"PBKDF2"
thunder.configuration.crypto.passwordHashing.argon2idParameters used when the algorithm is Argon2id.object
thunder.configuration.crypto.passwordHashing.argon2id.iterationsPasses over memory. Higher is slower to compute and to attack.integer2
thunder.configuration.crypto.passwordHashing.argon2id.memoryMemory used per hash, in kibibytes.integer19456
thunder.configuration.crypto.passwordHashing.argon2id.parallelismParallel lanes used per hash.integer1
thunder.configuration.crypto.passwordHashing.argon2id.key_sizeLength of the derived hash, in bytes.integer32
thunder.configuration.crypto.passwordHashing.argon2id.salt_sizeLength of the random salt, in bytes.integer16
thunder.configuration.crypto.passwordHashing.pbkdf2Parameters used when the algorithm is PBKDF2.object
thunder.configuration.crypto.passwordHashing.pbkdf2.iterationsIteration count. Raise it as hardware gets faster.integer600000
thunder.configuration.crypto.passwordHashing.pbkdf2.key_sizeLength of the derived hash, in bytes.integer32
thunder.configuration.crypto.passwordHashing.pbkdf2.salt_sizeLength of the random salt, in bytes.integer16
thunder.configuration.crypto.passwordHashing.sha256Parameters used when the algorithm is SHA-256. Weaker than the alternatives above.object
thunder.configuration.crypto.passwordHashing.sha256.salt_sizeLength of the random salt, in bytes.integer16
thunder.configuration.crypto.keysSigning key pairs Thunder publishes and signs tokens with, each a certificate and key file. The setup job generates them, including the ECDSA key used by the OpenID4VP and OpenID4VCI engines.arraysee values.yaml
thunder.configuration.databaseDatabases Thunder uses. Each may point at its own backend.object
thunder.configuration.database.configStore holding Thunder's own configuration.object
thunder.configuration.database.config.typeDatabase engine for this store, postgres or sqlite. Use sqlite only when running a single pod.string"sqlite"
thunder.configuration.database.config.sqliteSQLite settings used when the type is sqlite.object
thunder.configuration.database.config.sqlite.pathFilesystem path to the SQLite database filestring"database/configdb.db"
thunder.configuration.database.config.sqlite.optionsExtra SQLite connection options appended to the DSNstring"_journal_mode=WAL&_busy_timeout=5000&_pragma=foreign_keys(1)"
thunder.configuration.database.config.sqlite.max_open_connsMaximum open connections in the poolinteger500
thunder.configuration.database.config.sqlite.max_idle_connsMaximum idle connections kept in the poolinteger100
thunder.configuration.database.config.sqlite.conn_max_lifetimeMaximum lifetime of a pooled connection, in secondsinteger3600
thunder.configuration.database.runtime_transientStore for short-lived runtime state. May be backed by Redis as well as a SQL engine.object
thunder.configuration.database.runtime_transient.typeDatabase engine for this store, postgres or sqlite. Use sqlite only when running a single pod.string"sqlite"
thunder.configuration.database.runtime_transient.sqliteSQLite settings used when the type is sqlite.object
thunder.configuration.database.runtime_transient.sqlite.pathFilesystem path to the SQLite database filestring"database/runtime_transient.db"
thunder.configuration.database.runtime_transient.sqlite.optionsExtra SQLite connection options appended to the DSNstring"_journal_mode=WAL&_busy_timeout=5000&_pragma=foreign_keys(1)"
thunder.configuration.database.runtime_transient.sqlite.max_open_connsMaximum open connections in the poolinteger500
thunder.configuration.database.runtime_transient.sqlite.max_idle_connsMaximum idle connections kept in the poolinteger100
thunder.configuration.database.runtime_transient.sqlite.conn_max_lifetimeMaximum lifetime of a pooled connection, in secondsinteger3600
thunder.configuration.database.entityStore holding users, groups, and applications.object
thunder.configuration.database.entity.typeDatabase engine for this store, postgres or sqlite. Use sqlite only when running a single pod.string"sqlite"
thunder.configuration.database.entity.sqliteSQLite settings used when the type is sqlite.object
thunder.configuration.database.entity.sqlite.pathFilesystem path to the SQLite database filestring"database/entitydb.db"
thunder.configuration.database.entity.sqlite.optionsExtra SQLite connection options appended to the DSNstring"_journal_mode=WAL&_busy_timeout=5000&_pragma=foreign_keys(1)"
thunder.configuration.database.entity.sqlite.max_open_connsMaximum open connections in the poolinteger500
thunder.configuration.database.entity.sqlite.max_idle_connsMaximum idle connections kept in the poolinteger100
thunder.configuration.database.entity.sqlite.conn_max_lifetimeMaximum lifetime of a pooled connection, in secondsinteger3600
thunder.configuration.database.runtime_persistentStore for runtime state that must survive a restart: SSO sessions, revoked tokens, and consent records.object
thunder.configuration.database.runtime_persistent.typeDatabase engine for this store, postgres or sqlite. Use sqlite only when running a single pod.string"sqlite"
thunder.configuration.database.runtime_persistent.sqliteSQLite settings used when the type is sqlite.object
thunder.configuration.database.runtime_persistent.sqlite.pathFilesystem path to the SQLite database filestring"database/runtime_persistent.db"
thunder.configuration.database.runtime_persistent.sqlite.optionsExtra SQLite connection options appended to the DSNstring"_journal_mode=WAL&_busy_timeout=5000&_pragma=foreign_keys(1)"
thunder.configuration.database.runtime_persistent.sqlite.max_open_connsMaximum open connections in the poolinteger500
thunder.configuration.database.runtime_persistent.sqlite.max_idle_connsMaximum idle connections kept in the poolinteger100
thunder.configuration.database.runtime_persistent.sqlite.conn_max_lifetimeMaximum lifetime of a pooled connection, in secondsinteger3600
thunder.configuration.cacheIn-process cache in front of the databases.object
thunder.configuration.cache.disabledTurn the cache off entirely.booleanfalse
thunder.configuration.cache.typeCache backend.string"inmemory"
thunder.configuration.cache.sizeMaximum entries held before eviction.integer1000
thunder.configuration.cache.ttlSeconds an entry stays valid.integer3600
thunder.configuration.cache.evictionPolicyPolicy deciding which entry is dropped when the cache is full.string"LRU"
thunder.configuration.cache.cleanupIntervalSeconds between sweeps for expired entries.integer300
thunder.configuration.jwtDefaults for the tokens Thunder issues.object
thunder.configuration.jwt.issuerIssuer claim stamped on issued tokens.string"http://thunder.amp.localhost:8080"
thunder.configuration.jwt.validityPeriodAccess token lifetime in seconds.integer3600
thunder.configuration.jwt.audienceDefault audience claim on issued tokens.string"application"
thunder.configuration.jwt.preferredKeyIdKey used to sign new tokens. Must match an id defined under crypto.keys; other configured keys stay valid for verification.string"default-key"
thunder.configuration.oauthOAuth 2.0 protocol settings.object
thunder.configuration.oauth.refreshTokenRefresh token behaviour.object
thunder.configuration.oauth.refreshToken.renewOnGrantIssue a new refresh token each time one is redeemed.booleanfalse
thunder.configuration.oauth.refreshToken.validityPeriodRefresh token lifetime in seconds.integer86400
thunder.configuration.oauth.authorizationCodeAuthorization code behaviour.object
thunder.configuration.oauth.authorizationCode.validityPeriodSeconds an authorization code may be redeemed within.integer600
thunder.configuration.oauth.dcrDynamic Client Registration settings.object
thunder.configuration.oauth.dcr.insecureAllow client registration without authentication. Leave off outside local development.booleanfalse
thunder.configuration.consentThe consent service that records user approval of scope grants.object
thunder.configuration.consent.enabledRun the consent service.booleantrue
thunder.configuration.consent.baseUrlBase URL Thunder calls the consent service on.string"http://localhost:9090/api/v1"
thunder.configuration.consent.timeoutSeconds Thunder waits for a consent service response.integer5
thunder.configuration.consent.maxRetriesRetries before a consent call is treated as failed.integer3
thunder.configuration.consent.serverListener for the consent service.object
thunder.configuration.consent.server.portPort the server process listens oninteger9090
thunder.configuration.consent.server.hostnameHostname the consent service binds to.string"localhost"
thunder.configuration.consent.databaseDatabase backing the consent service.object
thunder.configuration.consent.database.typeDatabase engine for consent records.string"sqlite"
thunder.configuration.consent.database.sqlitePathPath to the SQLite consent database.string"repository/database/consentdb.db"
thunder.configuration.consent.database.sqliteOptionsExtra SQLite options appended to the connection string.string"_pragma=journal_mode(WAL)&_pragma=cache_size(-16000)"
thunder.configuration.corsCross-origin policy for Thunder's own endpoints.object
thunder.configuration.cors.allowedOriginsBrowser origins allowed to call Thunder. Narrow this in production.arraysee values.yaml

thunder.deployment​

ParameterDescriptionTypeDefault
thunder.deploymentDeployment settings for the Thunder pod.object
thunder.deployment.replicaCountNumber of pod replicas to runinteger1
thunder.deployment.strategyRollout strategy used when the Deployment is updated.object
thunder.deployment.strategy.rollingUpdateRolling update bounds for the Thunder Deployment.object
thunder.deployment.strategy.rollingUpdate.maxSurgePods that may be created above the desired count during a rollout.integer1
thunder.deployment.strategy.rollingUpdate.maxUnavailablePods that may be unavailable during a rollout.integer0
thunder.deployment.securityContextContainer-level security settings for Thunder.object
thunder.deployment.securityContext.readOnlyRootFilesystemRead-only root filesystem. Must be false for SQLitebooleanfalse
thunder.deployment.securityContext.enableRunAsUserPin the container to a fixed UID rather than the image default.booleantrue
thunder.deployment.securityContext.fsGroupSupplemental group applied to mounted volumes.integer10001
thunder.deployment.securityContext.runAsUserUID the container runs asinteger10001
thunder.deployment.securityContext.seccompProfileSeccomp profile restricting the syscalls Thunder may make.object
thunder.deployment.securityContext.seccompProfile.enabledApply a seccomp profile.booleantrue
thunder.deployment.securityContext.seccompProfile.typeSeccomp profile to apply.string"RuntimeDefault"
thunder.deployment.terminationGracePeriodSecondsSeconds Thunder is given to shut down before it is killed.integer10
thunder.deployment.imageContainer image for Thunder.object
thunder.deployment.image.registryRegistry the Thunder image is pulled from.string"ghcr.io/thunder-id"
thunder.deployment.image.repositoryContainer image repositorystring"thunderid"
thunder.deployment.image.tagContainer image tag. Define either tag or digest, not both.string"1.0.0"
thunder.deployment.image.pullPolicyImage pull policy (Always, IfNotPresent, or Never)string"Always"
thunder.deployment.containerContainer-level settings such as ports.object
thunder.deployment.container.portPort Thunder listens on inside the container.integer8090
thunder.deployment.resourcesCompute resources for the Thunder container.object
thunder.deployment.resources.limitsMaximum resources the Thunder container may use.object
thunder.deployment.resources.limits.cpuMaximum CPU the container may usestring"500m"
thunder.deployment.resources.limits.memoryMaximum memory the container may use before it is OOM-killedstring"512Mi"
thunder.deployment.resources.requestsResources reserved for Thunder at scheduling time.object
thunder.deployment.resources.requests.cpuCPU the container requests at scheduling timestring"100m"
thunder.deployment.resources.requests.memoryMemory the container requests at scheduling timestring"128Mi"

thunder.hpa​

ParameterDescriptionTypeDefault
thunder.hpaHorizontal Pod Autoscaler settings for Thunder.object
thunder.hpa.enabledEnable the Horizontal Pod Autoscaler.booleanfalse

thunder.ingress​

ParameterDescriptionTypeDefault
thunder.ingressStandard Kubernetes Ingress for Thunder. Off by default in favour of the gateway route.object
thunder.ingress.enabledCreate an Ingress resource for this componentbooleanfalse

thunder.ocIngress​

ParameterDescriptionTypeDefault
thunder.ocIngressGateway route exposing Thunder outside the cluster.object
thunder.ocIngress.hostnameHostname routed to this component through the gatewaystring"thunder.amp.localhost"
thunder.ocIngress.httpsDedicated HTTPS listener, needed when environment instances must trust this issuer over TLS.object
thunder.ocIngress.https.enabledEnable a dedicated HTTPS Gateway (port 8443) and cert-manager TLS certificate for thunder.amp.localhost so env-Thunder instances can wire it as a trusted issuer. Requires cert-manager to be installed in the cluster.booleantrue
thunder.ocIngress.https.portPort the dedicated HTTPS listener serves on.integer8443
thunder.ocIngress.https.createIssuerSet to true to create the local ClusterIssuer and Root CA. Only one instance in the cluster (typically the platform-wide instance) should create these.booleantrue

thunder.pdb​

ParameterDescriptionTypeDefault
thunder.pdbPodDisruptionBudget protecting Thunder during voluntary disruption.object
thunder.pdb.minAvailableMinimum pods that must stay available during voluntary disruptionstring"50%"

thunder.persistence​

ParameterDescriptionTypeDefault
thunder.persistencePersistent storage for Thunder's databases and keys.object
thunder.persistence.enabledPersist data on a PersistentVolumeClaim instead of the pod filesystembooleantrue
thunder.persistence.storageClassStorageClass for the PersistentVolumeClaim. Uses the cluster default when emptystring""
thunder.persistence.accessModeAccess mode requested for the PersistentVolumeClaim.string"ReadWriteOnce"
thunder.persistence.sizeSize of the PersistentVolumeClaimstring"1Gi"
thunder.persistence.annotationsAnnotations added to the PersistentVolumeClaim.object{}

thunder.service​

ParameterDescriptionTypeDefault
thunder.serviceKubernetes Service fronting Thunder.object
thunder.service.portPort the Service listens oninteger8090

thunder.serviceAccount​

ParameterDescriptionTypeDefault
thunder.serviceAccountServiceAccount used by the Thunder pod.object
thunder.serviceAccount.nameName of the ServiceAccount to use. Generated when emptystring"thunder-service-account"
thunder.serviceAccount.createCreate a ServiceAccount for this componentbooleantrue

thunder.setup​

ParameterDescriptionTypeDefault
thunder.setupOne-off job that initialises Thunder after install.object
thunder.setup.enabledRun the setup job. It runs on first install only, via a Helm hook.booleantrue
thunder.setup.backoffLimitRetries before the setup job is marked failed.integer3
thunder.setup.ttlSecondsAfterFinishedSeconds a failed setup job is kept before cleanup, where 0 keeps it indefinitely. Applies only when preserveJob is false.integer86400
thunder.setup.preserveJobKeep the setup job after it completes. When false, a successful job is deleted immediately and a failed one after ttlSecondsAfterFinished.booleantrue
thunder.setup.debugEmit verbose setup logs.booleanfalse
thunder.setup.adminThunder's own native admin user (created by its built-in bootstrap, backend/cmd/server/bootstrap/01-default-resources.yaml, type "Person", fixed id 01900000-0000-7000-8000-000000000030) is deliberately left at its default username "admin" here — 67-amp-default-users.yaml below re-targets our own admin bootstrap entry at this SAME fixed id instead of creating a separate user, merging the two into a single account. That account already sits in Thunder's built-in "Administrators" group (system permission), so it works for both the AMP console and ThunderID's own native console without needing a second AMP-side role for it. Leave password empty for production: this chart's own admin-credentials.yaml then generates a random 10-character value itself (reused across reinstalls the same way Thunder's own admin-secret.yaml already does), so there is no shipped default for anyone to leave unchanged. Set it explicitly (the local dev, quick-start, and VM installers all set it to a fixed value) only when a memorable password matters more than a generated one — e.g. a machine only the operator can reach. Either way, retrieve the real value in effect any time with: kubectl get secret amp-admin-credentials -n <thunder-namespace> -o jsonpath='{.data.password}' | base64 -dobject
thunder.setup.admin.usernameUsername of the administrator account created at setup.string"admin"
thunder.setup.admin.passwordAdministrator password set inline. Leave empty to generate a random one. Ignored when passwordRef is set.string""
thunder.setup.admin.passwordRefSecret holding the administrator password.object
thunder.setup.admin.passwordRef.nameName of that Secret.string"amp-admin-credentials"
thunder.setup.admin.passwordRef.keyKey within that Secret.string"password"
thunder.setup.resourcesCompute resources for the setup job.object
thunder.setup.resources.limitsMaximum resources the setup job may use.object
thunder.setup.resources.limits.cpuMaximum CPU the container may usestring"500m"
thunder.setup.resources.limits.memoryMaximum memory the container may use before it is OOM-killedstring"256Mi"
thunder.setup.resources.requestsResources reserved for the setup job at scheduling time.object
thunder.setup.resources.requests.cpuCPU the container requests at scheduling timestring"250m"
thunder.setup.resources.requests.memoryMemory the container requests at scheduling timestring"128Mi"