CtrlK
CommunityDocumentationLog inGet started
Tessl Logo

tessl/maven-com-embabel-agent--embabel-agent-starter

Base starter module for the Embabel Agent Framework providing core dependencies for building agentic flows on the JVM with Spring Boot integration and GOAP-based intelligent path finding.

Overview
Eval results
Files

reference-logging.mddocs/

Logging Configuration Reference

Complete reference for logging themes, personalities, and configuration.

Logging Personality Property

PropertyTypeDefaultDescription
embabel.agent.logging.personalityStringnullLogging theme/personality
embabel:
  agent:
    logging:
      personality: starwars

Environment variable:

export EMBABEL_AGENT_LOGGING_PERSONALITY=starwars

Available Personalities

ValueDescriptionConstant
starwarsStar Wars themed loggingLoggingThemes.STAR_WARS
severanceSeverance (TV show) themed loggingLoggingThemes.SEVERANCE
colossusThe Forbin Project themed loggingLoggingThemes.COLOSSUS
hitchhikerHitchhiker's Guide to the Galaxy themed loggingLoggingThemes.HITCHHIKERS_GUIDE
montypythonMonty Python themed loggingLoggingThemes.MONTYPYTHON

Configuration Methods

Properties File (Recommended)

embabel:
  agent:
    logging:
      personality: starwars

Environment Variable

export EMBABEL_AGENT_LOGGING_PERSONALITY=starwars

Annotation (Deprecated)

import com.embabel.agent.config.annotation.EnableAgents;
import com.embabel.agent.config.annotation.LoggingThemes;

@SpringBootApplication
@EnableAgents(loggingTheme = LoggingThemes.STAR_WARS)
public class MyAgentApplication {
    // Application code
}

Note: @EnableAgents annotation is deprecated since 0.3.1.

LoggingThemes Constants

package com.embabel.agent.config.annotation;

public class LoggingThemes {
    public static final String STAR_WARS = "starwars";
    public static final String SEVERANCE = "severance";
    public static final String COLOSSUS = "colossus";
    public static final String HITCHHIKERS_GUIDE = "hitchhiker";
    public static final String MONTYPYTHON = "montypython";
}

Profile-Based Configuration

Development Profile

# application-dev.yml
embabel:
  agent:
    logging:
      personality: montypython

Production Profile

# application-prod.yml
embabel:
  agent:
    logging:
      personality: colossus

Activate with:

export SPRING_PROFILES_ACTIVE=dev
# or
java -jar app.jar --spring.profiles.active=prod

Console Pattern Configuration

PropertyTypeDefaultDescription
logging.pattern.consoleStringSee belowConsole log pattern with ANSI colors
logging:
  pattern:
    console: "%clr(%d{HH:mm:ss.SSS}){faint} %clr([%t]){magenta} %clr(%-5level) %clr(%logger{0}){cyan} %clr(-){faint} %msg%n"

ANSI Color Support

PropertyTypeDefaultDescription
spring.output.ansi.enabledString"ALWAYS"ANSI output mode
spring:
  output:
    ansi:
      enabled: ALWAYS

Values:

  • ALWAYS - Always use ANSI colors
  • DETECT - Auto-detect terminal capabilities
  • NEVER - Disable ANSI colors

Log Level Configuration

logging:
  level:
    com.embabel.agent: INFO
    com.embabel.agent.core: DEBUG
    com.embabel.agent.api: TRACE

Log levels: TRACE, DEBUG, INFO, WARN, ERROR, OFF

Usage Examples

Java with Properties

@SpringBootApplication
public class MyAgentApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyAgentApplication.class, args);
    }
}

application.yml:

embabel:
  agent:
    logging:
      personality: starwars

Kotlin with Properties

@SpringBootApplication
class MyAgentApplication

fun main(args: Array<String>) {
    runApplication<MyAgentApplication>(*args)
}

application.yml:

embabel:
  agent:
    logging:
      personality: severance

