Dependency and Supply Chain Security Policy
Version 1.6 · Last updated: 16 May 2026
1. Introduction
2. Dependency Auditing
3. Version Pinning and Lock Files
exclude-newer in pyproject.toml. Development tools are pinned to explicit versions across tools.toml, Cargo.toml, and related manifests, and version bumps are reviewed during security audits. Rust crate updates are reviewed through our cargo-vet audit process and policy. The cooldown gives the community time to detect and quarantine compromised releases.rust-toolchain.toml, all Cargo tools (cargo-deny, cargo-vet, cargo-nextest, and others) via Cargo.toml metadata, the uv package manager via pyproject.toml, and all pre-commit hooks via version tags. Toolchain version upgrades require Core team review and must pass automated security auditing before merge.[tool.uv].no-build-package allowlist enumerates every third-party package locked in uv.lock and forbids uv from building any of them from source. A pre-commit hook keeps the list in lock-step with uv.lock. The setting is normally a no-op since uv prefers wheels; it activates only if an upstream stops publishing wheels for the target platform, in which case uv lock fails instead of silently building from an sdist.4. Source Restrictions
5. License Compliance
6. Build Integrity and Attestation
gh attestation verify.SHA256SUMS file, per-asset .sha256 files, and a machine-readable dist-manifest.json for every published wheel and the sdist. Per-artifact .sigstore Sigstore bundles and .intoto.jsonl DSSE envelopes accompany each asset, so downstream tooling can verify provenance without a separate attestation lookup. A crates-manifest.json records which Cargo crates were published by the release commit and which were already present from an earlier trusted-published commit.cosign verify-attestation or gh attestation verify.release GitHub Environment, eliminating long-lived API tokens. Each publish mints a short-lived token scoped to the specific repository, workflow, and environment.GITHUB_TOKEN scoped to the workflow run, removing the need for a long-lived personal access token.release, r2-develop, r2-nightly) so OIDC trusted-publisher identities and publishing credentials stay isolated from test, lint, and build-only jobs.dist-manifest.json and the expected PyPI publisher identity, verifies each crates.io entry was trusted-published by this repository, verifies the final GitHub release attestation, and verifies container image Sigstore signatures and SBOM attestations against the expected workflow identity. Releases that fail any verification step fail the pipeline.7. Access Control and Code Review
v* are immutable after creation.8. Pre-Commit Security Hooks
9. Runtime Cryptography
aws-lc-fips-sys) requires the Go toolchain as a build dependency. The underlying cryptographic primitives are identical in both modes; the FIPS module adds runtime self-tests and module boundary enforcement required for federal certification. Ed25519 signing uses ed25519-dalek, a pure-Rust implementation maintained by the Dalek cryptography project.10. Release Verification
gh attestation verify, binding the check to the release build.yml workflow identity. The release also ships per-artifact .sigstore Sigstore bundles and .intoto.jsonl DSSE envelopes for offline verification.docker.yml workflow identity.SHA256SUMS file or per-asset .sha256 file.11. Known Vulnerability Management
12. Incident Response
13. User Responsibility
14. Privacy
15. Changes to This Policy
16. Contact
NautilusTrader™ is a product of Nautech Systems Pty Ltd (ABN 88 609 589 237). Nautech Systems provides algorithmic trading software only. We do not operate as a broker, dealer, or exchange, nor offer financial advisory services. Users are solely responsible for compliance with applicable laws and regulations. Subject to non-excludable consumer guarantees, we make no warranties and accept no liability for trading losses or regulatory violations arising from use of the software. Read full disclaimer.
We use essential cookies and, with your consent, optional analytics cookies, as described in our Privacy Policy. Manage your Cookie Preferences.