Pranor Pulse

docker run -p 9090:9090 ghcr.io/vyuvaraj/pranor-pulse:latest

Pranor Pulse is a full-featured, enterprise-grade message broker for the Pranor ecosystem. It supports server-side STOMP brokering, browser-local OPFS-backed queueing, multi-protocol adapters (Kafka wire, MQTT v5), and advanced security (FIPS 140-3, post-quantum cryptography, blind E2EE).


Table of Contents


Key Features

📨 Core Broker

  • STOMP 1.2 message broker: Topic/queue routing with fan-out, competing consumers, and durable subscriptions
  • Exactly-once delivery semantics: Idempotent message IDs with deduplication window
  • DLQ + Exponential Backoff Engine: Failed messages automatically moved to Dead Letter Queue with configurable retry policies; exponential backoff with jitter
  • Point-in-time event replay: Replay messages from any historical offset on demand
  • Schema Registry & Validation: Embedded schema registry for message contract enforcement (Avro/JSON Schema/Protobuf); schema evolution with compatibility checks
  • Atomic Multi-Topic Transactions: ACID-style multi-topic publish/consume transactions
  • Cooperative Consumer Rebalancing: Sticky partition assignment with graceful rebalance on consumer join/leave

🌐 Browser & OPFS (Local-First)

  • OPFS Storage Driver (pkg/opfs): Full browser-native persistent queue using Origin Private File System
  • WASM/JS FFI bindings (@pranor/pulse-wasm): Use Pranor Pulse from the browser with a TypeScript SDK
  • SharedWorker multi-tab coordination: Single broker across all browser tabs via SharedWorker
  • Multi-tab OPFS leader election: navigator.locks-based lease protocol ensures only one tab acts as queue leader at a time
  • Client-side AES-256-GCM encryption at rest: Messages encrypted before writing to OPFS
  • WebTransport HTTP/3 QUIC relay: Browser outbox relay over QUIC for low-latency connectivity
  • Offline outbox & reconnect relay: Queue messages offline; auto-relay when connectivity restores
  • Auto-compaction & quota manager: Automatic OPFS quota management with configurable size limits
  • Client-side WASM stream filters: Run sandboxed WASM modules to transform/filter messages in-browser
  • Persistent storage eviction safeguard: Priority-based eviction prevents silent data loss at storage limits

🗜️ Storage & Compaction

  • Write-Ahead Log (WAL) with corruption recovery and CRC checksums
  • Topic Log Compaction Policy Engine: Key-based compaction (retain only latest value per key), tombstone purging, TTL-based retention
  • Tiered cloud storage offloading: Hot/warm/cold tier management with S3-compatible backend
  • Automated storage tiering & compaction: Background compaction scheduler with configurable policies

📡 Protocol Adapters

  • Kafka Wire Protocol Compatibility: Drop-in replacement for Kafka consumers/producers (Kafka binary protocol)
  • MQTT v5.0 IoT Gateway: Full MQTT v5 adapter — QoS 0/1/2, retain, session persistence, will messages

🔁 Streaming & CDC

  • Change Data Capture (CDC) Engine: Database change event streaming (row-level insert/update/delete events)
  • Real-time Stream SQL Windowing: Tumbling, sliding, and session windows with aggregations (COUNT, SUM, AVG)

🏢 Multi-Tenant

  • Multi-tenant VHosts & rate quotas: Isolated virtual hosts per tenant with per-tenant rate limits and storage quotas
  • Zero-Trust OAuth2 & SPIFFE auth: Per-connection authentication with SPIFFE workload identity attestation

Architecture

┌─────────────────────────────────────────────────────────────┐
│                       Pranor Pulse                              │
│                                                             │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────────┐  │
│  │ STOMP Broker │  │ Kafka Compat │  │  MQTT v5 Gateway │  │
│  └──────┬───────┘  └──────┬───────┘  └────────┬─────────┘  │
│         └─────────────────┼──────────────────-─┘            │
│                           ▼                                 │
│  ┌────────────────────────────────────────────────────────┐ │
│  │              Schema Registry & Validation              │ │
│  └────────────────────────────┬───────────────────────────┘ │
│                               ▼                             │
│  ┌────────────────────────────────────────────────────────┐ │
│  │    WAL Storage Engine │ Compaction │ Tiered Offload     │ │
│  └────────────────────────────────────────────────────────┘ │
│                                                             │
│  ┌─────────────┐  ┌──────────────┐  ┌────────────────────┐ │
│  │ DLQ Engine  │  │ CDC Streamer │  │ SQL Window Engine  │ │
│  └─────────────┘  └──────────────┘  └────────────────────┘ │
└─────────────────────────────────────────────────────────────┘

API Endpoints

