Agent skill

swarm-ex

Stars 0
Forks 1

Install this agent skill to your Project

npx add-skill https://github.com/layeddie/ai-rules/tree/main/skills/swarm-ex

SKILL.md

SwarmEx Agent Orchestration

Overview

Lightweight, controllable, and testable AI agent orchestration in Elixir. Provides primitives for creating and coordinating networks of AI agents, leveraging Elixir's native concurrency and fault tolerance.

Source: https://github.com/nrrso/swarm_ex

When to Use

  • Lightweight agent coordination (when jido_ai is overkill)
  • Multi-agent task delegation
  • Built-in telemetry and observability
  • Testable agent workflows
  • Custom agent development

Key Capabilities

  • ✅ Agent orchestration primitives
  • ✅ Tool integration framework
  • ✅ Built-in telemetry (observability)
  • ✅ Robust error handling
  • ✅ Clear developer experience

Quick Start

elixir
# mix.exs
{:swarm_ex, "~> 0.2.0"}
elixir
defmodule MyApp.Agents.SearchAgent do
  use SwarmEx.Agent,
    name: "Search Agent",
    description: "Searches codebase for relevant information"

  @impl true
  def init(state) do
    {:ok, state}
  end

  @impl true
  def handle_message(message, state) do
    # Process message and return response
    {:reply, result, state}
  end
end

Integration with ai-rules

  • Plan Mode: Use swarm_ex for lightweight agent coordination in architecture planning
  • Build Mode: Use swarm_ex to coordinate multiple specialized agents during implementation
  • Review Mode: Validate agent coordination patterns and observability

Agent Roles

  • Orchestrator: Use swarm_ex as primary orchestration layer for multi-agent workflows
  • Architect: Design agent architectures using swarm_ex primitives
  • Reviewer: Verify agent coordination and telemetry patterns

Tooling Integration

  • Use swarm_ex with jido_ai for advanced agent orchestration
  • Use swarm_ex with anubis_mcp for agent + MCP server workflows
  • Use swarm_ex with codicil for agent coordination with code understanding

Agent Patterns

Single Agent

elixir
defmodule MyApp.SimpleAgent do
  use SwarmEx.Agent

  @impl true
  def init(state) do
    {:ok, %{state | counter: 0}}
  end

  @impl true
  def handle_message(message, state) do
    {:reply, "Processed: #{message}", %{state | counter: state.counter + 1}}
  end
end

Multi-Agent Workflow

elixir
defmodule MyApp.Coordinator do
  use SwarmEx.Agent

  @impl true
  def init(state) do
    {:ok, %{state | tasks: []}}
  end

  @impl true
  def handle_message(message, state) do
    case message do
      "start_task" ->
        {:noreply, %{state | tasks: state.tasks ++ [message.task]}}

      "complete_task" ->
        {:noreply, %{state | tasks: List.delete(state.tasks, message.task)}}

      _ ->
        {:reply, "Unknown command", state}
    end
  end
end

Telemetry Integration

elixir
defmodule MyApp.Telemetry do
  use SwarmEx.Telemetry

  @impl true
  def attach_handler(agent, handler) do
    SwarmEx.Telemetry.attach_handler(agent, handler)
  end

  def handle_event(event, metadata) do
    # Process telemetry events
    IO.inspect({event, metadata})
  end
end

Best Practices

  • Use lightweight agents for simple tasks
  • Coordinate multiple agents for complex workflows
  • Implement proper error handling in agent callbacks
  • Add telemetry for observability (monitoring, debugging)
  • Test agent interactions with ExUnit
  • Use OTP supervision trees for fault tolerance
  • Monitor agent performance and token usage
  • Implement graceful shutdown and cleanup

Observability

SwarmEx provides built-in telemetry hooks for monitoring:

  • Agent lifecycle events (started, stopped, crashed)
  • Message processing metrics (success, failure, latency)
  • Task execution tracking
  • Custom event handlers

Example Metrics

elixir
# Monitor agent performance
defmodule MyApp.Metrics do
  use SwarmEx.Telemetry

  def track_agent_lifecycle do
    attach_event_handlers()
  end
end

Resources

Troubleshooting

  • Verify agents are added to application supervisor
  • Check telemetry is enabled
  • Monitor agent lifecycle for crashes
  • Verify message handlers are implemented correctly
  • Test agent interactions with sample workflows

Didn't find tool you were looking for?

Be as detailed as possible for better results