Skip to content
PaloNexus
Request access Request

Operations Overview

Operators use this section to configure the Go control plane, deploy it with Kustomize, enable durable state and cryptographic agent identity, enforce agent egress at the network layer, provision DigitalOcean Kubernetes (DOKS) with Terraform, and observe the deployment with the Grafana LGTM stack (Loki, Grafana, Tempo, and Mimir).

For integrating an agent rather than running the platform, start with Deploy an agent instead.

The whole control layer is a single Go program (control-plane/main.go, Go 1.25) that runs as one Deployment but binds three HTTP listeners, each with a different exposure and threat model:

ListenerDefault addrEnv varRole
Decision plane:9191DECISION_ADDREnvoy’s external-authorization hook (ext_authz) calls /authz here on the hot path. A 200 is allow, a 403 is deny. Locked down mesh-only.
Management plane:8181MGMT_ADDRRegistry API, /healthz, /readyz, /metrics. Exposed to operators and CI separately from the data path.
Egress forward-proxy:9092EGRESS_PROXY_ADDREvery outbound agent call (HTTP(S)_PROXY in the pod) flows through here, gets a /authz-equivalent egress decision, and is forwarded only on allow. Only started when AGENT_IDP_URL is set — without an identity verifier the proxy can’t soundly prove the caller.

Splitting the listeners lets the data path be mesh-only with mutual TLS (mTLS) while the management API is reachable by operators, and keeps the egress proxy off entirely in configurations that don’t gate egress.

Read more in Control plane (Go).

The base manifests lay the platform across four namespaces that double as trust zones:

NamespaceWhat runs there
palonexuscontrol-plane, Open Policy Agent (OPA), Dex (human OpenID Connect, OIDC, sign-in), the model-broker (LiteLLM), the portal
appsthe authority-bound agent workloads (the four demo site-reliability-engineering, SRE, agents) + their egress NetworkPolicies
agent-idpthe did:web agent identity provider (IdP) — its own namespace so the Service DNS matches its Decentralized Identifier (DID)
observabilityGrafana LGTM + the standalone OpenTelemetry (OTel) Collector

Config is all env vars; overlays do the rest

Section titled “Config is all env vars; overlays do the rest”

The same image is promoted unchanged across dev/staging/prod. Every behavioural switch is an environment variable (OIDC_*, OPA_URL, AGENT_IDP_URL, REGISTRY_BACKEND/REGISTRY_DB_URL, AGENT_IDENTITY_MODE, …). Only the Kustomize overlay changes:

  • overlays/dev and overlays/kind strip the three OIDC_* env vars → anonymous-passthrough (policy still enforces public-vs-private from the registry).
  • overlays/selfhost is the cluster-agnostic production overlay; it composes the opt-in hardening components (postgres, egress-identity-vc, egress-enforcement, egress-sidecar, egress-gateway, agent-admission).

See Self-hosting for the deploy flow, Persistence for durable backends, and Credential-safe action enforcement for the egress data plane.

Deployment modes — pick by enforcement fidelity

Section titled “Deployment modes — pick by enforcement fidelity”

PaloNexus runs at three fidelities. The same decision spine underlies all three; what changes is how much of the enforcement plane is real. Use this matrix to pick: evaluate on the left, run production on the right.

CapabilityOffline SDK (PaloNexus.offline())Docker ComposeAny Kubernetes (kind/EKS/GKE/DOKS) selfhost
Enforcement fidelityin-process decision simulationreal control-plane /authz decisionreal /authz plus Envoy request forwarding
Envoy ext_authz forwardingdecision only (no L7 proxy)SecurityPolicy.extAuth forwards on allow
OIDC workforce identityoptional (set OIDC_*)✅ (Logto — the supported IdP; any standard OIDC issuer works)
OPA org vetoinline policy onlyOPA_URL deny-overrides bundle
Regulated egress / needs-approval (task-based access control, TBAC)simulated✅ real agent-idp delegation check
Cryptographic agent identity (Verifiable Credential, VC, mode)header-trust (AGENT_IDENTITY_MODE=header)egress-identity-vc (verifiable presentation, VP, required)
Network-enforced egress (proxy-only netpol)egress-enforcement + sidecar + admission
Durable Postgres state✅ (one instance, two DBs)✅ CloudNativePG (HA)
High availability✅ HA control plane + autoscale pool
Best forunit tests, the end-to-end governed flow, CIlocal evaluation, demosstaging / production

Compose and any Kubernetes cluster share every env var — only the orchestration and the opt-in hardening components differ, so what is proven locally holds in production. The zero-to-authority-bound runbook is cluster-agnostic (kind, EKS, GKE, on-prem, DOKS) — DOKS is just the worked example. Start with Docker Compose to evaluate, then graduate via the runbook against the target cluster.

  1. Control plane (Go) — architecture, ports, the full env-var reference, build/test, fail-closed invariants.
  2. Self-hosting — deploy with Kustomize: prereqs, overlays, opt-in components, secrets.
  3. Bring your own IdP — wire the enterprise IdP (Logto — the supported IdP; Okta / Entra / any OIDC via the same seam) as human sign-in via the oidc component.
  4. Docker Compose — the non-Kubernetes evaluation path: the full stack via docker compose up, with the allow/deny/needs-approval smoke test.
  5. Persistence — pluggable registry + agent-idp backends (memory/postgres/mysql/sqlite/mongodb), CloudNativePG.
  6. Credential-safe action enforcement (ops) — the forward-proxy, proxy-only NetworkPolicies, the admission webhook, the Envoy egress gateway.
  7. Terraform / DOKS — one optional provisioning example (DigitalOcean); PaloNexus runs on any Kubernetes.
  8. Zero to authority-bound agent runbook — the cluster-agnostic cold-start path (kind/EKS/GKE/DOKS; DOKS is the worked example): cluster → Gateway/Envoy Custom Resource Definitions (CRDs) → kubectl apply -k → seed → deploy an authority-bound agent → verify allow/deny/needs-approval in ≤30 min.
  9. Observability — Grafana LGTM, the OTel collector, the overview dashboard, DID/VC traces.
  10. Performance — the egress-decision benchmark (~2.9µs, make bench-egress), per-stage latency, and the live-p99 method.