You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Agent-as-tool composition — Wrap any agent as a RubyLLM tool with AgentTool adapter. Use tools AgentTool.from(OtherAgent) to let agents call other agents. Execution hierarchy tracked via parent_execution_id in metadata
Queryable agents — Query execution history directly from agent classes: .executions, .last_run, .failures(since:), .total_spent(since:), .stats(since:), .cost_by_model(since:), .with_params(**params). Includes replay support for A/B testing models on real inputs
ActiveSupport Notifications — Instrument the full pipeline with ruby_llm_agents.* events:
Custom middleware — Inject custom middleware into the pipeline globally via config.middleware or per-agent via middleware DSL. Supports before/after/around positioning relative to built-in middleware
Agent rename support — Three complementary approaches for handling agent class renames:
Aliases DSL — aliases "OldName", "AnotherOldName" on agent classes makes by_agent scopes, analytics, and budget checks automatically include records from all previous names
Programmatic helper — RubyLLM::Agents.rename_agent("Old", to: "New") updates execution records and tenant budget keys in-place, with dry_run: true support