Skip to main content

NXD

NXD keeps your secrets out of what AI models see. Keys stay on your machine. Agents get opaque tokens, sealed text or redacted text back instead of plaintext, and reveals go to the operator, not the agent. Note: the agent still sees whatever plaintext it passes in as a tool argument.

Crypto: shield / seal_text / tokens use Fernet (AES-128-CBC + HMAC-SHA256); the vault and secret handles use AES-256-GCM envelopes with per-company keys.

After installation everything runs locally and offline: no account and no Nexplora service is needed. (The optional nxd serve / vault-setup commands are for self-hosting and are off unless you run them.)

Install

pip install nxd          # Python 3.10+
# or via npm (needs Python 3.10+ on PATH; first run downloads the Python package):
npx nxd --help

The npm package is a thin launcher: it creates a private Python virtualenv under your user cache directory, installs this nxd package into it, and runs it. It requires Python 3.10 or newer.

CLI

nxd init            # set up NXD in the current project
nxd init-operator   # create the operator key in your OS keychain
nxd open | lock | status
nxd reveal <id>     # read a reveal an agent queued (operator only)
nxd recover-operator
nxd migrate-vault
nxd --help

MCP server

{ "mcpServers": { "nxd": { "command": "nxd-mcp" } } }

Prefer the OS keychain (nxd init-operator). Only set NXD_OPERATOR_PASSPHRASE in the server's environment where no keychain exists, and keep that config file unreadable to agents. Tools: nxd_shield, nxd_unshield, nxd_redact, nxd_tokenize, nxd_detokenize, nxd_seal_text, nxd_unseal_text, nxd_score, nxd_match and nxd_aggregate. nxd_unshield never returns plaintext to the agent: it queues a reveal that only the operator can read with nxd reveal (same for nxd_detokenize and nxd_unseal_text). Threat model: anything running as your OS user, including an agent with shell access, can run nxd reveal too. NXD protects against the model seeing secrets, not against a fully compromised local account.

nxd_score / nxd_match need the optional FHE extra on Python 3.10-3.11: pip install 'nxd[fhe]'.

Security notes

  • NXD's security rests on the cryptography and your own key, not on the core being compiled. Compiling only hides the implementation.
  • nxd_redact is best-effort pattern detection, not a guarantee.

License

The CLI, MCP server and tests are Apache-2.0 (see LICENSE). The core ships as compiled binaries under LICENSE-CORE. See NOTICE.

Metadata

Release files for nxd 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for nxd 0.6.0
File Actions
nxd-0.6.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details for nxd-0.6.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
nxd-0.6.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details for nxd-0.6.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
nxd-0.6.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details for nxd-0.6.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
nxd-0.6.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details for nxd-0.6.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Total release size: 9.4 MB

Release files / nxd-0.6.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL nxd-0.6.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 2.2 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
3f55f9c918d7cc32ce55e9bf1fb57309b483c32d427aee4ef75eef03535635d2
BLAKE2b-256 checksum
How to use checksums
581564d2f677060173e62ff04a6b443c2ee8bfb7098fe3d7d782194a6aa7232d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.17

Release files / nxd-0.6.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL nxd-0.6.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 2.3 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
5f728e4c4f0901b0ffdc2c8a8e562452f34a36b1d48ff9a0e0677f547f092037
BLAKE2b-256 checksum
How to use checksums
a10825357a23170f86864fb29c247ed4e7ff06c864e6233cd5b1a204a4d864bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.17

Release files / nxd-0.6.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL nxd-0.6.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 2.4 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
9e7b9eed075686208e80be641fca98d47a6a4b9ef1af6c9b98f1992f4bf15b7c
BLAKE2b-256 checksum
How to use checksums
e9f54f345c58145a4f1f46ead625925671691ed8c932c836753b57d13203de12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.17

Release files / nxd-0.6.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL nxd-0.6.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 2.4 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
ee4e95cc34899e23aa178fd598180a1b6a0e8028d41f7bcf09d52e36f0ad913d
BLAKE2b-256 checksum
How to use checksums
4e1a1668385ece523dcdb7456afd6cf3c6b4ba69f4473560c9b8570a4cc7c1c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.17

Security for nxd 0.6.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.6.0 This release

4 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page