Skip to main content

Nodrix 1.4.1

PyPI Python CI License

Nodrix is a high-performance typed runtime for local and distributed streaming graphs. It runs Python and C++ nodes in one graph, preserves zero-copy paths where the memory domain permits, and makes every copy, drop, restart, queue, and network export observable.

Nodrix 1.4 highlights

Benchmark complete pipelines with named variants and reproducible artifacts:

nodrix benchmark pipeline.yaml --warmup 1 --repeat 3
nodrix benchmark --spec examples/vision_production/benchmark.yaml
nodrix runs compare <run-a> <run-b> --table
nodrix replay <run-id>

Every suite stores measured and warm-up runs separately, aggregates latency/rate/drop/resource metrics, captures a filtered environment snapshot, and hashes discoverable local model files.

Core model

Pipeline manifest
       ↓ validate / lock
Executable typed graph
       ↓
Node → Port → Edge → Node
       ├─ in-process zero-copy
       ├─ shared-memory process isolation
       ├─ device-memory contracts
       └─ named LAN streams

No detector, tracker, camera, or fixed stage is mandatory. A graph can be Capture → Inference → Output, Source → Sink, a branched media graph, LiDAR processing, audio, or custom typed data.

Install

Install the core runtime and CLI from PyPI:

python3 -m venv .venv
source .venv/bin/activate
pip install nodrix
nodrix --version

Optional media and viewer dependencies:

pip install "nodrix[viewer]"
pip install "nodrix[media]"
pip install "nodrix[vision-ncnn,media,viewer]"

Raspberry Pi and offline source installation

Nodrix 1.4.1 can be built without PyPI build isolation when the runtime dependencies are already present:

python3 -m pip install . --no-build-isolation --no-deps

Use scripts/install_offline.sh for a dependency preflight. See docs/OFFLINE_INSTALL_RU.md.

For an isolated CLI installation:

pipx install nodrix

GitHub Releases provide prebuilt Linux x86-64, Linux ARM64 and macOS Apple Silicon wheels. When a compatible wheel is unavailable, pip builds the included C++20 extensions from the source distribution, which requires a C++ compiler and Python development headers.

Empty project and templates

nodrix init my_project

This creates an intentionally empty project skeleton. Runnable examples are explicit:

nodrix init camera_app --template vision
nodrix init media_app --template media
nodrix init device_app --template device
nodrix init package_app --template package

Run and reproduce

cd my_project
nodrix validate --strict
nodrix lock
nodrix run --locked

Every run receives its own artifact directory:

.nodrix/runs/<run-id>/
├── manifest.yaml
├── resolved-manifest.yaml
├── nodrix.lock
├── runtime.json
├── environment.json
├── status.json
├── metrics.jsonl
├── errors.jsonl
├── logs/
├── outputs/
└── summary.json

Stable Python API

from nodrix import Message, Node

class Multiply(Node):
    input_types = {"input": "core.object"}
    output_types = {"output": "core.object"}

    def process(self, inputs):
        message = inputs["input"]
        return {
            "output": message.with_updates(
                payload={"value": message.payload["value"] * 2}
            )
        }

Nodrix 1.x preserves the public Node, SourceNode, SinkNode, Message, NodeContext, buffer, memory, and lifecycle contracts. Existing 0.x nodes that override open, flush, and close continue to work through lifecycle adapters.

Lifecycle and health

Lifecycle states:

created → configured → starting → running → draining → stopping → stopped
                                      └→ failed / restarting
nodrix status
nodrix health
nodrix health --watch

Process-isolated nodes can use watchdog recovery:

nodes:
  detector:
    uses: ./nodes/detector.py:Detector
    execution:
      isolation: process
    failure:
      policy: restart
      max_restarts: 5
    health:
      timeout_ms: 2000
      on_timeout: restart

Local packages

nodrix init my_nodes --template package
cd my_nodes
nodrix package build .
nodrix package install dist/my-nodes-1.0.0.ndpkg

Use an installed node by stable package reference:

nodes:
  processor:
    uses: my-nodes/passthrough

.ndpkg installation checks archive paths and SHA-256 checksums. No public marketplace or remote-code installation is enabled in 1.0.

Secure named streams

