ADK Ex

Hex.pmHexDocsLicense: MIT

Elixir/OTP port of Google's Agent Development Kit (ADK). Provides agent orchestration, session management, tool use, LLM abstraction, memory, artifacts, and telemetry.

Features

Installation

Add adk_ex to your list of dependencies in mix.exs:

def deps do
  [
    {:adk_ex, "~> 0.2"}
  ]
end

For database-backed session persistence, add the separate adk_ex_ecto package.

Quick Example

# Define a tool
tool = ADK.Tool.FunctionTool.new(
  name: "get_weather",
  description: "Get weather for a city",
  handler: fn _ctx, %{"city" => city} ->
    {:ok, %{"weather" => "Sunny in #{city}"}}
  end
)

# Create an LLM agent
agent = %ADK.Agent.LlmAgent{
  name: "weather-agent",
  model: ADK.Model.Registry.resolve("gemini-2.0-flash"),
  instruction: "You are a helpful weather assistant.",
  tools: [tool]
}

# Run
{:ok, runner} = ADK.Runner.new(
  app_name: "my-app",
  root_agent: agent,
  session_service: my_session_service
)

events =
  runner
  |> ADK.Runner.run("user-1", "session-1", ADK.Types.Content.new_from_text("user", "What's the weather in Paris?"))
  |> Enum.to_list()

Documentation

Related Packages

LLM Usage Rules

This package ships usage rules for LLM-assisted development. Add to your app's mix.exs:

# In project/0:
usage_rules: [file: "AGENTS.md", usage_rules: [:adk_ex]]

# In deps:
{:usage_rules, "~> 1.2", only: :dev}

Then run mix usage_rules.sync to pull ADK conventions into your AGENTS.md / CLAUDE.md.

License

MIT — see LICENSE for details.