Jido for Elixir

A stateful workflow and cooperative-process framework for Elixir/OTP.

Source repo
agentjido/jido
Stars
★ 1.9k
Last updated
2d ago
License
Apache-2.0
Primary language
Elixir

At a glance

Works with
Universal · cross-platform
You'll need
Elixir 1.17+Erlang/OTP 26+Shell / CLI
Typical use
An Elixir backend team needs to organize several long-lived, supervised business processes into a cooperative workflow.
Main limitation
Adoption requires Elixir 1.17+ and Erlang/OTP 26+, creating runtime and migration costs for teams outside the BEAM ecosystem.

What does this agent do, and when should you use it?

Jido is an autonomous-agent framework for building workflows and multi-agent systems in Elixir. It models agents as immutable stateful structures with cmd/2; Actions do work and transform state, Signals route events into the system, and Directives describe runtime-owned external effects. Production execution uses the GenServer-based AgentServer, with supervision, parent-child lifecycle management, signal routing, instance partitions, and multi-tenant boundaries. The framework also includes Direct and FSM strategies, composable plugins, plan-based orchestration, and Pods for durable groups of agents. AI is not required by the core package; model integration is available through optional ecosystem packages such as jido_ai.

Developers define an agent with use Jido.Agent, including its name, description, schema, and signal_routes, then define work with use Jido.Action and run/2. Calling MyAgent.cmd(agent, {ActionModule, params}) executes the Action and returns an updated agent plus directives; the strategy layer applies StateOps, while the AgentServer runtime interprets directives such as Emit, SpawnAgent, Schedule, and Stop. A running server can receive a Signal through Jido.AgentServer.call(pid, Jido.Signal.new!("increment", %{amount: 10}, source: "/user")); an instance module exposes start_agent, whereis, and list_agents for process management.

  1. An Elixir backend team needs to organize several long-lived, supervised business processes into a cooperative workflow.
  2. A service needs to route CloudEvents-style messages into components with explicit state and command boundaries.
  3. A BEAM application needs parent-child process lifecycle handling, delayed scheduling, or runtime event emission.
  4. A developer wants to model a state-driven flow with the FSM strategy instead of mixing business logic into GenServer callbacks.
  5. A team needs logical partitions or Pods to manage multi-tenant workspaces within a shared instance.

How do you install or deploy this agent?

Run:

mix igniter.install jido

This adds the dependency, creates MyApp.Jido, writes configuration, and adds it to the supervision tree. Alternatively, add {:jido, "~> 2.0"} to mix.exs and create:

defmodule MyApp.Jido do
use Jido, otp_app: :my_app

end

Configure config/config.exs:

config :my_app, MyApp.Jido, max_tasks: 1000, agent_pools: []

Then add MyApp.Jido to application.ex children. The documented prerequisites are Elixir 1.17+ and Erlang/OTP 26+; no credentials are documented.

How do you use this agent?

Define an Agent and an Action, for example by giving the Agent signal_routes: [{"increment", MyApp.Actions.Increment}] and returning {:ok, %{count: current + params.amount}} from the Action's run/2. Create and execute it:

agent = MyApp.CounterAgent.new()

{agent, directives} = MyApp.CounterAgent.cmd(agent, {MyApp.Actions.Increment, %{amount: 5}})

For process-based execution:

{:ok, pid} = MyApp.Jido.start_agent(MyApp.CounterAgent, id: "counter-1")
{:ok, agent} = Jido.AgentServer.call(pid, Jido.Signal.new!("increment", %{amount: 10}, source: "/user"))

The Signal type must be declared in signal_routes.

What are this agent's strengths and limitations?

Pros
  • It is built on Elixir/OTP and GenServer, providing supervision and fault tolerance rather than only a chain-oriented interface.
  • The cmd/2 contract returns both the updated agent and directives, separating state transitions from runtime-owned effects.
  • Configurable parent-child hierarchies, instance-scoped supervision, logical partitions, and Pods suit durable cooperative-process topologies.
  • Direct and FSM strategies plus plugins with merged schemas support distinct workflow-modeling approaches.
Limitations
  • Adoption requires Elixir 1.17+ and Erlang/OTP 26+, creating runtime and migration costs for teams outside the BEAM ecosystem.
  • AI/LLM support is not part of the core package; teams needing models must evaluate and integrate ecosystem packages such as jido_ai and req_llm.
  • Actions may call APIs, read files, or query databases, so applications must still design their own I/O, permission, and error-handling boundaries.
  • The provided material shows the built-in runtime and ecosystem packages but does not document core-package adapters for OpenAI, Anthropic, or other named model providers.

