Skip to content

Architecture

Nexo runs as a single binary that exposes 4 distinct brokers and a built-in dashboard.

  • Zero Dependencies: No external databases, no JVM, no Erlang VM. Just one executable.
  • Thread-Isolated: Each broker runs on its own dedicated thread pool. Heavy processing on the Queue won't block Pub/Sub latency.
  • Unified Interface: A single TCP connection handles all protocols, reducing connection overhead.
  • Embedded Observability: The server hosts its own Web UI for instant visibility into every broker's state.

System Diagram

                         ┌──────────────────────────────────────┐
                         │              NEXO SERVER             │
                         │                                      │       ┌──────────────┐
                         │   ┌──────────────────────────────┐   │──────▶│     RAM      │
                         │   │            STORE             │   │       │  (Volatile)  │
   ┌─────────────┐       │   └──────────────────────────────┘   │       └──────────────┘
   │   Client    │──────▶│   ┌──────────────────────────────┐   │
   │  (SDK/API)  │       │   │            PUBSUB            │   │
   └─────────────┘       │   └──────────────────────────────┘   │
                         │   ┌──────────────────────────────┐   │       ┌──────────────┐
                         │   │            QUEUE             │   │──────▶│     DISK     │
                         │   └──────────────────────────────┘   │       │  (Durable)   │
                         │   ┌──────────────────────────────┐   │──────▶└──────────────┘
                         │   │           STREAM             │   │
                         │   └──────────────────────────────┘   │
                         └───────────────┬──────────────────────┘


                                 ┌─────────────────┐
                                 │    Dashboard    │
                                 └─────────────────┘

The Four Brokers

Each broker is purpose-built to solve a specific architectural pattern:

  • Store replaces external caches (like Redis) for shared state.
  • Pub/Sub replaces message buses (like MQTT/Redis PubSub) for real-time volatility.
  • Queue replaces job queues (like RabbitMQ/SQS) for reliable background work.
  • Stream replaces event logs (like Kafka) for durable history.