Majra
مجرا (Arabic/Persian: conduit, channel) — Distributed queue & multiplex engine for Rust
Majra provides shared messaging primitives for the AGNOS ecosystem, eliminating duplicate pub/sub, queue, relay, and heartbeat implementations across AgnosAI, Ifran, SecureYeoman, and daimon.
Pure Rust, async-native — built on tokio, zero-copy where possible.
Features
| Module | Feature | Description |
|---|---|---|
| pubsub | pubsub |
Three-tier pub/sub: DirectChannel (73M msg/s), HashedChannel (16M msg/s), TypedPubSub (1.1M msg/s with wildcards) |
| queue | queue |
Multi-tier priority queue + ManagedQueue<T> with GPU-aware scheduling |
| relay | relay |
Sequenced, deduplicated relay with request-response correlation + circuit breaker |
| transport | relay |
Pluggable transport trait + connection pool with stale eviction and circuit breaker |
| ipc | ipc |
Length-prefixed framing over Unix domain sockets |
| ipc-encrypted | ipc-encrypted |
AES-256-GCM encrypted IPC with key rotation and nonce exhaustion tracking |
| heartbeat | heartbeat |
TTL-based node health: Online / Suspect / Offline with GPU telemetry and fleet stats |
| ratelimit | ratelimit |
Token bucket (RateLimiter) + sliding window (SlidingWindowLimiter) rate limiters |
| barrier | barrier |
N-way barrier sync with deadlock recovery + async arrive_and_wait() |
| dag | dag |
DAG workflow engine with durable execution (resume), retry, error policies, pluggable storage |
| fleet | fleet |
Distributed job queue with work-stealing across nodes |
| namespace | always | Multi-tenant scoping for topics, keys, and node IDs |
| metrics | always | MajraMetrics + NamespacedMetrics + PrometheusMetrics |
| redis | redis-backend |
Cross-process pub/sub, queues, distributed rate limiter, distributed heartbeat |
| postgres | postgres |
PostgreSQL-backed workflow + queue storage with connection pooling |
| ws | ws |
WebSocket bridge — fan out pub/sub topics to WebSocket clients |
| quic | quic |
QUIC transport with multiplexed streams and datagrams |
Default features: pubsub, queue, relay, heartbeat.
Quick Start
[]
= "1.0"
Three-Tier Pub/Sub
use ;
// Tier 1: DirectChannel — 73M msg/s, raw broadcast, no routing
let fast = new;
let mut rx = fast.subscribe;
fast.publish;
// Tier 2: HashedChannel — 16M msg/s, hashed topic routing + timestamp
let hashed = new;
let topic = new;
let mut rx = hashed.subscribe;
hashed.publish;
// Tier 3: TypedPubSub — 1.1M msg/s, MQTT wildcards, replay, filters
let hub = new;
let mut rx = hub.subscribe_filtered;
hub.publish;
Managed Queue (GPU-aware scheduling)
use ;
use Duration;
let queue = new;
// Enqueue a GPU training job.
let id = queue.enqueue.await;
// Dequeue only what fits available resources.
let pool = ResourcePool ;
if let Some = queue.dequeue.await
Relay with Request-Response
use Relay;
let relay = new;
let mut sub = relay.subscribe;
// Fire-and-forget broadcast.
relay.broadcast;
// Request-response (RPC pattern).
let = relay.send_request;
// Await reply with timeout...
Multi-Tenant Isolation
use Namespace;
use PubSub;
let hub = new;
let ns_a = new;
let ns_b = new;
let mut rx_a = hub.subscribe;
hub.publish;
// Only tenant-a receives the message.
Distributed Rate Limiting (Redis)
use RedisRateLimiter;
let client = open.unwrap;
let limiter = new;
if limiter.check.await?
Fleet Heartbeat with GPU Telemetry
use ;
let tracker = default;
tracker.register_with_telemetry;
let stats = tracker.fleet_stats;
Architecture
majra
├── pubsub ── TypedPubSub<T>, PubSub, wildcard matching
├── queue ── PriorityQueue, ManagedQueue, DagScheduler
├── relay ── Relay (dedup, request-response), Transport, ConnectionPool
├── heartbeat ── ConcurrentHeartbeatTracker, GpuTelemetry, FleetStats
├── ratelimit ── RateLimiter (token bucket)
├── barrier ── AsyncBarrierSet
├── dag ── WorkflowEngine, WorkflowStorage (InMemory, SQLite, PostgreSQL)
├── fleet ── FleetQueue (work-stealing)
├── ipc ── IpcServer, IpcConnection
├── ipc_encrypted ── EncryptedIpcConnection (AES-256-GCM)
├── namespace ── Namespace (multi-tenant scoping)
├── ws ── WsBridge (WebSocket fan-out)
├── redis_backend ── RedisPubSub, RedisQueue, RedisRateLimiter, RedisHeartbeatTracker
├── postgres_backend── PostgresWorkflowStorage
├── metrics ── MajraMetrics, PrometheusMetrics
├── envelope ── Envelope, Target
└── error ── MajraError, IpcError
Ecosystem
| Consumer | What majra replaces |
|---|---|
| Ifran | Job scheduler, fleet heartbeat, rate limiting |
| SecureYeoman | EventDispatcher, A2A heartbeat, rate limiter, DAG workflow, swarm barriers |
| AgnosAI | Priority DAG scheduling, pub/sub wildcards, relay dedup, barrier sync |
| daimon | Topic routing, fleet relay, IPC framing |
| stiva | DagScheduler for compose ordering, HeartbeatTracker for container health |
Building
License
AGPL-3.0-only