Version: ≥5.5.x
The Bot Father is EDDI's meta-bot—a bot that creates other bots. It's the perfect example of EDDI's architecture in action, demonstrating how conversation flow, behavior rules, property extraction, and HTTP calls work together to build sophisticated workflows.
More importantly, it shows EDDI's unique capability: the same architecture that powers simple chatbots can orchestrate complex, multi-step processes, even self-modifying the system itself.
What Makes Bot Father Special?
It's Not Special Code
Bot Father is not a special feature or custom module. It's a regular EDDI bot built using the standard components:
Behavior Rules (to control conversation flow)
Property Extraction (to gather user input)
HTTP Calls (to invoke EDDI's own API)
Output Templates (to guide users)
It Demonstrates Self-Modification
Bot Father uses EDDI's REST API to create new bots, packages, dictionaries, and configurations. This is possible because EDDI's API is designed to be programmable—you can automate bot creation just like any other API integration.
It's a Conversational Wizard
Instead of requiring users to understand JSON configurations or API calls, Bot Father provides a conversational interface that:
Asks questions in natural language
Validates and stores answers
Builds complete bot configurations
Returns the bot ID for deployment
Architecture of Bot Father
Bot Composition
Bot Father is composed of multiple packages:
Step-by-Step Flow
Let's walk through how Bot Father creates a new bot:
Step 1: Conversation Start
User: Starts conversation with Bot Father
Bot Father: (via Output Template)
Behavior Rule:
(Triggers only on first step)
Step 2: Capture Bot Name
User: "My Weather Bot"
Property Setter: (from property extension)
Result: Stores "My Weather Bot" in conversation memory:
Bot Father: "Great! What should your bot do? Describe its purpose."
Step 3: Capture Bot Description
User: "It should tell users the current weather"
Property Setter:
Bot Father: "Which AI provider would you like to use? (OpenAI, Claude, Gemini, or None)"
Step 4: Capture LLM Choice
User: "OpenAI"
Property Setter:
Bot Father: "Please provide your OpenAI API key."
Step 5: Capture API Key
User: "sk-..."
Property Setter:
Step 6: Trigger Bot Creation
Now all required data is collected. A Behavior Rule monitors the memory:
Explanation:
This rule checks if all required data exists in memory
When all conditions are met, it triggers the httpcall(create-bot) action
This demonstrates conditional API execution based on conversation state
Step 7: Execute HTTP Call to Create Bot
The create-bot HTTP call is defined in an HTTP Calls extension:
What Happens:
Request: POST to http://localhost:7070/botstore/bots
Body: Empty bot configuration (packages added later)
Property Extraction: Saves bot ID to context.newBotId
Step 8: Create Package with LangChain Configuration
Another HTTP call creates a package:
Step 9: Create LangChain Configuration
Note: The body uses Thymeleaf templating to inject conversation memory values:
${context.llmProvider} → "openai"
${context.apiKey} → "sk-..."
${context.botDescription} → "It should tell users the current weather"
Step 10: Link Package to Bot
Step 11: Deploy Bot
Step 12: Confirmation
Bot Father: (via Output Template)
Key Architectural Insights
1. Conversation-Driven Workflows
Bot Father demonstrates that EDDI can orchestrate any multi-step process, not just conversations:
Data collection (via conversation)
Validation (via behavior rules)
API orchestration (via HTTP calls)
Response formatting (via output templates)
2. Conditional Execution
The behavior rule that triggers bot creation shows conditional API execution:
This is more sophisticated than simple API proxies—it's business logic orchestration.
3. Memory as State Machine
Conversation memory acts as a state machine:
Initial state: No data collected
Transition: User provides information → Property setters update state
Trigger: All data present → Behavior rule fires
Action: HTTP call executes
4. Template-Based Configuration
HTTP call bodies use Thymeleaf templates, allowing dynamic configuration:
This means the same HTTP call definition can create different configurations based on conversation data.
5. Self-Modification
Bot Father calls EDDI's own API, demonstrating:
Programmable infrastructure: Bots can modify the system
API-first design: Everything is accessible via REST
Composability: Bots are data, not code—they can be created programmatically
Real-World Applications
The Bot Father pattern can be applied to many scenarios:
1. Customer Onboarding Wizard
2. Order Processing System
3. Support Ticket Creation
4. Dynamic Bot Configuration
Let's look at the actual Java components that make Bot Father work:
Behavior Rules Task (executes rules)
HTTP Calls Task (executes API calls)
Property Extraction Task
Configuration Files
Bot Father Bot Configuration
File: botfather.bot.json
Package Configuration Example
File: package-conversation-flow.package.json
Behavior Rules Example
File: behavior-bot-creation.behavior.json
Testing Bot Father
Using the REST API
Lessons from Bot Father
1. Configuration Over Code
Bot Father proves that complex workflows can be configured, not coded. No Java needed—just JSON.
2. Composability is Powerful
By combining simple components (rules, HTTP calls, templates), you can build sophisticated systems.
3. Conversations Are Workflows
Any multi-step process can be modeled as a conversation, making it user-friendly and intuitive.
4. EDDI is Infrastructure
EDDI isn't just for chatbots—it's infrastructure for orchestrating any API-driven workflow with conversational interfaces.
5. Self-Modification is Safe
Because bots are data (JSON), creating/modifying them via API is safe and version-controlled.
The Bot Father demonstrates EDDI's core philosophy:
Sophisticated AI orchestration should be configuration, not code.
By combining:
Behavior Rules (decision logic)
Property Extraction (state management)
HTTP Calls (API orchestration)
Output Templates (user interaction)
You can build systems that:
Guide users through complex processes
Collect and validate data conversationally
Orchestrate multiple API calls conditionally
Generate dynamic configurations
This is the power of EDDI's architecture—and Bot Father is the proof.