Every command on this page was run end to end on macOS and in a clean
Linux container before it was written. Where something does not work yet,
the page says so.
What this page does not cover
Deploying that agent and watching it receive a cryptographic identity needs a Kubernetes cluster running the Hexr runtime. That is a separate guide. This page stops at the point where Hexr understands your code.1. Install
2. Mark up an agent
An ordinary LangGraph app with two decorators added. Save asagent.py:
agent.py
@hexr_agent takes no framework argument. It does not need to know
what you are building on. The framework is recognised separately, from
your source.
@hexr_tool("aws_s3") names the resource, not a credential. Once
deployed, the agent process never holds a long-lived secret. It proves
which process it is and is handed a credential that expires in minutes.
3. Let Hexr recognise it
--json for a machine-readable manifest, which is what hexr build
consumes later.
Recognition is data, not code
Fifteen frameworks are recognised today:adk · agno · autogen · claude-agent · crewai · dspy ·
langchain · langgraph · llamaindex · mcp · openai-agents ·
pydantic-ai · smolagents · strands · bespoke (in-house)
Measured confidence on real code: LangGraph 1.00, CrewAI 1.00,
Pydantic AI 0.90.
And seven agentic patterns: prompt chaining, routing, parallelisation,
orchestrator-workers, evaluator-optimiser, ReAct, reflection.
Each is a YAML signature pack rather than product code, and the packs are
public at
github.com/hexrdev/hexr-signatures.
A framework nobody has heard of yet is a file, not a release. If you
maintain a framework, you can open a pull request instead of waiting for
us to notice you.
4. Build a container and manifests
Still no cluster needed.hexr build turns the file into a Dockerfile,
an agent pod spec, and the supporting Kubernetes manifests:
.hexr/manifests/ now holds agent-pod.yaml, the Envoy sidecar config,
namespace, RBAC, network policy and resource quota. The SDK wheel matching
your installed version is baked in alongside them.
Applying those to a cluster running the Hexr runtime is where the identity
appears, and that is the next guide. See
hexr build for every option and a verified first-run
transcript.
What happens once it is deployed
So the payoff is clear, briefly:- Every agent process gets its own SPIFFE identity, valid four hours, held in memory and never written to disk or an environment variable.
- A process that is not registered is refused in about fifteen seconds, and the refusal is itself a signed record.
- Every tool call, model call and agent-to-agent call becomes a hash-chained, signed evidence row.
- Your auditor is handed one zip whose
verify.htmlre-derives every hash and signature on their own laptop, offline, with nothing installed.
Troubleshooting
Next
Per-process identity
Why the identity is per process rather than per pod.
Evidence verification
What your auditor actually receives, and how they check it.