Skip to main content

Nodrix 1.2.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.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.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/RELEASE_1.2.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.2.0.tar.gz (223.4 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.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (487.4 kB view details)

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

nodrix-1.2.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (487.3 kB view details)

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

nodrix-1.2.0-cp314-cp314-macosx_11_0_arm64.whl (198.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

nodrix-1.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (487.1 kB view details)

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

nodrix-1.2.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (486.9 kB view details)

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

nodrix-1.2.0-cp313-cp313-macosx_11_0_arm64.whl (198.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nodrix-1.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (487.1 kB view details)

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

nodrix-1.2.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (486.9 kB view details)

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

nodrix-1.2.0-cp312-cp312-macosx_11_0_arm64.whl (198.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nodrix-1.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (484.9 kB view details)

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

nodrix-1.2.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (485.0 kB view details)

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

nodrix-1.2.0-cp311-cp311-macosx_11_0_arm64.whl (198.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: nodrix-1.2.0.tar.gz
  • Upload date:
  • Size: 223.4 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.0.tar.gz
Algorithm Hash digest
SHA256 ed23d42adaca8769aefdd2ef65a01e38f5a99f46f8e6268ce28468a7422ff734
MD5 e38879b192b51fccc852140f78dec2ee
BLAKE2b-256 339439f5904106ad90cb4821edae5ab1a4e376e8c304698e680131450ea158d1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ff6b5b946fc091ccc9936691dfe13e446d354f13c52b96186ef2ab5a46bc7907
MD5 44c425b6e207955be30b968a3a4f1f69
BLAKE2b-256 2ec2f41a646b4caa81b52f8534ac949b3c2c97aab0171e02daf4ef26db06a5c1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3e1d0f40d85022ee6a9d139d9d64ad67a01bec39258a2736bef126ba09807db7
MD5 a9b74a601fe6e8fa8fb3d5fe8e42b8a4
BLAKE2b-256 d139619594cf7a54c185bd30a661ea432e73230f1a9edfb0a31796293be2b014

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6334fb657b816a1984353946b8ba2c45de0d1dee828f9511a183a12453f01ad9
MD5 59cfeb3d85e4a5462ea48bef5fce6cb9
BLAKE2b-256 22b7434b7a3b4f6b5288427fe89b1b889af1f84d54b0bcd4dc723b6958e52519

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d22cd0f47e46b5d2af58afcd23f105ddd7105c79cb2fe96a787a587f6b4523f4
MD5 5b1a6d1238bafcd5e02c19bba2d8008e
BLAKE2b-256 a6f222f7e47087bc10164ee7b51fb9708ed7b307783821a7275f5ace74798ce8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 57c7317a04fb9ddd37992725f7f738d2c3ad2115e3207b8bc87e489346fec55f
MD5 9a19b2e90ecc2fc5b39943b6078a0879
BLAKE2b-256 f85d5c3f042f9ae0036a0b3d0142826bff69113b2e328fec3d2378f90514a9df

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 82b7da486f2bb49e054b9f046dc4c5d22d4c743718c18e74be203e61ea92d192
MD5 a767ab4c23cc1ec455b041016d44c4cc
BLAKE2b-256 03aab22088e6a6b83bda2a7fa71aa72a965b4b9bcb0f257223bc1078a904a00e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b42345f9b795aa4f48ca28c9352017a72cf65573e09eec96b5cdad436c5f13b0
MD5 52de92ec68824f2f39d62beb3d3e9b80
BLAKE2b-256 7418567e1c718ddc675de7314ec63d31d2b355e347474cf81811ca127941762f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ec9d9456dffbee0dd81c0c641a129ca4c36a16a94f9e93f02d11ad8d5ae93261
MD5 8fd06f9f86193bcd81d3b7a807df1cab
BLAKE2b-256 e447fbc3b05398b83d0ba832f7457ae47a454d0191368b4b6d68e568c36ab672

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d3b20fa7e9981862aa299bd18cbbfd219fe95fddc89f730c73aea9cb9c661265
MD5 58ab0ea81a4f0dfa4cbb03c3484fbb33
BLAKE2b-256 4d3e3d960b21cc908901e089bf7dc9ab91c5cf3d741d214868aad29e25179592

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6e76e39dca5ed4ee301b515b0c41724aa561324349137c3e950565785f845847
MD5 25eca2456559a829cdb6b009a2702ea7
BLAKE2b-256 3f388eea90a2cfe8ceefcbba624afbf69b294c0ad6041a4c6f690424c7f48d4c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 373321dd1d2ab4aeaef5794c57e7aefd533e5a29a2a1e5256e1dacdc6208e701
MD5 445a2bf24bf115e52f6da1c4421d1025
BLAKE2b-256 6510db5b9776d4177abad717f1010b2702acf290ffe59131ef137362b0cbb6be

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nodrix-1.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6bcbd5e085becfab4be090032905d19c481b7ef590a2af2c7bba348130a5b845
MD5 77ff0611c7813b58bc3ab1d29494dc39
BLAKE2b-256 059b685624b087a236bdd3aee93f49b969ca6620f90b1b4dcf8069febb81778e

See more details on using hashes here.

Provenance

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

1.4.0

13 files

1.3.0

13 files

1.2.1

13 files

This release

1.2.0 This release

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