Build agent workflows on the JVM by combining LLMs with existing code
You can learn how to weave existing business logic written in Java or Kotlin with the reasoning capabilities of an LLM into a single flow to handle complex tasks. This tool allows the system to find and execute the optimal path to reach a goal without developers having to write all branching logic in code. It is suitable for developers who want to build agent systems in enterprise environments by leveraging the strengths of the Spring ecosystem.
Dynamic planning and domain model-based design
The framework models agent behavior using three concepts: 'action', 'goal', and 'condition'. Developers only need to define domain objects and declare under which conditions each action is executed and which goal it achieves. The system uses the GOAP (Goal-Oriented Action Planning) algorithm to analyze the current state and goal, dynamically determining the order of required actions. After each action execution, it re-evaluates conditions to adjust the plan according to new information, allowing for flexible responses without being stuck in predefined scenarios. Thanks to this structure, you can extend the system's functionality by adding new domain objects or actions without modifying existing code.
Spring-based development experience and type safety
You can directly utilize Spring's dependency injection and AOP features, making integration with existing enterprise applications easy. Since actions and goals are based on the domain model, all data is strongly typed, and the interaction between LLM prompts and manually written code is clear. Both Java and Kotlin are supported, and you can define flows using annotation-based models or the Kotlin DSL. You can directly control hyperparameters such as the model and temperature used for LLM calls in the code, making testing and debugging easier. If you view Spring AI as a low-level API, this tool provides a higher level of abstraction, making it easier to express and test complex requirements.
Execution modes and platform abstraction
The agent platform supports three execution modes depending on user intent. The 'Focused' mode is suitable for flows driven by code that explicitly calls a specific agent. The 'Closed' mode classifies the input intent to select an appropriate agent but only executes actions defined within that agent. The 'Open' mode reviews all goals known to the platform, combines necessary actions and conditions to configure a custom agent, and attempts to achieve the goal. Open mode is the most powerful but has low determinism, and developers may discover new paths they did not anticipate. The internal structure of the platform is separated from the programming model, so you do not need to change application code when switching between local development and production environments.
Considerations before adoption
To adopt this tool, an environment with Maven installed and an OPENAI_API_KEY are required, and an ANTHROPIC_API_KEY is also needed to run specific examples. When using MCP (MCP) tools, Docker Desktop version 4.43.2 or higher is required. The project is Spring-based and fits well with existing JVM ecosystem infrastructure, but its approach differs from Python-based agent frameworks. Since results in Open mode can be non-deterministic, it is recommended to consider Focused or Closed modes for critical business logic or to limit goal selection using GoalChoiceApprover. Note that natural language-based action and goal deployment is currently under development, and coding agents are not recommended for use on the self-platform as commercial solutions are considered more mature.