Elixir · OTP · LLMs

Build resilient AI agents in Elixir.

Condukt treats agents as first-class OTP processes: supervised, observable, and built for production. Stream tokens, call tools, and compose workflows on top of the BEAM.

def deps do
[{:condukt, "~> 0.10"}]
end

Why Condukt

OTP-native

Agents are GenServers. They fit naturally into supervision trees and survive restarts the way the rest of your system does.

Streaming

Real-time event streams for text, thinking, tool calls, and results. Perfect for chat UIs and Phoenix LiveView.

Multi-provider

18+ LLM providers via ReqLLM: Anthropic, OpenAI, Google, Groq, Ollama, OpenRouter, xAI, and more.

Pluggable tools

Read, Bash, Edit, Write out of the box. Define your own tools by implementing the Condukt.Tool behaviour.

Project instructions

Auto-discovers AGENTS.md, CLAUDE.md, and local skills so your agents follow your conventions.

Redaction & compaction

Pluggable outbound redactors and compactors keep prompts short and secrets out of provider requests.

Get started

  1. Add the dependency

    {:condukt, "~> 0.10"}
  2. Define an agent

    defmodule MyApp.CodingAgent do
    use Condukt
    @impl true
    def tools, do: Condukt.Tools.coding_tools()
    end
  3. Run it

    {:ok, agent} = MyApp.CodingAgent.start_link(
    api_key: System.get_env("ANTHROPIC_API_KEY")
    )
    {:ok, response} = Condukt.run(agent, "Refactor this module.")