Only explicitly exported ports become network streams. Local edges remain direct and do not pay network or serialization overhead.

streams:
  bind_host: 0.0.0.0
  max_message_bytes: 67108864
  exports:
    - name: /camera/front/h264
      from: encoder.encoded
      queue:
        capacity: 1
        policy: latest
      access:
        mode: token
        token_env: NODRIX_CAMERA_TOKEN
        allow_ips: ["192.168.1.0/24"]
export NODRIX_STREAM_TOKEN=...
nodrix stream echo /camera/front/h264
nodrix-viewer /camera/front/h264

Production validation

nodrix validate --strict
nodrix inspect --memory

The validator checks graph cycles, port/type compatibility, memory transfers, unsupported copies, open LAN streams, stream backpressure, watchdog/isolation conflicts, resource configuration, and native plugin loading.

Metrics, resources and runs

nodrix run --metrics-listen 127.0.0.1:9464
nodrix top
nodrix metrics --format prometheus
nodrix runs list
nodrix runs show <run-id>
nodrix runs compare <run-a> <run-b>

Native ABI 1.0

nodrix native inspect ./libdetector.so

Nodrix Plugin ABI 1.0 uses numeric ABI 65536 and feature flags for typed ports and memory-domain contracts. Incompatible plugins are rejected before node creation.

Main capabilities carried into 1.0

  • Python/C++ unified graph executor;
  • native bounded queues and reusable buffer pools;
  • shared-memory process isolation with zero-copy input/output paths;
  • CPU, shared, DMA-BUF, CUDA, ROCm, Vulkan, OpenCL, Metal, NPU and external-memory contracts;
  • DLPack interoperability;
  • .ndrx universal record/play;
  • FFmpeg Media Pack and H.264/H.265 named streams;
  • low-latency nodrix-viewer;
  • typed custom-message generation for Python and C++;
  • local/LAN stream discovery without a mandatory agent.

Honest limitations

Nodrix 1.0 stabilizes the contracts and production control plane. Hardware-specific CUDA IPC mapping, full V4L2 DMA-BUF capture/requeue, native libav nodes, QUIC/UDP data plane, TLS certificates, ROS 2 bridge, and ready-made detector/tracker packs remain later backends or releases.

