runlayer-<customerId> (override with spec.deploy.platformNamespace).
ServiceAccount naming
Pattern:{RunlayerInstance.metadata.name}-{component} in the platform namespace.
Example: CR
metadata.name: acme-prod → SA acme-prod-backend in runlayer-acme.
OIDC / WI trust subject (EKS):
Annotate via RunlayerInstance
CR field JSON name is serviceAccount (singular):
EKS (IRSA)
sub = system:serviceaccount:<ns>:<sa> and audience sts.amazonaws.com.
GKE (Workload Identity)
roles/iam.workloadIdentityUser (or equivalent) to the KSA principal.
Permission matrix
Grant only what you enable. Buckets/streams are customer-owned — scope ARNs tightly.Base platform (typical)
AI Watch binary cache
Audit publish (when stream-backed)
Audit consumer
SIEM export
Session materializer
Agents (AgentCore on AWS)
IRSA trust sample (EKS)
Verify
EKS
GKE
AssumeRoleWithWebIdentity: AccessDenied (AWS) or permission denied on Pub/Sub/GCS (GCP).