How does this agent compare with similar options?

The README contrasts Jido with LangChain and CrewAI: it describes LangChain as Python-first and chain-based, and CrewAI as role-playing and team-based. Jido is positioned as an OTP-native agent pattern built on GenServer, emphasizing supervision trees, immutable state, and explicit Directive effect boundaries.

Key facts side by side with the most closely related agents.

Agent Source review Stars Updated Language Full support on
Jido for Elixir This agent 41 · Major gaps ★ 1.9k 2d ago Elixir
Pi Dynamic Workflows 88 · Good ★ 531 9d ago TypeScript
LlamaAgents 66 · Some gaps ★ 452 3d ago Python
Agently AI Application Runtime 63 · Some gaps ★ 1.7k 11d ago Python OpenAI API · Claude API

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Major gaps
41/ 100 5-point scale 2.1 / 5
Trust 6/29
Reliability 6/14
Adaptability 10/18
Convention 9/18
Effectiveness 7/13
Verifiability 3/8
Why each dimension lost points
Trust6 / 29 · 1.0/5

Evidence shows the framework emphasizes explicit directives and runtime ownership, but no mechanisms for least privilege, user confirmation, or sensitive data handling are provided. Dependency security is only implied by CI and standard dependency management, with no vulnerability scanning evidence. External effects are described via directives, but no rollback mechanism is provided. Source attribution is only via license and copyright notice.

Reliability6 / 14 · 2.1/5

Documentation and code examples are consistent, but no detailed failure messages are provided. Dependency availability is implied by Hex and GitHub Actions, but no dependency locking or mirrors are provided.

Adaptability10 / 18 · 2.8/5

Clearly targets Elixir developers, with multiple scenarios and guides. Capability boundaries are explained via directives and strategies, but trigger precision is not detailed. Environment fit is shown via OTP and Elixir version requirements.

Convention9 / 18 · 2.5/5

Information architecture is clear, install notes are detailed, naming is stable, examples and FAQ are rich. Known limitations are not explicitly listed, license is Apache-2.0, versioning is via Hex and GitHub Actions, maintenance responsibility is via contributing guide.

Effectiveness7 / 13 · 2.7/5

Output usability is shown via clear APIs and examples, marginal value is shown via comparison to raw OTP, cost-benefit lacks performance or resource usage data.

Verifiability3 / 8 · 1.9/5

Claims are consistent with code examples, but no independent verification is provided. Facts and inferences are not explicitly separated.

Risks and how to mitigate them
  • Not found in source: confirmation before actingTurn on (or add) a confirmation step before it acts, and try it in a sandbox or test environment before real data.
  • Not found in source: sensitive-data handlingUse dedicated, low-privilege, revocable API keys — never production credentials — and keep secrets out of logs.
  • Not found in source: rollback or recovery pathBack up first, or work on a git branch or snapshot, so its changes can be undone.
  • No least privilege or user confirmation mechanisms are provided; implement security controls yourself when deploying.
  • No sensitive data handling or rollback mechanisms are provided; assess data protection needs.
  • Dependency security lacks vulnerability scanning evidence; consider using dependency audit tools.
  • Known limitations are not explicitly listed; assess suitability yourself.
Evidence confidence: Low Reviewed Aug 09, 2026 Reviewed revision 4689b92e4d7d New commits since this review; the score may not cover them
See the full review method →

FAQ

Does Jido require AI or an LLM?
No. The core jido package provides the agent architecture and runtime; the README lists AI/LLM integration through optional ecosystem capabilities such as jido_ai.
Can directives returned by cmd/2 modify agent state again?
No. The README states that the returned agent is already complete; directives only describe runtime-owned external effects.
How are agents run in production?
Use the GenServer-based AgentServer. Start an agent through an instance module's start_agent and send Signals with AgentServer.call.
How does it handle child processes and failures?
It provides parent-child agent hierarchies, lifecycle management, and instance-scoped supervision. SpawnAgent defaults to restart: :transient.
Does the core package require network, filesystem, or MCP access?
The README does not list these as core requirements. An Action may call APIs, read files, or query databases when it needs an immediate result, but that depends on the application implementation.
View on GitHub ↗ Install ↓

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents