Custom Plugins

Create powerful tools for your agents with just a simple decorator. EXODUS automatically generates the OpenAI-compatible schema.

from exodus.core.decorators import tool

@tool(
    name="port_scanner",
    type="cli",
    description="Scans ports on a target host using nmap"
)
def port_scanner(target: str, ports: str = "1-1000") -> str:
    """Scans the specified ports on the target."""
    return f"nmap -p {ports} {target}"

# Register your plugin class
class SecurityPlugin:
    @staticmethod
    def get_tools():
        return {
            port_scanner.tool_name: port_scanner,
        }

To make your plugin discoverable, register it in your pyproject.toml:

[project.entry-points."exodus.plugins.tools"]
security = "your_package.plugins:SecurityPlugin"

EXODUS will automatically discover and load all plugins from the exodus.plugins.tools entry point group at startup.

Plugin System

  • Python tools: Execute code directly in your environment
  • CLI tools: Return shell commands executed in isolated containers
  • Auto-validation: Pydantic models generated automatically from type hints
  • Auto-discovery: Plugins loaded via Python entry points (exodus.plugins.tools)
  • Distributable: Share your plugins as PyPI packages