Open Source
Explore the latest AI open-source projects from GitHub and HuggingFace.
Explore the latest AI open-source projects from GitHub and HuggingFace.
While the AI agent framework space is dominated by Python and JavaScript, Jido brings a fundamentally different approach by building autonomous agents on Elixir's OTP runtime. The name Jido comes from the Japanese word meaning "automatic" or "automated" (ji = self, do = movement). With 1,434 GitHub stars and 115 new stars gained in a single day, Jido is gaining traction among developers who value the concurrency, fault tolerance, and distribution capabilities that Elixir and the BEAM virtual machine provide. Released under the Apache 2.0 license, Jido offers pure functional agents where state changes are data transformations and side effects are described as directives, not directly executed. ## Key Features ### Pure Functional Agent Design Jido's core innovation is the cmd/2 contract. Every agent operation receives an agent struct and an action, then returns an updated agent plus directives describing external effects. This separation of pure computation from side effects makes agent behavior deterministic, testable without running processes, and easy to reason about. ```elixir def cmd(agent, action) do # Pure state transformation updated_agent = apply_action(agent, action) # Directives describe side effects {updated_agent, [Directive.Emit.new("action_completed")]} end ``` ### Signal-Based Communication Agents communicate through CloudEvents-based signals routed by configurable strategies. This approach replaces ad-hoc message passing with a structured, standard protocol that enables interoperability between different agent implementations. ### Agent Hierarchies and Lifecycle Management Jido supports parent-child agent relationships with full lifecycle management. Parent agents can spawn, monitor, and stop child agents, enabling complex multi-agent systems where responsibilities are distributed across a hierarchy. ### Plugin Architecture Reusable capabilities are packaged as plugins with isolated state and lifecycle hooks. This composable design allows developers to mix and match capabilities without modifying the core agent logic. ### Execution Strategies | Strategy | Description | Best For | |----------|-------------|--------| | Direct | Immediate action execution | Simple workflows | | FSM | Finite State Machine transitions | State-driven patterns | | AgentServer | GenServer-backed persistent agent | Production deployment | ## Technical Architecture Jido requires Elixir 1.17+ and Erlang/OTP 26+. It uses NimbleOptions or Zoi for schema validation, ensuring that agent state always conforms to a declared schema. The framework runs on the BEAM VM, which natively supports lightweight processes (millions per node), preemptive scheduling, and hot code upgrades. Installation uses the Igniter scaffolding tool: ```bash mix igniter.install jido ``` ## Ecosystem Jido is part of a broader ecosystem of complementary packages: - **req_llm**: HTTP client for LLM API integration - **jido_action**: Composable, validated actions with AI support - **jido_signal**: CloudEvents-based message envelope system - **jido_ai**: LLM integration module for AI-powered agents ## Why Elixir for AI Agents The choice of Elixir is strategic. The BEAM VM was designed for telecom systems that require extreme reliability and concurrency. These same properties make it well-suited for multi-agent systems where many agents must run simultaneously, communicate reliably, and recover from failures without bringing down the entire system. Jido formalizes patterns that Elixir developers commonly reinvent when building agent systems. ## Conclusion Jido occupies a unique position in the AI agent framework landscape. By building on Elixir's OTP, it inherits decades of battle-tested distributed systems engineering. For teams already using Elixir or those building agents that demand high concurrency and fault tolerance, Jido provides a well-structured, functional approach that contrasts with the imperative patterns common in Python-based frameworks.