Embabel Agent
Embabel is a JVM framework for authoring agentic flows that mix LLM-prompted interactions with code and domain models. It supports intelligent path finding towards goals using AI planning algorithms, and is written in Kotlin with a natural usage model from Java. It is designed for developers building enterprise-grade agent applications on the JVM.
✨ Key features
- Sophisticated planning using GOAP or Utility AI algorithms
- Dynamic plan formulation and replanning after each action
- Strong typing with domain models and full refactoring support
- Platform abstraction for local and production execution
- Designed for mixing multiple LLMs for cost and privacy
- Built on Spring and JVM for enterprise integration
🎯 Use cases
- Build code-driven agent flows invoked by events
- Create closed-mode agents that classify user intent to choose an agent
- Implement open-mode agents that dynamically combine actions to achieve novel goals
- Develop testable agent applications with unit and end-to-end testing
📦 Installation
🧰 Requirements: Requires JVM, Maven, and an OPENAI_API_KEY for quick start.
🚀 Usage
@Agent(description = "Find news based on a person's star sign")
public class StarNewsFinder {
private final HoroscopeService horoscopeService;
private final int storyCount;
// Services are injected by Spring
public StarNewsFinder(
HoroscopeService horoscopeService,
@Value("${star-news-finder.story.count:5}") int storyCount) {
this.horoscopeService = horoscopeService;
this.storyCount = storyCount;
}
@Action
public StarPerson extractStarPerson(UserInput userInput, Ai ai) {
return ai
.withLlm(OpenAiModels.GPT_41)
.createObjectIfPossible(
"""
Create a person from this user input, extracting their name and star sign:
%s""".formatted(userInput.getContent()),
StarPerson.class
);
}
@Action
public Horoscope retrieveHoroscope(StarPerson starPerson) {
return new Horoscope(horoscopeService.dailyHoroscope(starPerson.sign()));
}
// toolGroups specifies tools that are required for this action to run
@Action(toolGroups =
⚠️ Good to know
Open mode is the most powerful but least deterministic; the platform will only perform individual steps that have been specified, and natural language actions and goals are not yet deployed.
❓ FAQ
What programming languages can I use with Embabel?
Embabel is written in Kotlin but offers a natural usage model from Java, so you can author agents in either language.
How does Embabel plan actions?
It uses a pluggable planning step, with default GOAP (Goal Oriented Action Planning) and supports Utility AI, allowing dynamic decision-making based on state and goals.
Can I run Embabel locally?
Yes, the platform abstraction allows running locally while potentially offering higher QoS in production without changing application code.
Does Embabel support mixing different LLMs?
Yes, it is designed for LLM mixing, allowing you to use different models for different tasks, including local models for cost and privacy.
📊 Repository
🤖 Overview, features, install steps and FAQ were generated from the project's README on Sep 4, 2026. Always check the original source before running commands.