app version 0.1.0 package jido_messaging

Jido Messaging

Platform-agnostic messaging for AI agents across Telegram, Discord, Slack, and WhatsApp

Open source on GitHub →
quickstart.exs mix deps
defp deps do
  [
    {:jido_messaging, "~> 0.1.0"}
  ]
end

AT A GLANCE

Channel-agnostic messaging — write once, deploy to Telegram, Discord, Slack, WhatsApp
AI agents as first-class participants alongside human users
LLM-native message model with roles, tool calls, and tool results
Ingest/deliver pipeline with deduplication, gating, and moderation

IMPORTANT PACKAGES

ECOSYSTEM RELATIONSHIPS

Used By
none

FULL OVERVIEW

Overview

Jido Messaging is a platform-agnostic messaging system that enables AI agents and humans to communicate across multiple messaging platforms through a unified, pure-Elixir API. It provides a channel-agnostic abstraction layer where conversations are modeled as rooms containing messages from participants — with AI agents as first-class citizens alongside human users. Messages use an LLM-native content structure (roles, tool calls, tool results) that maps directly to LLM context formats.

Built on OTP principles with GenServers, Supervisors, Registries, and ETS, Jido Messaging delivers fault-tolerant, isolated messaging instances that can run entirely in-memory for testing or connect to production persistence backends.

Purpose

Jido Messaging serves as the communication layer in the Jido ecosystem, bridging Jido AI agents and external chat systems. It allows agents to participate in conversations on any supported messaging platform — responding to messages, using tools, streaming responses, and collaborating with human users — through a single, consistent API.

Major Components

Core Domain Model

Message struct with role-based identification and rich content blocks, Room conversation containers, Participant entities for humans/agents/systems, and Instance channel connection descriptors.

Channel System

Behaviour-based platform adapters for Telegram (via Telegex), Discord (via Nostrum), Slack (via slack_elixir), and WhatsApp (via whatsapp_elixir). Plugin registry with capability declarations and content filtering.

Message Pipeline

Ingest pipeline for inbound normalization with deduplication and room/participant resolution. Deliver pipeline for outbound delivery with status tracking. Streaming GenServer for rate-limited progressive updates.

Agent Integration

AgentRunner GenServer managing agent participation per room with configurable triggers (all, mention, prefix). AgentSupervisor for lifecycle management.

Room & Instance Management

RoomServer for per-room state with bounded history, presence, typing, reactions, and read receipts. InstanceServer for channel connection lifecycle state machines.