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).
MCP Deploy + enable_db
Platform SAs above are unaffected. MCP pods with infrastructure.enable_db: true get ExtendDB SigV4 material on AWS profile extenddb via EXTENDDB_AWS_PROFILE — not on the default AWS SDK chain — so you may annotate the same MCP ServiceAccount with IRSA (eks.amazonaws.com/role-arn) for S3, Bedrock, and other AWS APIs. The MCP image must build its DynamoDB client from that profile when EXTENDDB_AWS_PROFILE is set (default chain on ECS/local). GKE Workload Identity on the same SA is fine for GCP APIs. Details: Deploy enable_db auth.