Kubernetes-Native Secure Execution Platform for Autonomous AI Agents

grab · Tech · 2026 · source Agentic: yes · promotional bias: low · source-backed · extracted with prompt 0.5.6 (schema v2)

Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.

Problem

Domain: Secure execution platform for autonomous AI agents

Grab needed a way for autonomous AI agents to act in real production environments without turning credentials, internal services, network access, or long-running workloads into uncontrolled risk. Prompt-level guardrails were insufficient because agents call tools, tools call services, and services use credentials.

Constraints:

Architecture

Grab built Palana, a Kubernetes-native secure execution platform for autonomous agents. Each agent runs in a per-user, per-agent namespace with its own service account, RBAC, EFS-backed /data volume, ingress, network policies, and lifecycle state. Admission webhooks inject proxy configuration and enforce pod restrictions. LLM calls go through a LiteLLM wrapper that derives identity from Kubernetes context and retrieves upstream credentials from Vault. General egress is forced through a proxy namespace where OPA evaluates host, method, and agent identity. Vault separates agent-readable secrets from proxy-only secrets, so agents can cause approved credentialed requests without reading raw credentials. Observability logs proxy decisions, Git activity, LLM requests, lifecycle events, and idle-shutdown signals so operators and ops agents can audit or intervene.

Diagram confidence: explicit (topology described by the source).

flowchart LR
  pcli_and_portal["pcli and portal"] --> UserAgent_custom_resource["UserAgent custom resource"]
  UserAgent_custom_resource --> Palana_operator["Palana operator"]
  Palana_operator --> Agent_namespace["Agent namespace"]
  Palana_operator --> Admission_webhooks["Admission webhooks"]
  Admission_webhooks --> Agent_pod["Agent pod"]
  Agent_namespace --> Agent_pod
  Agent_pod --> Persistent_data_volume["Persistent data volume"]
  Traefik_browser_ingress["Traefik browser ingress"] --> Agent_pod
  Concedo_OIDC["Concedo OIDC"] --> pcli_and_portal
  Concedo_OIDC --> Traefik_browser_ingress
  Agent_pod --> LiteLLM_gateway_wrapper["LiteLLM gateway wrapper"]
  LiteLLM_gateway_wrapper --> Vault["Vault"]
  LiteLLM_gateway_wrapper --> GrabGPT_upstream["GrabGPT upstream"]
  Agent_pod --> Proxy_namespace["Proxy namespace"]
  NetworkPolicy_and_Cilium["NetworkPolicy and Cilium"] --> Agent_namespace
  NetworkPolicy_and_Cilium --> Proxy_namespace
  Proxy_namespace --> OPA_policy_engine["OPA policy engine"]
  Proxy_namespace --> Vault
  Proxy_namespace --> Observability_systems["Observability systems"]
  LiteLLM_gateway_wrapper --> Observability_systems
  Palana_operator --> Observability_systems
  Observability_systems --> Idle_shutdown_reaper["Idle shutdown reaper"]
  Idle_shutdown_reaper --> Agent_pod
  Idle_shutdown_reaper --> Persistent_data_volume
  Observability_systems --> Ops_assistant_agent["Ops assistant agent"]
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
pcli and portal Self-service user interfaces for login, agent creation, secrets, templates, and runs. UserAgent custom resource, Palana operator
UserAgent custom resource Kubernetes custom resource carrying the raw user identity and agent request. pcli and portal, Palana operator
Palana operator Turns agent requests into namespaces, service accounts, RBAC, storage, network policies, ingress, and lifecycle state. UserAgent custom resource, Agent namespace, Admission webhooks, Observability systems
Agent namespace Per-user, per-agent Kubernetes isolation boundary for compute, service account, network policy, storage, labels, and quotas. Palana operator, Agent pod, NetworkPolicy and Cilium, Proxy namespace, LiteLLM gateway wrapper, Vault
Agent pod Runtime environment for the autonomous agent and its tools. Agent namespace, Persistent data volume, Proxy namespace, LiteLLM gateway wrapper, Traefik browser ingress
Admission webhooks Inject proxy environment variables and enforce pod-level restrictions before workloads run. Palana operator, Agent pod
Persistent data volume EFS-backed /data mount that survives idle shutdown and restart. Agent pod, Idle shutdown reaper
Traefik browser ingress Ingress path for browser-accessible agent UIs protected by OAuth2-Proxy and Concedo auth. Agent pod, Concedo OIDC
Concedo OIDC Human authentication and browser auth source for pcli and agent UIs. pcli and portal, Traefik browser ingress, UserAgent custom resource
Vault Stores agent-readable and proxy-only secrets under separate paths. Agent namespace, LiteLLM gateway wrapper, Proxy namespace
LiteLLM gateway wrapper Derives agent identity from Kubernetes context, retrieves per-agent GrabGPT credentials, and forwards LLM calls. Agent pod, Vault, GrabGPT upstream
GrabGPT upstream Internal LLM provider reached through the gateway. LiteLLM gateway wrapper
NetworkPolicy and Cilium Layer 3/4 containment for namespaces, services, CIDRs, DNS, Vault, gateway, proxy, and supported API paths. Agent namespace, Proxy namespace, LiteLLM gateway wrapper
Proxy namespace Layer 7 HTTP/HTTPS egress proxy with OPA policy and structured allow/deny logs. Agent pod, OPA policy engine, Vault, Observability systems
OPA policy engine Evaluates per-agent proxy policy by host, method, and identity. Proxy namespace
Observability systems Collects proxy decisions, Git activity, LLM requests, lifecycle events, idle signals, and platform activity. Palana operator, Proxy namespace, LiteLLM gateway wrapper, Idle shutdown reaper, Ops assistant agent
Idle shutdown reaper Stops idle compute while preserving state and records recent observable activity. Observability systems, Agent pod, Persistent data volume
Ops assistant agent Agent that reads Palana signals and advises users when workloads show issues such as OOMs. Observability systems