MethodPathDescription
POST/api/v1/topicsCreate a topic
GET/api/v1/topicsList all topics
POST/api/v1/publishPublish a message to a topic
POST/api/v1/subscribeSubscribe to a topic (SSE or WebSocket)
GET/api/v1/consumersList consumer groups
GET/api/v1/consumers/{group}/lagConsumer group lag per partition
POST/api/v1/schemasRegister a message schema
GET/api/v1/schemas/{topic}Get schema for a topic
GET/api/v1/dlq/{topic}Browse DLQ for a topic
POST/api/v1/dlq/{topic}/replayReplay DLQ messages
POST/api/v1/replayPoint-in-time replay from offset
POST/api/v1/compact/{topic}Trigger log compaction for topic
GET/api/v1/transactions/{id}Query atomic transaction status
/metricsGETPrometheus metrics (per-topic lag, throughput, error rates)

Protocols Supported

ProtocolTransportNotes
STOMP 1.2TCP / WebSocketPrimary protocol
Kafka BinaryTCPWire-compatible; use existing Kafka clients
MQTT v5.0TCP / WebSocketIoT device support, QoS 0/1/2
OPFS (browser)WASMLocal-first browser queue
WebTransportHTTP/3 QUICBrowser outbox relay

Browser / OPFS Features

Install the browser SDK:

npm install @pranor/pulse-wasm
import { Pranor Pulse } from '@pranor/pulse-wasm';

const queue = new Pranor Pulse({ encryption: 'aes-256-gcm' });
await queue.publish('orders', { id: 1, item: 'Widget' });
await queue.subscribe('orders', (msg) => console.log(msg));

// Auto-syncs to server when online; stores locally when offline
await queue.enableOfflineSync({ serverUrl: 'wss://queue.pranor.net' });

Security

FeatureDescription
FIPS 140-3 & HSM key unsealingHSM-backed key management for regulated environments
Blind Broker E2EEEnd-to-end encryption — broker never sees plaintext
Post-Quantum Hybrid Crypto (PQC)X25519+Kyber hybrid key exchange
Tamper-Evident Merkle Audit LedgerAppend-only Merkle tree audit log for every message event
Inline WASM AI GuardrailsSandboxed WASM interceptors on message payloads
Byzantine Fault Tolerant ConsensusBFT Raft variant for tamper-resistant cluster consensus
Zero-Trust OAuth2 & SPIFFEPer-connection workload identity attestation
AES-256-GCM (OPFS)Client-side encryption for browser-local messages

Observability

  • Prometheus /metrics: Per-topic message rate, consumer lag, DLQ depth, compaction stats
  • OTel W3C Trace Context: traceparent header propagated per message through full pipeline
  • Pranor Console Queue Inspector: Live topic browser, consumer group lag dashboard, DLQ browser with one-click replay, schema registry browser

Kubernetes & Distribution

# Standalone daemon
pranor-pulsed --port 9090 --storage ./data --tls

# CLI
pranor-pulse publish orders '{"id": 1}'
pranor-pulse consume orders --group my-service
pranor pulse publish orders '{"id": 1}'   # Pranor integration

# Kubernetes Operator
kubectl apply -f pranor-pulsecluster.yaml

# KEDA auto-scaling
kubectl apply -f keda-scaledobject.yaml   # Scale consumers on lag

Multi-language client SDKs: Go, TypeScript/JS, Python, Rust, Java.

Cross-cloud active-active geo-replication with automated failover and conflict resolution.


Getting Started

docker run -p 9090:9090 \
  -e PRANOR_PULSE_STORAGE_PATH=/data \
  -e PRANOR_PULSE_OTEL_ENDPOINT=http://pranor-trace:4318 \
  -v queue-data:/data \
  ghcr.io/vyuvaraj/pranor-pulse:latest

Environment Variables

VariableDefaultDescription
PRANOR_PULSE_PORT9090Listener port
PRANOR_PULSE_STORAGE_PATH./dataWAL and segment storage directory
PRANOR_PULSE_OTEL_ENDPOINTOpenTelemetry collector URL
PRANOR_PULSE_S3_BUCKETS3 bucket for tiered offloading
PRANOR_PULSE_KAFKA_COMPATfalseEnable Kafka wire protocol adapter
PRANOR_PULSE_MQTT_PORTMQTT listener port
PRANOR_PULSE_FIPSfalseEnable FIPS 140-3 mode (EE)

Enterprise Edition

FeatureTier
Geo-Replication across cloudsEE
Kafka Protocol AdapterEE
FIPS 140-3 HSM & Sovereign SecurityEE
Inline WASM AI GuardrailsEE
eBPF Kernel Bypass & XDP AccelerationEE
Multi-Cloud Tiered Storage CompactionEE
AWS EventBridge & Enterprise Webhooks ConnectorEE
Multi-Cluster Kubernetes FederationEE
SIMD/AVX-512 Vectorized Filter EngineEE
Byzantine Fault Tolerant ConsensusEE
Post-Quantum Hybrid CryptographyEE