agentjido/jido
🤖 Autonomous agent framework for Elixir. Built for distributed, autonomous behavior and dynamic workflows.
What it solves
Jido provides a structured framework for building autonomous agent systems in Elixir, specifically designed for complex workflows and multi-agent coordination. It solves the problem of reinventing common agent patterns—such as standardized messaging, state management, and fault tolerance—when using raw OTP/GenServer primitives.
How it works
Jido implements a functional, immutable agent architecture where agents are defined as data structures with a core command function (cmd/2). The system operates on four primary components:
- Agents: Hold state and process commands.
- Actions: Perform the actual work and transform agent state.
- Signals: Standardized (CloudEvents-compliant) messages that route events into the system.
- Directives: Typed descriptions of external effects (like spawning new agents or scheduling tasks) that the runtime executes, keeping the agent's decision logic pure and testable.
Who it’s for
It is designed for Elixir developers building software that needs to inspect context, coordinate multiple agents, and maintain high reliability over time. While it integrates with AI/LLMs via companion packages (like jido_ai), AI is optional, making it suitable for both deterministic and AI-driven autonomous systems.
Highlights
- OTP-Native: Built on GenServer with built-in supervision trees and fault tolerance.
- Immutable State: Functional state model inspired by Redux/Elm for predictable transitions.
- Multi-Agent Orchestration: Supports parent-child hierarchies, durable agent groups (Pods), and multi-tenant deployments.
- Extensible Architecture: Includes a plugin system for reusable capabilities and multiple execution strategies, including Finite State Machines (FSM).
- Directive-Based Effects: Separates decision logic from side-effect execution via a runtime-owned directive system.
Related
- Project
- Project
- Project
- Project
- Project