Data flow

A user logs in with pcli or the portal, creates an agent, optionally registers secrets, and runs a template or image. Palana writes a UserAgent or Agent custom resource, and the operator creates namespaces, service accounts, role bindings, storage, network policies, ingress, and policy state. Admission webhooks inject proxy variables. Browser traffic enters through Traefik; LLM traffic goes to the LiteLLM wrapper in the gateway namespace; HTTP/HTTPS egress goes through the proxy namespace; Vault credentials are read only by components authorized to use them. Structured logs and activity signals feed observability, idle shutdown, and operational support agents.

4 supporting quotes
“The operator is responsible for turning a user request into the concrete Kubernetes shape:”article, stated
“The operator creates the user and agent namespaces, service accounts, role bindings, storage, network policies, and ingress.”article, stated
“Browser traffic enters through Traefik. LLM traffic goes to the LiteLLM wrapper in the gateway namespace.”article, stated
“General Hypertext Transfer Protocol (HTTP) and Hypertext Transfer Protocol Secure (HTTPS) egress goes through the proxy namespace.”article, stated

Why this architecture

Palana puts enforcement at the platform trust boundaries rather than relying on prompt rules. Per-agent namespaces give a simple boundary for RBAC, storage, network, logging, quota, and lifecycle controls; proxy-only secrets separate credential use from credential access; Layer 3/4 policies contain network paths while Layer 7 proxy policy gives expressive host/method/identity controls and audit; self-service CLI/templates make the secure path easy enough for teams to use.

4 supporting quotes
“Prompt-level guardrails and model policies are useful, but they are not enough. Agents call tools, tools call services, and services use credentials.”article, stated
“Palana puts controls where the action crosses a trust boundary: identity, egress, secrets, ingress, Git, and Kubernetes API access.”article, stated
“Per-agent namespaces give us a consistent place to apply RBAC, storage, network policy, logging labels, resource quotas, and lifecycle controls.”article, stated
“Proxy-only secrets are one of the highest-leverage design choices.”article, stated

Models used: LiteLLM · GrabGPT · Claude Code UI template · future SPIFFE/SPIRE agentic identity integration

Scale

Alternatives considered (roads not taken)

Prompt-level guardrails and model policies only

Rejected because: They do not control tool, service, credential, ingress, egress, Git, or Kubernetes API boundaries.

