Architecture
JUMON is built on a microservices architecture using NATS as the messaging backbone.
Overview
flowchart TD subgraph NATS["Server / NATS Messaging"] end Client[Client] JUMON[JUMON.md] Module[module service] Chat[chat service] Tool[tool service] Script[script service] Event[event service] %% Client connections Client -->|"executes"| JUMON Client -->|"connects to"| NATS %% JUMON.md to module JUMON -->|"processed by"| Module %% Service connections through NATS Module <-->|"via NATS"| NATS Chat <-->|"via NATS"| NATS Tool <-->|"via NATS"| NATS Script <-->|"via NATS"| NATS Event <-->|"via NATS"| NATS %% Direct service connections Module -->|"calls"| Script Event -->|"triggers"| Script Script -->|"utilizes"| Tool Script -->|"communicates with"| Chat classDef client fill:#607d8b,stroke:#455a64,color:white,stroke-width:2px,font-weight:bold classDef module fill:#34a853,stroke:#1e8e3e,color:white classDef chat fill:#ea4335,stroke:#c5221f,color:white classDef tool fill:#fbbc05,stroke:#f29900,color:white classDef script fill:#9c27b0,stroke:#7b1fa2,color:white classDef event fill:#4285f4,stroke:#174ea6,color:white classDef jumon fill:#ff9800,stroke:#e65100,color:white,stroke-width:2px classDef nats fill:#4285f4,stroke:#174ea6,color:white,stroke-width:2px,stroke-dasharray: 5 5 class Client client class Module module class Chat chat class Tool tool class Script script class Event event class JUMON jumon class NATS nats
Client-Server Model
JUMON follows a client-server architecture:
- JUMON Client: The command-line interface that users interact with
- JUMON Server: A background service that manages the execution of modules, scripts, and tools
The client and server communicate via NATS, a lightweight messaging system that provides reliable request-response and publish-subscribe patterns.
When not connected to a server, JUMON automatically launches a temporary server instance to enable execution without dependencies.
What is NATS?
NATS is a simple, secure, and high-performance messaging system designed for modern distributed applications. It enables communication across cloud, on-premise, edge, and mobile environments. NATS supports real-time data streaming and resilient storage through JetStream, with official clients available in multiple programming languages. It’s widely used in production by major companies and is 100% open source.
NATS goes beyond simple messaging by providing a comprehensive suite of features essential for modern applications. It supports request-reply patterns for synchronous communication, persistent key-value stores for configuration and metadata, and object storage for handling large binary data. This all-in-one approach eliminates the need for multiple disparate systems, providing a unified platform for building distributed applications.
Core Services
JUMON is composed of several microservices, each responsible for a specific aspect of the system:
Chat Service (
chat
): Manages communication with LLM providers- Supports multiple providers (OpenAI, Anthropic, Google)
- Handles streaming responses
- Manages tool calls and responses
Tool Service (
tool
): Manages the execution of tools- Supports different tool types (WASM, NATS, script)
- Handles tool resources
- Validates tool inputs and outputs
Script Service (
script
): Manages the execution of scripts- Parses script content
- Manages script execution flow
- Handles script inputs and outputs
Module Service (
module
): Manages modules- Loads modules from local files or git repositories
- Manages module imports
- Orchestrates script execution within modules
Event Service (
event
): Manages events- Handles event subscriptions
- Routes events to appropriate handlers
- Manages event persistence