hexr build leaves you a .hexr/ directory. This page takes that to an agent
running on a cluster with a real identity.
Every command and every output here was run end to end on a clean machine on
2026-09-27 against live clusters. Where something failed, the failure is shown
rather than edited out.
The three commands
hexr deploy in production.
What each step actually does
hexr build does not build an image
This is the most common surprise. hexr build writes a Dockerfile, Kubernetes
manifests, a pinned hexr-sdk wheel and a requirements.txt. It never invokes
Docker. The summary line:
ImagePullBackOff, because the manifests use
imagePullPolicy: Always.
Everything is amd64, on purpose
The wheel is downloaded withpip download --platform manylinux2014_x86_64, so
it is x86_64 and nothing else.
Docker prints a FromPlatformFlagConstDisallowed lint warning about that pin.
Warning, not error, and deliberate.
hexr deploy skips two manifests that hexr build generated
Know this before you rely on it. hexr deploy applies exactly three files
plus the Envoy ConfigMap:
network-policy.yaml or resource-quota.yaml. That is a
deliberate backlog decision recorded in cli/deploy.py, not a bug — but the
consequence is that a hexr deploy agent runs with no network isolation and
no resource quota, and the command still prints:
hexr deploy --dry-run reports
Would apply 9 manifests, while kubectl apply -f .hexr/manifests/ applies
11 objects. The two missing ones are the NetworkPolicy and the ResourceQuota.
Walkthrough
1. Build
2. Push
.hexr, not .:
--entrypoint python is required. The image has its own entrypoint, so
docker run <image> python -c ... passes python to that entrypoint and fails
with can't open file '/app/python'.
3. Check against the real cluster before applying
A server dry-run runs full admission, RBAC and quota checks and creates nothing:unchanged on the RBAC objects means the tenant is already onboarded; on a new
tenant they read created.
4. Apply
Full set, recommended:--skip-guidance turns off interactive cluster selection; use it in CI.
5. Verify identity, which is the actual goal
ARunning pod is not success. Success is the agent holding an SVID and writing
signed evidence. Unsigned rows mean the agent never got an identity and is
attributing nothing, while still looking busy.
signed must be greater than zero. If rows climbs while signed stays at
zero, stop and fix identity before going further.