hexr-sdk
Per-process identity, signed evidence, and short-lived cloud credentials for AI agents — in your own cluster.
Hexr gives every agent process its own cryptographic identity, records every model call and tool call as a signed evidence row that stays in your environment, and exchanges that identity for short-lived cloud credentials so agents carry no keys. Auditors get a report mapped to the controls they already use.
- Docs: https://docs.hexr.dev · Demo on real data: https://demo.hexr.dev · Site: https://hexr.dev
- Licence: proprietary, source-available. Read every line; do not redistribute. See
LICENSE.
Install
pip install hexr-sdk
Python 3.11+. Linux wheels for x86_64 and aarch64 ship a native analyzer (Rust, via PyO3); other platforms build from the sdist. Enterprise mirrors: the same wheels are published to a private index for air-gapped installs — ask us.
The whole user-facing surface
Three symbols and one config object. Nothing is monkey-patched; you mark what you want governed.
from hexr import hexr_agent, hexr_tool, hexr_llm, HexrConfig
from openai import OpenAI
@hexr_agent(name="resume-ranker", tenant="globex")
def rank(applications):
llm = hexr_llm(OpenAI()) # every call becomes signed evidence
store = hexr_tool("gcp_storage") # the real google-cloud client, short-lived creds, no key
...
| Symbol | What it does |
|---|---|
@hexr_agent |
Registers this process with the identity plane and gives it a SPIFFE ID of its own. Child processes get their own; a process nobody decorated gets nothing — and that absence is a finding. |
hexr_llm(client) |
Wraps an OpenAI, Anthropic, Google GenAI, Cohere, Mistral or LiteLLM client. Intercepts the known call paths, emits a signed evidence row per call, keeps streaming intact. Your business logic is never touched. |
hexr_tool(service) |
Exchanges the process's identity for short-lived credentials and returns the native client. AWS (aws_s3, aws_sts, aws_kms, aws_dynamodb) and GCP (gcp_storage, gcp_bigquery) today. Every call — allowed or denied — is a signed row mapped to a control (SOC 2 CC6.1, HIPAA 164.312). |
HexrConfig |
Optional; otherwise read from environment or hexr.yaml. |
The CLI
hexr init tenant bootstrap, writes hexr.yaml
hexr analyze read-only: framework, agentic pattern, spawn graph, where identity will attach
hexr build container image + Kubernetes manifests (agent, PID mapper, Envoy mTLS sidecar, policy, RBAC)
hexr push to your registry
hexr deploy to your cluster
hexr delete tear an agent down cleanly
hexr audit signed audit pack — --framework soc2 | hipaa | iso42001
hexr cluster register a runtime cluster with the control plane
hexr trust-policy cross-cloud federation policy
hexr update upgrade a running agent
hexr login/logout control-plane session
hexr analyze
A Rust analyzer parses your code (no execution) and identifies the framework and the agentic pattern, so hexr build knows where identity attaches and what to wrap. Detection is pack-driven — YAML rules the analyzer ships with, so a new framework is a pack, not a release.
Frameworks (15): CrewAI, LangChain, LangGraph, AutoGen, Google ADK, Strands, LlamaIndex, OpenAI Agents, Claude Agent SDK, Pydantic AI, smolagents, DSPy, Agno, MCP servers, and bespoke Python loops with no framework at all.
Agentic patterns (7): prompt chain, routing, parallelization, orchestrator–workers, evaluator–optimizer, ReAct, reflection.
Measured on unmodified files from each framework's own repository: 15/15 correct, 17 files, 715 ms total. The evaluation and its sources ship in the repository (_hexr_analyzer/EVAL_REPORT_REAL.md).
What runs where
- Your cluster runs the agents, a per-cluster identity server chained to Hexr's control plane, a policy engine, a credential injector, and the evidence store (Postgres). Evidence never leaves.
- Hexr's control plane issues the per-tenant trust root, licences, and receives a 60-second heartbeat that says whether identity is still being issued and whether evidence is still being signed — not a pod count.
- Isolation between tenants is cryptographic: each tenant has its own root; a credential from one tenant is not denied by another, it is unverifiable. Re-checked hourly, and you can check it yourself on the demo.
Verify a release
Wheels are published from a tag by GitHub Actions through PyPI trusted publishing (no API token exists) and carry Sigstore attestations. Compare the wheel's SHA-256 with the attestation on the release's workflow run before you trust it.
Support
Design partners and enterprise: https://hexr.dev/#cta. Issues with the SDK: https://github.com/hexrdev/hexr/issues.
Release files for hexr-sdk 0.5.25
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hexr_sdk-0.5.25.tar.gz | 595.7 kB | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hexr_sdk-0.5.25-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.11 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| hexr_sdk-0.5.25-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.11 | abi3 | Linux glibc 2.17+ ARM64 | Details |
Total release size: 4.5 MB
Release files / hexr_sdk-0.5.25.tar.gz
| Download URL | hexr_sdk-0.5.25.tar.gz |
|---|---|
| Size | 595.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3478b9e7881b94ea6c46a0c7fcc70accd449aa32cbb2f60186dbb2f042272bc9
|
|
BLAKE2b-256 checksum How to use checksums |
6dd9cd505558221aff128f6064316519475f2eda9237cf71f793507e44b837e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.
Transparency logRelease files / hexr_sdk-0.5.25-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | hexr_sdk-0.5.25-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
ebb2fb26ad8d9cee63c8eb5ab4e2bf4dc48d74c250ebeb0b09bde10e7fce8597
|
|
BLAKE2b-256 checksum How to use checksums |
c89f9c7bd59aa5fc0c2ea3ba4f17fa5450d33535a41887cf0c6411eea594d0e5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.
Transparency logRelease files / hexr_sdk-0.5.25-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | hexr_sdk-0.5.25-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.9 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
02a9f4d8f3ba02541f3545cf4432235b0697f5c868e67e46e8945fe9cfc9829a
|
|
BLAKE2b-256 checksum How to use checksums |
d7179fdf34c0b9390d5dc49590bc3e5259d670a538b98e066b18012add59f107
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.
Transparency log