Skip to main content

Nodrix 1.2.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.2 highlights

Keep the graph readable and move replaceable node settings into blocks/:

name: raspberry-vision
profile: realtime-low-latency

blocks:
  camera: blocks/camera.yaml
  detector: blocks/detectors/yolo26n-320.yaml
  output: blocks/outputs/lan-preview.yaml

flow:
  - camera.frame -> detector.frame
  - camera.frame -> output.frame
  - detector.detections -> output.detections
# blocks/detectors/yolo26n-320.yaml
use: vision.ncnn_detector
model: models/yolo26n-320.ncnn
imgsz: 320
conf: 0.18
nodrix block list
nodrix block inspect blocks/detectors/yolo26n-320.yaml
nodrix validate --block detector=blocks/detectors/rtdetr-640.yaml
nodrix run --block detector=blocks/detectors/rtdetr-640.yaml \
  --set detector.conf=0.12
nodrix inspect --resolved

Blocks are expanded before validation and graph construction. They do not add processes, queues, copies, or serialization boundaries.

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]"

Raspberry Pi and offline source installation

Nodrix 1.2.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/RELEASE_1.2.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.2.1.tar.gz (226.2 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.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (487.6 kB view details)

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

nodrix-1.2.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (487.5 kB view details)

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

nodrix-1.2.1-cp314-cp314-macosx_11_0_arm64.whl (198.4 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

nodrix-1.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (487.3 kB view details)

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

nodrix-1.2.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (487.1 kB view details)

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

nodrix-1.2.1-cp313-cp313-macosx_11_0_arm64.whl (198.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nodrix-1.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (487.4 kB view details)

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

nodrix-1.2.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (487.2 kB view details)

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

nodrix-1.2.1-cp312-cp312-macosx_11_0_arm64.whl (198.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nodrix-1.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (485.1 kB view details)

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

nodrix-1.2.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (485.2 kB view details)

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

nodrix-1.2.1-cp311-cp311-macosx_11_0_arm64.whl (198.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for nodrix-1.2.1.tar.gz
Algorithm Hash digest
SHA256 fce5df39c27d4b7c9cce849660649360c51c4826e94404d4452604263f719152
MD5 a26aa63085ce4212b8f3e10d650b0808
BLAKE2b-256 9a5257074b2ca9e5533623f7ed0e3c1d4237d9fb651f57201f826006ab0f0bad

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c4f2de017d476b7dd485464eade6aed2571c8d14cd639b62c2e1fce37ffad909
MD5 393266f6d2e80922680dab4197f76545
BLAKE2b-256 9a43f7dae5f3c8f0522a8bb8846d920267cd56e1758da64ee957f045e3f3a1ca

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bd38967b01f1558a9e1ed291dfaf3867e4d63d581b47c4f7a99d588494e8e6d2
MD5 f4245b25b5e977fc69ea680e462af5d1
BLAKE2b-256 a4020ecab60e69d1045fece9f89357fa54db3f673caa7b0d0f7aca88ea810d19

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 546cee2bc5e551bb1e843c3de6e4021577ee38486c56976bf20a1a9f5c7b5b10
MD5 13a5b64656f4f6fb8ae3d7ca14068e8e
BLAKE2b-256 8542d4339dfd145bcbfe4902aefa255d791632b158a9dcddc63d5c10fae441b4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 57ac1b73be6d535585f31ddfb373c6dc881430f3e0332f1263694f032eadb05c
MD5 0e0152b14427eb2606062a764b8551ec
BLAKE2b-256 9af3bf2868fc84ee7bb4887a2226b68f9e84b6780a23b913e96742b65bb8e9c1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e15bab7dd39babb42296018f3c23889d3a430235a13a8b322bd03ed085f3f86a
MD5 5938c6aa3be52aac48e01979d9e59e23
BLAKE2b-256 c18a92850a6de29b193ab57f2868a11e83a16d3dffb345ae9ccd8afd85a602ed

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b95577d961343de91a87f2de1ce9f4ac56ba37a8643c2309c8b57cf85d8d8cf2
MD5 e3c91fb008044aaa0036a429fc727536
BLAKE2b-256 9483328c7638ee1eaf5756ece2e5d5328fd8650ed6f8c469f126e1d46a81fe2b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2d517a9d3cfaacd8e579dceb64800daf05cdf77e528a4317b4265726a9528c54
MD5 08c29a1ddeb39771f6a77210cab78ede
BLAKE2b-256 a6733d31154d513265a013c9b46ff68a0d9637d7865fcbfb658185eda9a72c8d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 435d5245b78c56f6c42903836d8b4e7982dc70022f7e98fa7159473b51dc618c
MD5 cbe42249c873c421beb6754e6278ae54
BLAKE2b-256 c3becaa62fc4b9035e4ceb6522449426072b445654134b42c83da4f73ac1dddb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 60c61520c22d2742a449321ab1e797ea302fe71a1e33dd3b9bed0632b2f9ecc7
MD5 0598d17b1d979be7d436cb3df8ac93c2
BLAKE2b-256 3e7698b6b65f16b16f149b6cbf3ec8eeeedb10cc86e7b629623e89e4197533e5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1ad8f1d5fd64a0eba899a6b46dde18751a5734b52d3290a6f84770d13a75807a
MD5 d856756e16eb6764dfb8819ae01de921
BLAKE2b-256 6d00a9a73c192fe0f6fc0e51d6f2705aa48f58bdf3091b24837944883cb34f8c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 dc277d74721db30b63a0033f6307b24a41e58321f85595c0cf800410bfcfbfe3
MD5 d48c611c95f3c5958f8ab1eceaed9911
BLAKE2b-256 def57997ef7b7060cba15691dc14cf3ee585d4bbf70a55edc0e6aaffc2618b31

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4acf2eaf40149e355c2f5b27b1383098185e2291f0ca1041a66e622b927a6619
MD5 6a6fa18f796ff319eb77c9c8af5d37f8
BLAKE2b-256 4a2f4ec6ba6e452485f10dd5c00885b52ae5697a498f0fc7880bf84cafda15ee

See more details on using hashes here.

Provenance

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

1.4.1

13 files

1.4.0

13 files

1.3.0

13 files

This release

1.2.1 This release

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