Indrajala (Indra's Net) is a platform for distributed event processing, IoT, and AI integration. It serves as an intelligent event router that connects various data sources, sensors, and processing modules (including LLMs) through a unified protocol.
- Distributed Architecture: Supports Python, C++ (ESP32), Swift (iOS/macOS), and JavaScript/WASM clients.
- Event-Based: Uses the
IndraEventprotocol (MQTT-like addressing with UUIDs) for flexible data routing. - Modular: Easily extensible with new processing modules.
- AI Integration: Built-in support for ML models and LLMs.
- Resilient: Supports asynchronous processing and fault tolerance.
The system consists of:
- IndraServer: The core Python server that routes events between modules.
- IndraLib: Libraries for interacting with the server.
- Client Libraries: Support for multiple languages (Common Lisp, JS, Swift).
- Python 3.13 or higher
uv(recommended for dependency management) orpip
-
Clone the repository:
git clone https://codeberg.org/domschl/Indrajala.git cd Indrajala -
Install dependencies:
pip install -r indraserver/requirements.txt # OR if using uv uv sync
-
Configuration: The server requires a configuration file. You can start with the default:
cp config/indrajala.default.toml config/indrajala.toml
Edit
config/indrajala.tomlto enable/disable modules and set paths. -
Run the Server: You can use the provided helper script:
./ij.sh
Or run directly with Python:
python indraserver/src/indrajala.py
Indrajala uses a specific event structure called IndraEvent. Messages are routed based on domain (like MQTT topics).
See doc/indra.md for protocol details.
See LICENSE file.