Building a Secure Kubernetes Platform for Autonomous AI Agents

grab · Tech · 2026 · source Agentic: yes · promotional bias: low · source-backed · extracted with prompt 0.5.4 (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 reusable way to run increasingly autonomous AI agents inside the company without giving every agent ambient laptop privileges, raw credentials, unrestricted network access, or bespoke infrastructure.

Constraints:

Architecture

Grab built Palana as a Kubernetes-native substrate for autonomous and semi-autonomous agents. Each agent gets its own namespace, service account, RBAC, resource quotas, network policy, storage, and Vault scope. Agents access LLMs through a LiteLLM wrapper, external HTTP through Envoy/ext-authz/OPA, credentials through proxy-only placeholder replacement, Git through a bastion path, and lifecycle controls through pcli, a portal, operator reconciliation, kill switches, and idle shutdown.

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

flowchart LR
  user[User] --> palana-cli[Palana CLI]
  user[User] --> palana-portal[Palana Portal]
  palana-cli[Palana CLI] --> palana-operator[Palana Operator]
  palana-portal[Palana Portal] --> palana-operator[Palana Operator]
  palana-operator[Palana Operator] --> agent-namespace[Agent Namespace]
  palana-operator[Palana Operator] --> idle-reaper[Idle Reaper]
  agent-namespace[Agent Namespace] --> agent-pod[Agent Pod]
  agent-namespace[Agent Namespace] --> vault[Vault]
  agent-pod[Agent Pod] --> litellm-wrapper[LiteLLM Wrapper]
  agent-pod[Agent Pod] --> envoy-proxy[Envoy Proxy]
  agent-pod[Agent Pod] --> git-bastion[Git Bastion]
  litellm-wrapper[LiteLLM Wrapper] --> vault[Vault]
  envoy-proxy[Envoy Proxy] --> ext-authz-proxy[Ext Authz Proxy]
  ext-authz-proxy[Ext Authz Proxy] --> opa[OPA]
  ext-authz-proxy[Ext Authz Proxy] --> vault[Vault]
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
User Grab engineer or team launching and managing agent workloads. Palana CLI, Palana Portal
Palana CLI Command-line interface for creating, running, stopping, configuring, and inspecting agents. User, Palana Operator
Palana Portal Web control surface for agent lifecycle and inspection. User, Palana Operator
Palana Operator Kubernetes controller that reconciles agent namespaces, RBAC, storage, services, ingress, and policies. Palana CLI, Palana Portal, Agent Namespace, Idle Reaper
Agent Namespace Per-agent Kubernetes isolation boundary with scoped service account, storage, quotas, and network policy. Palana Operator, Agent Pod, Vault
Agent Pod Containerized autonomous or semi-autonomous agent workload with persistent /data state. Agent Namespace, LiteLLM Wrapper, Envoy Proxy, Git Bastion
LiteLLM Wrapper LLM access layer that injects per-agent GrabGPT credentials from Vault. Agent Pod, Vault
Envoy Proxy HTTP/HTTPS egress path for policy checks, structured request logging, and credential injection. Agent Pod, Ext Authz Proxy
Ext Authz Proxy Authorization service that identifies calling pods, evaluates OPA policy, logs requests, and injects secrets. Envoy Proxy, OPA, Vault
OPA Policy engine for outbound egress decisions. Ext Authz Proxy
Vault Secret store for agent-readable and proxy-only credentials. Agent Namespace, LiteLLM Wrapper, Ext Authz Proxy
Git Bastion Policy-controlled and attributable path for repository operations. Agent Pod
Idle Reaper CronJob that shuts down idle agents outside the agent process. Palana Operator

Data flow

A user creates or manages an agent through pcli or the portal. The Palana operator reconciles the agent's namespace, RBAC, storage, service, ingress, and network policies. The running pod receives persistent /data storage and proxy configuration. LLM, Git, and HTTP egress are mediated through LiteLLM, bastion, or Envoy/ext-authz paths, where OPA evaluates policy, Vault-backed proxy-only secrets are injected, and structured logs capture who did what.

4 supporting quotes
“The operator reconciles namespaces and policies. The proxy controls egress. The portal and pcli (Palana command-line interface) manage lifecycle.”article, stated
“Each agent gets its own namespace, service account, storage, network policy, and Vault scope. Agents should not see each other’s pods, secrets, or filesystem state by default.”article, stated
“External HTTP and HTTPS traffic flows through Envoy. Envoy asks ext-authz-proxy to identify the calling pod, evaluate policy with OPA, log the request”article, stated
“When an outbound request travels through the proxy path, the proxy replaces the placeholder header with the real credential from Vault.”article, stated

Why this architecture

Grab made Palana Kubernetes-native because agents needed workload-grade isolation, lifecycle management, and observability while still being ergonomic enough for teams to adopt. Namespaces and Kubernetes primitives create isolation boundaries; proxy-mediated secrets and egress avoid raw credential exposure; and external control-plane mechanisms such as kill switches keep safety controls outside the agent process.

3 supporting quotes
“Palana is Grab’s Kubernetes-native platform for running those workloads safely. It gives each agent an isolated namespace, persistent storage, controlled ingress, proxy-mediated egress, Vault-backed credential injection, large language model (LLM) routing, Git access controls, structured audit”article, stated
“If the safe path is self-service and ergonomic, teams are more likely to use it. If the productive path is observable and policy-controlled by default, and the appropriate security is baked into the system automatically, platform teams do not have to retrofit controls after adoption.”article, stated
“A kill switch that asks the agent to stop is a feature. A kill switch that removes the agent’s network path is a safety control.”article, stated

Models used: LLMs routed through GrabGPT · LiteLLM wrapper

Scale

Alternatives considered (roads not taken)

Run agents in containers only

Rejected because: Containers package runtimes but do not answer identity, credential, network, inspection, and self-service platform questions.

“The answer was not simply to “run agents in containers”. Containers help package the runtime, but they do not answer the harder platform questions”article, stated

Let agents inherit broad laptop-like access

Rejected because: Autonomous agents with tools and credentials become workloads that can act, so capabilities must be intentionally added.

“We need isolated environments, with clear intentional capabilities added rather than just inheriting “everything on your laptop”.”article, stated

Give credentials directly to the workload

Rejected because: Agent workloads may execute tools, run untrusted code, install packages, expose web UIs, or be prompt-injected.

“Traditional application hosting often gives credentials to the workload as environment variables or mounted files. That is risky for agent workloads”article, stated
“When an outbound request travels through the proxy path, the proxy replaces the placeholder header with the real credential from Vault. The remote service receives a valid token, but the agent process never stores the token in its own environment or config.”article, stated

Ask the agent process to stop itself during emergencies

Rejected because: Palana assumes agents may become confused, compromised, or uncooperative, so safety controls must sit outside the agent.

“Palana assumes an agent might become confused, compromised, or uncooperative. Operational controls therefore live outside the agent process.”article, stated

Patterns

privacy-preserving-processing (security)

Palana isolates each agent in its own namespace, storage, service account, network policy, and Vault scope.

“Each agent gets its own namespace, service account, storage, network policy, and Vault scope.”article, stated

safety-policy-enforcement (security)

Egress is mediated through Envoy, ext-authz, and OPA so outbound requests can be allowed, denied, logged, and credential-injected by policy.

“Envoy asks ext-authz-proxy to identify the calling pod, evaluate policy with OPA, log the request, and optionally inject credentials.”article, stated

observability-tracing (operations)

Palana captures structured logs for LLM, Git, and HTTP activity so teams can inspect agent behavior after incidents.

“Which host and method were requested?”article, stated
“Git access through a bastion path so repository operations are attributable and policy-controlled.”article, stated

agent-memory (agent architecture)

Persistent /data storage lets long-running agents retain memory, caches, repositories, and session state across restarts.

“Persistent /data storage so long-running agents can preserve memory, caches, repositories, and session state across restarts.”article, stated

fallback-degradation (operations)

External kill switches and idle shutdown stop or isolate agents even if the agent process does not cooperate.

“Kill switches and idle shutdown so the control plane can isolate or stop workloads from outside the agent process.”article, stated

Tradeoffs

Use Kubernetes namespaces as the isolation unit

Chose Per-agent namespace, service account, RBAC, storage, network policy, and Vault scope over Trusting agent frameworks to provide their own multi-tenant isolation.

Rationale: Infrastructure-level isolation lets single-user assistant frameworks run safely inside explicit Palana boundaries.

“This means the platform does not have to assume every agent framework has perfect multi-tenant isolation internally.”article, stated

Mediate egress instead of forbidding networking

Chose Observable, policy-mediated HTTP/HTTPS egress through Envoy, ext-authz, and OPA over Blocking network access entirely.

Rationale: Agents need tools and services to be useful, but the platform needs an inspectable control point for outbound activity.

“Agents can be useful only if they can call tools and services. Instead of forbidding network access, Palana makes network access observable and policy-mediated.”article, stated

Keep operational control outside the agent

Chose Operator, proxy, portal, CLI, kill switch, and reaper controls over Relying on agent cooperation for lifecycle and safety.

Rationale: External controls still work when the agent is compromised or confused.

“The operator reconciles namespaces and policies. The proxy controls egress. The portal and pcli (Palana command-line interface) manage lifecycle.”article, stated

Gotchas (what bit them)

Agent workloads amplify credential risk.

Root cause: Agents may execute tools, run untrusted code, install packages, summarize files, or expose a web UI.

Resolution: Palana separates agent-readable secrets from proxy-only secrets and injects real credentials only in the proxy path.

“That is risky for agent workloads because the agent may execute tools, run untrusted code, summarize files, install packages, or expose a web UI.”article, stated
“the proxy replaces the placeholder header with the real credential from Vault.”article, stated

Containers alone did not solve enterprise agent governance.

Root cause: Packaging an agent runtime did not answer identity, credential, network, inspection, stop, and self-service questions.

Resolution: Palana wraps containers in Kubernetes namespaces, policy controls, lifecycle tooling, and audit paths.

“Containers help package the runtime, but they do not answer the harder platform questions:”article, stated
“Palana is intentionally Kubernetes-native. Agents are represented by custom resources.”article, stated

A cooperative stop signal is not a safety control.

Root cause: Agents can become confused, compromised, or uncooperative.

Resolution: Kill switches remove network paths and control-plane mechanisms operate outside the agent process.

“Palana assumes an agent might become confused, compromised, or uncooperative. Operational controls therefore live outside the agent process.”article, stated
“A kill switch that removes the agent’s network path is a safety control.”article, stated

Evaluation

The source evaluates Palana by describing adopted workload categories, hundreds of running agents, and security questions the platform can answer through policy and structured logs.

Metrics: hundreds of agents · per-agent namespaces · over 900 cities across eight countries in Grab's operating context · structured logs for host, method, allow/deny, and credential replacement

3 supporting quotes
“It is currently used to run hundreds of agents, including remote development environments, Slack automation, OpenClaw workers, Hermes agents”article, stated
“This gives the platform a place to answer questions that normal Kubernetes networking cannot answer alone:”article, stated
“Which host and method were requested?”article, stated

Outcomes

Palana is described as operating in Grab's broader environment of over 900 cities and eight countries, with hundreds of agents already running.

3 supporting quotes
“It is currently used to run hundreds of agents, including remote development environments, Slack automation, OpenClaw workers, Hermes agents”article, stated
“By centering the design around isolation, controlled egress, and proxy-mediated secrets, Palana provides a secure foundation for AI agents to operate within Grab.”article, stated
“serving over 900 cities across eight countries”article, stated