![]() |
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:
|
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.
- 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
)
-
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
-
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
-
Start Background Services
docker compose --file compose.yaml --file compose.dmr.yaml up
-
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
.
-
Access the Application
- Travel Planner: http://localhost:8080/
- Platform Info: http://localhost:8080/platform
-
Launch the Travel Planner
docker compose --profile in-docker up
-
Access the Application
- Travel Planner: http://localhost:8080/
- Platform Info: http://localhost:8080/platform
Enable security by changing the following line in application.properties
:
embabel.security.enabled=true
Then follow these steps to set up Google OAuth:
- Get Google OAuth credentials from Google Cloud Console
- Add redirect URI:
http://localhost:8080/login/oauth2/code/google
- Set your
GOOGLE_CLIENT_ID
andGOOGLE_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.

Input form for travel preferences

AI-generated travel itinerary with detailed recommendations

Map link included in output

Airbnb links for each stay of the trip

Information about plan and usage, including total cost

Emits events about process flow
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
- Backend: Kotlin, Embabel, Spring Boot, Apache Tomcat
- Frontend: htmx, JSON APIs
- Build: Apache Maven
- DevOps: Docker, GitHub Actions
- 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
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the Apache License - see the LICENSE file for details.
For questions, issues, or contributions, please visit our GitHub repository or open an issue.
(c) Embabel 2025
π Website β’ π§ Contact β’ π¦ Twitter