Skip to content

embabel/tripper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Tripper: Embabel Travel Planner Agent

Build

Kotlin Spring Apache Tomcat Apache Maven ChatGPT JSON htmx GitHub Actions Docker IntelliJ IDEA


Embabel Agent

Tripper is a travel planning agent that helps you create personalized travel itineraries, based on your preferences and interests. It uses web search, mapping and integrates with Airbnb. It demonstrates the power of the Embabel agent framework.

Key Features:

  • πŸ€– Demonstrates Embabel's core concepts of deterministic planning and centering agents around a domain model
  • 🌍 Illustrates the use of multiple LLMs (Claude Sonnet, GPT-4.1-mini) in the same application
  • πŸ—ΊοΈ Extensive use of MCP tools for mapping, image and web search, wikipedia and Airbnb integration
  • πŸ“± Modern web interface with htmx
  • 🐳 Docker containerization for MCP tools
  • πŸš€ CI/CD with GitHub Actions

πŸš€ Quick Start

Warning: Tripper is a genuinely useful travel planner. But be aware that its extensive LLM usage will cost money. A typical run costs around $0.10c.

Prerequisites

  • Java 21+
  • Docker
  • Maven 3.6+
  • Make sure you have 'Docker Model Runner' up and running and exposed on port 12434 ( docker desktop enable model-runner --tcp=12434)

Environment Setup

  1. Configure API Keys

    export OPENAI_API_KEY=your_openai_api_key_here
    export ANTHROPIC_API_KEY=your_anthropic_api_key_here
    # Set your Brave API key for image search
    export BRAVE_API_KEY=your_brave_api_key_here
    
  2. Set MCP Environment variables for MCP tools running in Docker

    # Copy the example environment file
    cp mcp.env.example .mcp.env
    
    # Edit mcp.env with your configuration
    nano .mcp.env

Running the Application

  1. Start Background Services

    docker compose --file compose.yaml --file compose.dmr.yaml up
  2. Launch the Travel Planner

    Option A: Using Shell Script

    ./run.sh

    Option B: Using IDE

    • Open the project in your IDE
    • Run it in the way your IDE runs Spring Boot apps. In IntelliJ IDEA, simply run the main method in TripperApplication.kt.
  3. Access the Application

Running the Application with Docker

  1. Launch the Travel Planner

    docker compose --profile in-docker up
  2. Access the Application

Setup OAuth Credentials

Enable security by changing the following line in application.properties:

embabel.security.enabled=true

Then follow these steps to set up Google OAuth:

  1. Get Google OAuth credentials from Google Cloud Console
  2. Add redirect URI: http://localhost:8080/login/oauth2/code/google
  3. Set your GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET environment variables:
    export GOOGLE_CLIENT_ID=your_google_client_id_here
    export GOOGLE_CLIENT_SECRET=your_google_client_secret_here

For more details, see the Security Guide.

πŸ“Έ Screenshots

Itinerary Input

Travel Planner Input Interface

Input form for travel preferences

Generated Itinerary

Travel Planner Output

AI-generated travel itinerary with detailed recommendations

Link to Interactive Map

Interactive map

Map link included in output

Link to Airbnb

Airbnb

Airbnb links for each stay of the trip

Plan and Usage Information

Plan and usage

Information about plan and usage, including total cost

Event Stream

Events

Emits events about process flow

πŸ—οΈ Architecture

The Tripper agent follows a modern microservices architecture:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Frontend      β”‚    β”‚   Spring Boot/  β”‚    β”‚      LLMs       β”‚
β”‚   (htmx)        │◄──►│ Embabel Backend │◄──►│ (Claude,GPT 4)  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚
                                β–Ό
                       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                       β”‚   Docker        β”‚
                       β”‚   MCP tools     β”‚
                       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Components:

  • Frontend: Modern web interface built with htmx for seamless interactions
  • Backend: Kotlin-based Spring Boot application handling business logic. Key flow is defined in TripperAgent.kt.
  • LLMs: Illustrates use of multiple LLMs
  • Containerization: Docker for consistent deployment across environments and MCP tool management

πŸ› οΈ Development

Tech Stack

  • Backend: Kotlin, Embabel, Spring Boot, Apache Tomcat
  • Frontend: htmx, JSON APIs
  • Build: Apache Maven
  • DevOps: Docker, GitHub Actions

Note For Linux Developers

  • Ensure proper software version: Docker Desktop 4.43.1
  • Linux Docker Desktop does not support yet Model Runner in GUI. Please follow Model Runner Documentation
  • Validation step:
  docker model pull  jimclark106/all-minilm:23M-F16
  • Thereafter below compose would not be required (due to temparary lack of support on Linux):
  docker compose --file compose.dmr.yaml up

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“ License

This project is licensed under the Apache License - see the LICENSE file for details.

🀝 Support

For questions, issues, or contributions, please visit our GitHub repository or open an issue.

Contributors

Embabel contributors


(c) Embabel 2025

🌐 Website β€’ πŸ“§ Contact β€’ 🐦 Twitter

About

Travel planner agent

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6