A simplified local CLI version of the Jido 2.0 Elixir Agent Framework, supporting state machine workflows, persistent conversations, and tool plugin system.
- State Machine Workflow: Define agent behavior as state machines with transitions
- Tool Plugin System: Register and call external tools/commands
- Persistent Memory: Save/load conversation history to local JSON files
- Simple REPL: Interactive CLI for chatting with the agent
cd /Users/fini/workspace/jido-local
pip install -e .Or run directly:
python -m jido_local.cli --helppython -m jido_local.cli --replWith custom session:
python -m jido_local.cli --repl --session my_sessionpython -m jido_local.cli --repl --workflow examples/support_workflow.yamlpython -m jido_local.cli --repl --tools examples/tools.yaml| Command | Description |
|---|---|
/<tool> |
Call a tool |
!<event> |
Trigger state transition |
history |
Show conversation history |
status |
Show agent status |
clear |
Clear conversation history |
quit/exit |
Exit the REPL |
jido --help
Options:
--session, -s Session ID for conversation persistence
--workflow, -w Path to workflow YAML/JSON file
--tools, -t Path to tools config YAML/JSON file
--data-dir, -d Directory for conversation data (default: data)
--repl, -r Start interactive REPL
--input, -i Process single input and exit
--status Show agent status# Call a tool
python -m jido_local.cli --input "/echo Hello World"
# Check status
python -m jido_local.cli --status
# Run with workflow
python -m jido_local.cli --workflow examples/support_workflow.yaml --input "help"Workflows are defined in YAML or JSON format:
name: "Agent Name"
initial: "start_state"
states:
start_state:
response: "Hello!"
transitions:
next: "next_state"
back: "start_state"response: Message to send when entering this statetransitions: Map of events to next statesactions: Available actions in this state
Use !<event> in REPL to trigger transitions:
jido> !next
Define custom tools in YAML or JSON:
tools:
- name: my_tool
command: echo {0}
description: "My custom tool"Tools can use {0}, {1}, etc. for arguments.
/echo <text>- Echo back the input/help- Show available tools/time- Get current time/status- Show agent status
Conversation history is stored in data/conversation_<session_id>.json.
jido-local/
├── jido_local/
│ ├── __init__.py # Main module
│ └── cli.py # CLI entry point
├── examples/
│ ├── support_workflow.yaml
│ └── tools.yaml
├── setup.py
└── README.md
MIT