“Prompt-level guardrails and model policies are useful, but they are not enough.”article, stated

Give agents raw upstream LLM credentials

Rejected because: Palana routes LLM traffic through a wrapper that derives identity and retrieves credentials centrally.

“Agents do not need raw upstream LLM credentials.”article, stated
“The wrapper derives agent identity from Kubernetes context rather than trusting client-provided headers.”article, stated

Let agents read all secrets they can use

Rejected because: Proxy-only secrets let agents make approved credentialed requests without exposing real tokens in filesystem, logs, environment, or prompts.

“They let agents perform authenticated work without turning the agent filesystem, logs, process environment, or prompt context into a credential store.”article, stated

Use only Kubernetes NetworkPolicy for network control

Rejected because: NetworkPolicy contains traffic but Layer 7 proxy policy is needed for application-aware host, method, identity, and audit decisions.

“NetworkPolicy is good at containment. The proxy is good at application-aware decisions and audit.”article, stated

Stop idle agents and discard runtime state

Rejected because: Palana stops compute but preserves /data, RBAC, namespace, and Vault state for easy resumption.

“stop the compute, keep the state, and make resumption easy.”article, stated

Patterns

safety-policy-enforcement (governance)

Palana enforces identity, egress, secret, ingress, Git, and Kubernetes API controls at platform trust boundaries rather than relying on model behavior.

“Palana puts controls where the action crosses a trust boundary: identity, egress, secrets, ingress, Git, and Kubernetes API access.”article, stated

tool-use-orchestration (architecture)

Agents can use browsers, LLM gateways, HTTP services, Git, Kubernetes API paths, and credentialed services only through mediated platform routes.

“Agents call tools, tools call services, and services use credentials.”article, stated
“Browser traffic enters through Traefik. LLM traffic goes to the LiteLLM wrapper in the gateway namespace.”article, stated

observability-tracing (operations)

Palana treats logs and activity signals as safety infrastructure for audits, idle shutdown, and operational support agents.

“Palana treats observability as part of the safety model, not a nice-to-have.”article, stated
“The platform emits structured logs for proxy decisions, Git activity, LLM requests, agent lifecycle, and idle-shutdown decisions.”article, stated

agent-memory (architecture)

Persistent /data volumes and preserved namespace/Vault/RBAC state give long-running agents durable local state across shutdown and resumption.

“After a configurable idle threshold, it can warn the user and stop the workload while preserving /data, RBAC, namespace, and Vault state.”article, stated

multi-agent-orchestration (architecture)

Palana is evolving toward supervisor systems, agent swarms, Slack-native agents, and operational agents with scoped namespaces and credentials.

“Supervisor systems that route work to a pool of scoped agents.”article, stated
“Agent swarms where each worker has a separate namespace and credential scope.”article, stated

Tradeoffs

Use namespace isolation as the unit of trust.

Chose one namespace per user and agent over shared agent runtimes with weaker boundaries.

Rationale: Namespaces provide a consistent place for RBAC, storage, network policies, labels, quotas, lifecycle controls, incident inspection, and isolation.

“The agent pod runs in a namespace owned by one user and one agent.”article, stated
“The pattern is easy to reason about during incidents: identify the namespace, identify the owner, inspect the policy, and isolate if needed.”article, stated

Separate credential use from credential access.

Chose proxy-only Vault secrets over raw credentials inside agent runtimes.

Rationale: Agents can perform authenticated work through approved proxies without exposing real tokens to process environment, filesystem, logs, or prompts.

“Separating “can read a credential” from “can cause a credentialed request” is powerful”article, stated
“They let agents perform authenticated work without turning the agent filesystem, logs, process environment, or prompt context into a credential store.”article, stated

Split network control into Layer 3/4 and Layer 7.

Chose NetworkPolicy/Cilium containment plus proxy/OPA application policy over using only one network-control layer.

Rationale: NetworkPolicy contains traffic paths, while the proxy enables host, method, agent identity, and audit decisions.

“## How Palana handles network access Network control is split into two layers.”article, stated
“At Layer 7, the proxy policy controls HTTP and HTTPS destinations by host, method, and agent identity.”article, stated

Stop idle compute but preserve agent state.

