Skip to main content

RXON (Reverse Axon) - Lightweight Inter-node Reverse Communication Protocol

Project description

RXON (Reverse Axon) Protocol

EN | ES | RU

License: MPL 2.0 Python 3.11+ PyPI version

RXON (Reverse Axon) is a lightweight, extensible reverse-connection protocol designed for HLN (Hierarchical Logic Network) architectures.

It serves as the "nervous system" for distributed multi-agent systems, providing a strictly typed, Zero Trust foundation for inter-service communication.

🚀 Concept

In traditional networks, commands usually flow "top-down" (Push model). In RXON, the connection initiative always comes from the subordinate node (Shell) to the superior node (Orchestrator). This "Reverse Axon" architecture allows workers to operate behind NAT or Firewalls without complex network configuration, while maintaining a secure, bi-directional control channel.

✨ Key Features

  • Reverse Connection (PULL): Nodes connect to the orchestrator to pull tasks, ensuring compatibility with complex network environments.
  • Zero Trust Security: Built-in support for digital signatures (SecurityContext) and identity chains. All messages can be cryptographically verified across multiple holarchy layers.
  • Agnostic & Extensible: Core models (Resources, Skills, Tasks) are fully extensible via universal metadata and properties fields, making the protocol suitable for AI, IoT, and Robotics.
  • Universal Telemetry: Heartbeats include granular metrics for CPU, RAM, and any custom devices (Sensors, GPUs, Actuators) via the extensible HardwareDevice model.
  • Generic Event System: Unified signaling for progress updates, custom alerts, and real-time triggers with hierarchical event bubbling.
  • Smart Resource Matching: Formalized logic for hardware requirements using GE (Greater or Equal) logic for numbers and equality for strings.
  • Blob Storage Native: Direct support for offloading heavy data via S3-compatible storage (rxon.blob) to keep the control channel lightweight.
  • Zero Dependency Core: The protocol core is written in pure Python 3.11+. Standard transports use aiohttp and orjson for peak performance.

🏗 Architecture

The protocol is divided into two main interfaces:

  1. Transport (Worker side): For initiating connections, retrieving tasks, emitting events, and sending results.
  2. Listener (Orchestrator side): For accepting incoming connections and routing messages to the engine.

Smart Dispatching Logic

RXON formalizes the rules for matching tasks to holons:

  1. Identity Match: Direct match by device ID.
  2. Type & Model Match: Exact match by type, partial match by model string (case-insensitive).
  3. Property Match (Smart Comparison):
    • Numbers: Checked as at least (Worker value >= Requirement).
    • Others: Checked as strict equality.

🛡️ Error Handling

RXON defines a set of standardized, cross-platform error codes to ensure consistent behavior across different implementations:

  • CONTRACT_VIOLATION_ERROR: Data does not match the negotiated schema.
  • SECURITY_ERROR: Authentication or signature verification failed.
  • RESOURCE_EXHAUSTED_ERROR: Physical resources (RAM, VRAM) are insufficient.
  • DEPENDENCY_ERROR: A required service or artifact is unavailable.

🧪 Quick Start

from rxon.models import Resources, HardwareDevice

# Define worker resources
my_res = Resources(
    cpu_cores=8,
    devices=[HardwareDevice(type="gpu", model="RTX 4090", properties={"memory_gb": 24})]
)

# Define task requirements
req = Resources(cpu_cores=4, devices=[HardwareDevice(type="gpu", properties={"memory_gb": 16})])

# Standardized Matching (HLN Protocol)
if my_res.matches(req):
    print("This holon is ready for the task!")

📜 License

The project is distributed under the Mozilla Public License 2.0 (MPL 2.0).


Mantra: "The RXON is the medium for the Ghost."

Project details


Download files

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

Source Distribution

rxon-1.0b7.tar.gz (34.3 kB view details)

Uploaded Source

Built Distribution

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

rxon-1.0b7-py3-none-any.whl (30.1 kB view details)

Uploaded Python 3

File details

Details for the file rxon-1.0b7.tar.gz.

File metadata

  • Download URL: rxon-1.0b7.tar.gz
  • Upload date:
  • Size: 34.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Gentoo","version":"2.18","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for rxon-1.0b7.tar.gz
Algorithm Hash digest
SHA256 323261307a38d05129dcea9b361f2cb714d83871886fa5a63a50188f06ac1e88
MD5 41c4e0009b084db4d1af2f386b017a72
BLAKE2b-256 2c9f92fdc12f47ecba5b13c846b1b123b792fa588230b8d10db318b92d3502c4

See more details on using hashes here.

File details

Details for the file rxon-1.0b7-py3-none-any.whl.

File metadata

  • Download URL: rxon-1.0b7-py3-none-any.whl
  • Upload date:
  • Size: 30.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Gentoo","version":"2.18","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for rxon-1.0b7-py3-none-any.whl
Algorithm Hash digest
SHA256 2eaecae62af175c9274f2bfb4b5f0f4f02e5a1072d6472c875f170a6cd8fde4e
MD5 870e0ae9f83b8a7f69bc80570025b888
BLAKE2b-256 beeb229840eccca6e5f892b57ccb48682214cc70523f5fcd23e146f317b87255

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page