See docs/BLOCKS.md, docs/COMPACT_MANIFEST.md, docs/PROFILES.md, docs/RESOURCE_TELEMETRY.md, docs/BENCHMARKING.md, docs/RELEASE_1.4.1.md, CONTRIBUTING.md, and PUBLISHING_RU.md.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nodrix-1.4.1.tar.gz (258.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

nodrix-1.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (511.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

nodrix-1.4.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (511.0 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

nodrix-1.4.1-cp314-cp314-macosx_11_0_arm64.whl (221.9 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

nodrix-1.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (510.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

nodrix-1.4.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (510.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

nodrix-1.4.1-cp313-cp313-macosx_11_0_arm64.whl (221.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nodrix-1.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (510.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

nodrix-1.4.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (510.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

nodrix-1.4.1-cp312-cp312-macosx_11_0_arm64.whl (221.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nodrix-1.4.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (508.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

nodrix-1.4.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (508.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

nodrix-1.4.1-cp311-cp311-macosx_11_0_arm64.whl (221.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file nodrix-1.4.1.tar.gz.

File metadata

  • Download URL: nodrix-1.4.1.tar.gz
  • Upload date:
  • Size: 258.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for nodrix-1.4.1.tar.gz
Algorithm Hash digest
SHA256 b687f84c47c75973999ea8d02132561b6c8ec9f5aa924847954dbb22ff67dcaa
MD5 ec0ecb027506f3f2d6ad40035e80f4d6
BLAKE2b-256 919a389a3ee28118dce086a2510bf635e40210bf200574b3c8d7529a1d5b5cba

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.1.tar.gz:

Publisher: publish.yml on CactysFedya/nodrix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nodrix-1.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e2901b227a8fc442fe6754c2a41ac64b54893784bfc9d1ecfb79a27798bd77e1
MD5 ed2a80b1b32eb79fabab19b34962cd0f
BLAKE2b-256 32056ad1b631f29e0cabc1fe357e56253e58b837738b2bf669469d2bab56b633

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on CactysFedya/nodrix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nodrix-1.4.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 78e7fb646c4f0273d54414bbd778a0e877db613d8327f58e8c52930ffcd9b865
MD5 9a123a1466f84af2b133aa11d0aa039f
BLAKE2b-256 412eb75db4dd7c3acb6841ef5e5534fe545ca0176f482cc02c5cd8b7081ee387

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on CactysFedya/nodrix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nodrix-1.4.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 efdf4032176e2cb6173438357bc9f4c036f10b7143c59062bab991e153481f70
MD5 fc8eac943c8c138a0496635fb3fb864e
BLAKE2b-256 bc9b90f66f57b7d04fbba869ff66154b11eae6023155da361c372e1a16c2b776

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.1-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on CactysFedya/nodrix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nodrix-1.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 93b0e104b6df254455b2249a41c21ad29e87cbfb638c38e66f8eb7cd078b54a5
MD5 79f8315ebfb0f7c949f98f443950ed66
BLAKE2b-256 49e557f05704e52fda6ca3c272ea16045e1e57e834dc93d079f187e7e9073c41

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on CactysFedya/nodrix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nodrix-1.4.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b7e15a12c7d7f21e0cbb64a0207f428335b988956a9fa17517776b8f3c3e93ef
MD5 6f5a2aaee55a66232e0c530801d3d16e
BLAKE2b-256 72f025af0c3e2ac6182995118dd45759a980bb931d2e420654844929fc13ce61

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on CactysFedya/nodrix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nodrix-1.4.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 948c8c8828840758539bb302ee21a60516ffb095086fde8a1e6915f9ae941d02
MD5 2fa8fcde8e3332ee37b8592715423479
BLAKE2b-256 f89ad00ff40c5e47db4fd4f51f55b9e6a87b4ca30cd540cc0f132bcb1f53eae8

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.1-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on CactysFedya/nodrix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nodrix-1.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9f6d3a0029522cb38118f9146e75d049acf4eaa152fc942e2ed3f216a1a54ec1
MD5 268a3e828ccb4c06b1befd9de27be517
BLAKE2b-256 160da86928d7788b197fde7aebd4a07b63c2512ccbc99b84828b13426de9c856

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on CactysFedya/nodrix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nodrix-1.4.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1416f697c05982401dc9a174e482bcbaf931f9a27a53ab28959a2a68e4aa69da
MD5 5565e08a2cb70f7e46533c27d1202523
BLAKE2b-256 6d421259b53a878ca1c9b4e74819e7afd29c7e568c21a4f3c27c80773a2fb89b

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on CactysFedya/nodrix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nodrix-1.4.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8009ae4a072218ef27b0a14eefbe3f60dbfa9e473f1af6b7dc841581e566c627
MD5 a1e41ab8c611c6617874295e3ccd7199
BLAKE2b-256 3c04ba38008ea296b8a731ac2b4fcddd360f33e5fecb4a588a6798a5d06080f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on CactysFedya/nodrix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nodrix-1.4.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8702ef9ef12c0f40affdd849f100d4141704daaddfaacb0b2e264475ef6c9888
MD5 20cda6288826315dd6129cc25d556c67
BLAKE2b-256 76fa53a1d086da137e6167ef99c7b5110626fcd793ce625a4a99758fedb8f0a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on CactysFedya/nodrix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nodrix-1.4.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 74114946cc98b0b5e6b17b1b260628598ce6b115505af9f25bd2c9580669006f
MD5 f729b0610fb1c011e853bf412c6cfb81
BLAKE2b-256 c2d8d700ba8a77e8810d8c0616a8f2fe34a4dcc86b0f2122454c73c71a505921

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on CactysFedya/nodrix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nodrix-1.4.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e8616d2e89bd1156449856b09cfec7827dc6c06ebc6ae434df55a05af1d649eb
MD5 29f2d26483f72b755031bbdf72978cf9
BLAKE2b-256 05735e7295a5f92bc20dada8a8954f11cda05877e1668e00946fde4652304c48

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on CactysFedya/nodrix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

2.8.0

1 file

2.1.0

17 files

2.0.0

17 files

This release

1.4.1 This release

13 files

1.4.0

13 files

1.3.0

13 files

1.2.1

13 files

1.2.0

13 files

1.0.0

13 files

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