Date: 2026-05-17

Audience: IT developers working with .NET + actor models + LLM integration

Sister page (Korean): Akka.NET에 LLM Agent 객체 만들기 — Akka.io Agent SDK를 액터 모델로 이식하기

Related memorizer notes (new window):

TL;DR

Akka.io (on the JVM) ships an Agent component that bundles LLM calls + session memory + tool calls into a single first-class abstraction. Akka.NET does not yet provide this abstraction natively, but you can build the same shape using ReceiveActor + Become transitions + supervised child actors + an external LLM client. This article walks through the design and runnable samples.

Background — Why isn't there an Agent in Akka.NET?

Dimension Akka.io (JVM / Java SDK) Akka.NET
:--- :--- :---
Actor model ✅ Same Hewitt-1973 lineage Akka.io ported to .NET, identical
Agent component First-class citizen (Akka SDK 2024+) ❌ Missing — must be assembled by hand
Workflow / Entity / View ✅ Annotations + SDK runtime ❌ Library level (Persistence·Streams separately)
Memory management Built-in Event Sourced Entity Akka.Persistence (equivalent)
Tool calling integration LLM response → automatic dispatch Hand-rolled (Newtonsoft + reflection)

Akka.io's Agent SDK wraps a Context Gathering → Reasoning → Action Taking → Progress Evaluation lifecycle into one abstract class (see Akka Agents Platform note). On the .NET side you have to build the same shape with explicit Become transitions + PersistentActor checkpoints.

1. Akka.io Agent in one line

Minimal form from the official Hello World tutorial:

@Component(id = "hello-world-agent")
public class HelloWorldAgent extends Agent {
    private static final String SYSTEM_MESSAGE = "You are a cheerful AI...";
    public Effect<String> greet(String userGreeting) {
        return effects()
            .systemMessage(SYSTEM_MESSAGE)
            .userMessage(userGreeting)
            .thenReply();
    }
}