Chose idle reaper with preserved /data, RBAC, namespace, and Vault state over letting all long-running agents stay active indefinitely.

Rationale: Long-running agents consume resources and expand monitoring surface, but users still need resumable environments.

“Long-running agents are useful, but idle workloads consume cluster resources and expand the surface area that platform teams must monitor.”article, stated
“After a configurable idle threshold, it can warn the user and stop the workload while preserving /data, RBAC, namespace, and Vault state.”article, stated

Gotchas (what bit them)

Prompt guardrails do not secure real-world agent actions.

Root cause: Agents call tools and services that use credentials outside the model prompt.

Resolution: Put controls at platform trust boundaries such as identity, egress, secrets, ingress, Git, and Kubernetes API access.

“Prompt-level guardrails and model policies are useful, but they are not enough. Agents call tools, tools call services, and services use credentials.”article, stated

Credential exposure through agent runtimes is a high-leverage risk.

Root cause: If agents can read real tokens, filesystem, logs, environment variables, or prompt context can become credential stores.

Resolution: Use proxy-only secrets and placeholder values so agents can cause approved credentialed requests without reading raw credentials.

“For each proxy-only secret, Palana can create an agent-visible placeholder value. The placeholder is inert unless the request goes through the approved proxy path.”article, stated
“This gives teams a practical migration path. Existing clients can often be configured with a token-looking value”article, stated

Sanitized user identifiers can accidentally become authorization subjects.

Root cause: The display-safe or path-safe user ID is not necessarily the raw identity Kubernetes RBAC should match.

Resolution: Keep raw identity as authoritative on the custom resource and use sanitized versions only for names, labels, namespaces, and Vault paths.

“This split prevents a common class of identity bugs: the display-safe or path-safe version of a user ID should not accidentally become the authorization subject.”article, stated

Long-running agents turn container launch into an incomplete product.

Root cause: Users need resume semantics while operators need cleanup, audit history, credential rotation, image updates, and external stop controls.

Resolution: Add idle shutdown and lifecycle management that stops compute while preserving state.

“Once agents persist for days or weeks, “run a container” becomes an incomplete product. Users need resume semantics.”article, stated
“Operators need idle cleanup. Security teams need audit history. Platform teams need a way to rotate credentials, update images, and stop workloads externally.”article, stated

A secure path that is too hard invites workarounds.

Root cause: Teams will avoid the platform if they must learn Terraform, Vault policy syntax, Kubernetes RBAC, and proxy configuration before trying an agent.

Resolution: Expose pcli, templates, and a portal so the safe path is the easy path.

“If the secure path requires every team to learn Terraform, Vault policy syntax, Kubernetes RBAC, and proxy configuration before they can try an agent, teams will work around it.”article, stated
“Palana uses pcli, templates, and the portal to make the safe path the easy path.”article, stated

Evaluation

The article evaluates Palana through production lessons rather than benchmark metrics: whether platform-layer controls prevent credential/network/identity risks, whether observability supports audit and operations, whether self-service makes secure agent execution practical, and whether lifecycle controls handle long-running agents.

Metrics: proxy allow/deny decisions · Git activity · LLM request activity · agent lifecycle events · idle-shutdown signals · namespace/user/host/component queryability · OOM detection by operational agents

3 supporting quotes
“The platform emits structured logs for proxy decisions, Git activity, LLM requests, agent lifecycle, and idle-shutdown decisions.”article, stated
“Operators can query activity by namespace, user, host, decision, or component.”article, stated
“say, an agent is consistently out of memory (OOM), the ops agent can see that and message the user with instructions on how to increase the allocated memory.”article, stated

Outcomes

The article does not publish Palana workload counts, but it places the platform inside Grab, which serves over 900 cities across eight countries. The architecture is explicitly production-oriented and describes lessons learned from putting the system into production.

3 supporting quotes
“we’ll dive under the hood into Palana’s architecture, look at the agent lifecycle, and share the key lessons we learned from putting this system into production.”article, stated
“AI agents are most valuable when they can act in real environments. That is also when they become risky.”article, stated
“Palana gives Grab a way to keep both sides of that tradeoff in view: teams can move quickly with self-service agent environments”article, stated