This proposal argues that Jido.Identity — and eventually other "reserved key" primitives like __thread__, __memory__, and __strategy__ — should be implemented as default plugins rather than ad hoc reserved keys with standalone helper modules. The goal is to keep the agent core minimal (four functions: new/1, set/2, validate/2, cmd/2) while proving that the plugin system is robust enough to serve as the universal composition layer for both framework primitives and user extensions.
Identity is a first-class agent primitive — a mostly-stable self-model stored under the reserved key __identity__ in agent.state. It answers two questions:
- What can this agent do? — Capabilities for orchestration and routing
- What lifecycle facts matter? — Age, creation context, evolution state
Identity is intentionally not world knowledge (__memory__), not event history (__thread__), and not decision logic (__strategy__). It's the agent's machine-readable resume.
This document specifies the integration of Jido.Thread with the ReAct strategy, implementing the key insight from JIDO_THREAD.md: Thread is the canonical history; LLM context is a derived projection.
The Machine's conversation list becomes ephemeral—generated fresh each LLM call from Thread via a ContextPolicy projector. This enables token budgeting, windowing, summarization, and provider-agnostic storage while keeping the full interaction history intact.
OpenClaw is a multi-channel message routing layer wrapped around an embedded "coding agent" runtime (pi-agent-core). It enables AI agents to operate across messaging platforms (Telegram, Discord, Slack, Signal, iMessage, WhatsApp, etc.) with unified tool access, session management, and extensibility.
┌─────────────────────────────────────────────────────────────────┐
| #!/usr/bin/env elixir | |
| Mix.install([ | |
| {:req_llm, path: ".."} | |
| ]) | |
| Logger.configure(level: :warning) | |
| defmodule SimpleAgent.V1 do | |
| use GenServer |
| defmodule PetalPro.FileUploads.Tigris do | |
| @moduledoc """ | |
| Tigris.dev S3-compatible storage provider using ExAws. | |
| ## Setup | |
| 1. Add ExAws dependencies to mix.exs: | |
| ```elixir | |
| {:ex_aws, "~> 2.0"}, | |
| {:ex_aws_s3, "~> 2.0"}, |
| defmodule CalculatorAgent do | |
| @moduledoc """ | |
| A simple calculator agent for performing arithmetic operations. | |
| CalculatorAgent provides a clean, minimal API for mathematical calculations | |
| while leveraging the full power of Jido.Agent.Server under the hood. | |
| ## Examples | |
| # Start a calculator agent |
A comprehensive quality checklist for high-quality open source Elixir modules. Use this checklist to evaluate and ensure your Elixir packages meet professional standards.
- Comprehensive CI pipeline that runs on every PR and push to main
- Multi-version testing matrix (test against multiple Elixir/OTP versions)
- Automated formatting check (
mix format --check-formatted)
| defmodule Jido.Actions.ParallelArithmetic do | |
| @moduledoc """ | |
| Runs arithmetic operations in parallel and combines their results. | |
| """ | |
| use Jido.Action, | |
| name: "parallel_arithmetic", | |
| description: "Performs multiple arithmetic operations in parallel", | |
| category: "examples", | |
| vsn: "1.0.0", |