Skip to main content

Nodrix 1.4.0

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.0 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.0.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.0.tar.gz (252.1 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.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (506.4 kB view details)

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

nodrix-1.4.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (506.2 kB view details)

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

nodrix-1.4.0-cp314-cp314-macosx_11_0_arm64.whl (217.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

nodrix-1.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (506.1 kB view details)

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

nodrix-1.4.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (505.8 kB view details)

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

nodrix-1.4.0-cp313-cp313-macosx_11_0_arm64.whl (217.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nodrix-1.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (506.1 kB view details)

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

nodrix-1.4.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (505.9 kB view details)

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

nodrix-1.4.0-cp312-cp312-macosx_11_0_arm64.whl (217.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nodrix-1.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (503.9 kB view details)

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

nodrix-1.4.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (504.0 kB view details)

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

nodrix-1.4.0-cp311-cp311-macosx_11_0_arm64.whl (217.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: nodrix-1.4.0.tar.gz
  • Upload date:
  • Size: 252.1 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.0.tar.gz
Algorithm Hash digest
SHA256 595a984f2cfb038367911f4e7c1416ecf5381b5b94bc7e687884fbd1bcd5d70a
MD5 292525338b95486aefc67c81fc143762
BLAKE2b-256 7cba12f458cbc0ebe91c1dda88bbcb47f93c2d7dc1d47923ff7ba28034842f34

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.0.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.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 65d444cacd03075cb086fa7d9b9f08d526a7532437cde46b0d1342b906dae7ef
MD5 61eea81d6e738c1edae86eef6d4a7fbc
BLAKE2b-256 98a736761bc9cb0a92b7f7de9c8e0d8bbd6ac81747df0c1a4f5583cae45f4565

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.0-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.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2464ada7a58217a45109ca6b8c5f71d36642f0bd9f8571613da6c8002ff9c3ac
MD5 f33bb3a90c45699e2d9b33df5eb0a822
BLAKE2b-256 69fdf767bcbc5d34c99d931b45fb653de5924c78e9f5d6e5e7a331c0b07c9e1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.0-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.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5367e0b5c597514cd347731349dbb8400d22a095a63a4bd6e8920ee6d31c8e9d
MD5 1926e4d149e59a83d45c3c53b20a7f12
BLAKE2b-256 e8be9d350af8abe653b44b5f5f8bf522903eec8becd98ff1f5a1fe5a4ed05308

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.0-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.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0b4c952a3d8169d5d52f0a9332d948d2ddf935c322e62bb835c227415b88295e
MD5 e4ef0dcdd91b35c4b691b21535102f74
BLAKE2b-256 fdac072b1b1433c789cec7c5891b211cbc82dcf27e86c2b154c542e088f9a860

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.0-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.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2ae1f4da1884c20ff8f4ebab9df893468c80151da749d43c9bd842385e5945b8
MD5 471045b7575f1f2c9ae3c3628f171ae9
BLAKE2b-256 6aa9eadc5bc2a46478de0d395a18f8840174405ffb3dc25986b3de04d7283b25

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.0-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.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a3b5f2387ec19a026229d782cd99ac5e378d53cd78402144401fef5384e354eb
MD5 adc03962397d57cd2eb91b6b647b0c31
BLAKE2b-256 7d52e3ca8fab268cf2f77dc72b9b1691741710ac9dce9b458f372db417185e43

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.0-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.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d0c6ebecff8bb2ee150aa5e95bbf72d26074d18980a1510b617e7b0025525c9c
MD5 74c22d18099cd7787edf2733721aff5c
BLAKE2b-256 65038a10256cfa68d846b2206390dac3d613489982b5bd6fc7026274d05cb112

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.0-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.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 84d8e8ae73f64f6723d3f2c01092aa4a7516bc79f0d7778f768a734969bc3ebf
MD5 5d8b7b931acb1437bd45922871ee4668
BLAKE2b-256 aac8f6804d0ab9ed10277e47fed24ba36bf875ab070cbdf84f83fc40c85f7bb6

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.0-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.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d67bb88173fa43c3a964f1bde341534cdbe998224f440a1020a9198bee7db6a6
MD5 dbe5de7c9f25bab9ec0ea9f7b04372f5
BLAKE2b-256 b4a74c970d259f84a02a60a6dbc6c71f0a378f05d9bbf34e091d5ed07f88433a

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.0-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.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 29e91807ad91e6661e4a7f31e89ded2bb63d6baf801eb727321e07c068214082
MD5 c227cbc723d09fb468f4725e82d56483
BLAKE2b-256 c541579c2fc3c8f31f9843959a317372279afe588d3a44821ffa210039f2bc32

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.0-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.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 67148a33667d0100943d364155e8b96a6e805e47d20a6803fbcca9c1f16ca906
MD5 957cb090f9c56cb7a71358ca4c6a4a83
BLAKE2b-256 800173be34bece825261488b2bf7737639fd5f6a4812646c229925e48855bf4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.0-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.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nodrix-1.4.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c6be2e0a39ef98b2f3117bec8e0937c68d0d8715b9251793e3cb5ac522cfb435
MD5 8523f35fc5ca0d07ba7d294b9e51fcad
BLAKE2b-256 cbb813ff5309568d14c909307b6c65c4bb9ab68aff1e4a357c1e3f31f4142ecc

See more details on using hashes here.

Provenance

The following attestation bundles were made for nodrix-1.4.0-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

1.4.1

13 files

This release

1.4.0 This release

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