Disabling Themed Logging

Set personality to empty string or omit property:

embabel:
  agent:
    logging:
      personality: ""

Or:

embabel:
  agent:
    logging: {}

Configuration Metadata

IDE autocomplete support through Spring Boot configuration metadata:

{
  "properties": [
    {
      "name": "embabel.agent.logging.personality",
      "type": "java.lang.String",
      "description": "Logging personality theme for agent operations"
    }
  ],
  "hints": [
    {
      "name": "embabel.agent.logging.personality",
      "values": [
        {"value": "starwars", "description": "Star Wars themed logging"},
        {"value": "severance", "description": "Severance themed logging"},
        {"value": "colossus", "description": "Colossus themed logging"},
        {"value": "hitchhiker", "description": "Hitchhiker's Guide themed logging"},
        {"value": "montypython", "description": "Monty Python themed logging"}
      ]
    }
  ]
}

Complete Logging Configuration

# application.yml
spring:
  output:
    ansi:
      enabled: ALWAYS

embabel:
  agent:
    logging:
      personality: starwars

logging:
  pattern:
    console: "%clr(%d{HH:mm:ss.SSS}){faint} %clr([%t]){magenta} %clr(%-5level) %clr(%logger{0}){cyan} %clr(-){faint} %msg%n"
  level:
    root: INFO
    com.embabel.agent: INFO
    com.embabel.agent.core: DEBUG

Environment-Specific Themes

Development

# application-dev.yml
embabel:
  agent:
    logging:
      personality: montypython

logging:
  level:
    com.embabel.agent: DEBUG

Staging

# application-staging.yml
embabel:
  agent:
    logging:
      personality: hitchhiker

logging:
  level:
    com.embabel.agent: INFO

Production

# application-prod.yml
embabel:
  agent:
    logging:
      personality: colossus

logging:
  level:
    com.embabel.agent: WARN

Custom Pattern Examples

Detailed Pattern

logging:
  pattern:
    console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"

Minimal Pattern

logging:
  pattern:
    console: "%msg%n"

JSON Pattern (Logstash)

logging:
  pattern:
    console: '{"time":"%d{ISO8601}","level":"%level","logger":"%logger","message":"%message"}%n'

Logging to File

logging:
  file:
    name: logs/agent.log
    max-size: 10MB
    max-history: 30
  pattern:
    file: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"

Implementation Details

EnvironmentPostProcessor

public class EnvironmentPostProcessor
    implements org.springframework.boot.env.EnvironmentPostProcessor {

    @Override
    public void postProcessEnvironment(
        ConfigurableEnvironment environment,
        SpringApplication application) {
        // Sets embabel.agent.logging.personality property
    }
}

Registration: META-INF/spring.factories

org.springframework.boot.env.EnvironmentPostProcessor=\
com.embabel.agent.config.annotation.spi.EnvironmentPostProcessor

Default Properties

From agent-application.properties:

spring.output.ansi.enabled=ALWAYS
logging.pattern.console=%clr(%d{HH:mm:ss.SSS}){faint} %clr([%t]){magenta} %clr(%-5level) %clr(%logger{0}){cyan} %clr(-){faint} %msg%n
tessl i tessl/maven-com-embabel-agent--embabel-agent-starter@0.3.1

docs

api-annotations.md

api-domain-model.md

api-invocation.md

api-tools.md

concepts-actions.md

concepts-agents.md

concepts-goals.md

concepts-invocation.md

concepts-tools.md

guides-creating-agents.md

guides-creating-tools.md

guides-defining-actions.md

guides-goal-achievement.md

guides-human-in-loop.md

guides-multimodal.md

index.md

integration-mcp.md

integration-model-providers.md

integration-spring-boot.md

LlmTool.md

quickstart.md

reference-component-scanning.md

reference-configuration-properties.md

reference-installation.md

reference-logging.md

reference-resilience.md

reference-streaming.md

tile.json