NVIDIA NeMo Agent Toolkit — Tenuo
Provider-owned Agent Toolkit middleware that checks a Tenuo warrant before a
function runs. Unauthorized calls stop before call_next, so protected
function code never receives them.
This package is the in-process Agent Toolkit integration. The OpenShell supervisor middleware at the repository root is the independent enforcement point for MCP traffic that leaves the sandbox. Use both: the plugin catches calls early, with readable errors, and the middleware enforces at the network boundary.
Install
Install it into the same environment as Agent Toolkit 1.8:
pip install nemo-agent-toolkit-tenuo
nat info components
To install from a checkout instead, run this from the repository root:
uv sync --locked --project python/nemo-agent-toolkit-tenuo --extra test
uv run --locked --project python/nemo-agent-toolkit-tenuo nat info components
For an existing environment, an editable or regular local install also works:
python -m pip install ./python/nemo-agent-toolkit-tenuo
The package uses NVIDIA's third-party plugin convention:
| Surface | Value |
|---|---|
| Distribution | nemo-agent-toolkit-tenuo |
| Import | nat.plugins.tenuo |
| Entry point | nat_tenuo |
Middleware _type |
tenuo |
Bind task authority
Bind authority in application-controlled task scope. Do not accept a warrant or holder key from model-generated function arguments.
from nat.plugins.tenuo import authority
with authority(warrant.bind(holder)):
result = await workflow.ainvoke(input)
The binding follows Python context propagation, including async tasks created
inside the block. The middleware does not write MCP _meta.tenuo; use Tenuo's
SecureMCPClient when the same authority must cross an MCP boundary.
Configure middleware
middleware:
task_authorization:
_type: tenuo
trusted_roots:
- "<64 hex characters of a 32-byte issuer public key>"
functions:
read_logs:
_type: read_logs
middleware: [task_authorization]
trusted_roots selects accepted issuers and cannot be empty. A denied call
raises AuthorizationDenied; a call needing a signed approval raises
ApprovalRequired, which subclasses it. The middleware is not final, so later
middleware continues after an allow.
Compatibility and verification
Tested with Python 3.11–3.13, nvidia-nat-core 1.8.x, and
Tenuo 0.3.x. Run its tests and distribution build with:
uv run --locked --project python/nemo-agent-toolkit-tenuo --extra test \
pytest python/nemo-agent-toolkit-tenuo/tests -q
uv build --project python/nemo-agent-toolkit-tenuo
See the repository security policy before reporting a vulnerability and release guide for the publication gate.
License
Apache-2.0.
Metadata
Release files for nemo-agent-toolkit-tenuo 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| nemo_agent_toolkit_tenuo-0.1.2.tar.gz | 150.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nemo_agent_toolkit_tenuo-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 160.4 kB
Release files / nemo_agent_toolkit_tenuo-0.1.2.tar.gz
| Download URL | nemo_agent_toolkit_tenuo-0.1.2.tar.gz |
|---|---|
| Size | 150.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b13dae06090a06871d03acb16369be7dfc66f40bf22edf1864f9c3998d0d8e1b
|
|
BLAKE2b-256 checksum How to use checksums |
99278af7cc0609285326b55bd01a7866cbd4cdcd1e34f071ed86b9682cf7db62
|
| 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 Oct 5, 2026.
Transparency logRelease files / nemo_agent_toolkit_tenuo-0.1.2-py3-none-any.whl
| Download URL | nemo_agent_toolkit_tenuo-0.1.2-py3-none-any.whl |
|---|---|
| Size | 10.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f64891871dfb0ebcac5604503f28345056b58ac89ba5dc7695d626419d629616
|
|
BLAKE2b-256 checksum How to use checksums |
1842d734add463f2eb8cb96b60ac1bf3083d64c04a1bb8fa2447a5f86780497e
|
| 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 Oct 5, 2026.
Transparency log