Your Personal AI Travel Assistant That Works Completely Offline
Intelligent itinerary planning • Smart routing • Voice navigation • Zero internet required
WanderMind LLM is a revolutionary Flutter-based mobile travel companion that brings the power of Large Language Models (LLM) directly to your device. Unlike traditional travel apps that require constant internet connectivity, WanderMind runs 100% offline using on-device AI powered by Llama.cpp, providing intelligent travel planning, personalized recommendations, and smart navigation even in remote locations.
- Complete Privacy: Your travel data never leaves your device
- Truly Offline: Works perfectly without internet connection
- AI-Powered: Local LLM provides intelligent travel insights
- Smart Navigation: Advanced routing with scenic route options
- Budget-Friendly: No API costs, no subscription fees
- Open Source: Free and open for everyone
- Local LLM Integration: Powered by Llama.cpp with native C++ implementation
- Smart Travel Assistant: Conversational AI for travel queries and recommendations
- Personalized Itineraries: AI-generated day-by-day travel plans
- Context-Aware Suggestions: Understands your preferences and budget
- Multiple Model Support: Choose between TinyLlama, Phi-2, and other optimized models
- Smart Routing Engine: Multi-provider support (OSRM, OpenRouteService, MapBox)
- Scenic Route Planning: Algorithm-based scenic path optimization
- Offline Map Support: Download and cache map tiles for offline use
- Multiple Transportation Modes: Car, bike, walking, and public transport
- Voice Navigation: Turn-by-turn voice guidance with Flutter TTS
- Real-time Location Tracking: GPS-based location services
- Day-by-Day Itineraries: Detailed plans with time slots and activities
- Budget Management: Track expenses with cost breakdowns
- Interest-Based Planning: Customize based on your travel interests
- Activity Categorization: Sightseeing, food, shopping, entertainment, and more
- Plan Storage: Local persistence with Hive database
- Edit & Share Plans: Modify and export your travel plans
- Natural Conversations: Chat with AI about travel destinations
- Route Guidance: "How do I get from Dubai Airport to my hotel?"
- Local Insights: Cultural tips, safety advice, and recommendations
- Multi-turn Context: AI remembers your conversation history
- Rich Responses: Formatted answers with actionable suggestions
- Material Design 3: Beautiful, intuitive interface
- Dark Mode Support: Comfortable viewing in any lighting
- Custom Theming: Poppins font with carefully crafted color schemes
- Responsive Design: Optimized for various screen sizes
- Smooth Animations: Polished user experience
Add your app screenshots here to showcase the UI and features
[Home Screen] [Chat Interface] [Route Planning] [Itinerary View]
Add a video demonstration or GIF showcasing key features
- Flutter SDK: 3.10 or higher
- Dart SDK: 3.0 or higher
- Android Studio or VS Code with Flutter extensions
- Android SDK: API level 24+ (Android 7.0+)
- NDK: For native C++ compilation (included in Android Studio)
-
Clone the repository
git clone https://github.com/yourusername/wandermind_llm.git cd wandermind_llm -
Install dependencies
flutter pub get
-
Set up native LLM dependency
bash android/app/src/main/cpp/setup_llama.sh
This clones and pins llama.cpp for the Android native build. Required before the first Android build.
-
Generate code
flutter pub run build_runner build --delete-conflicting-outputs
-
Set up environment variables (optional)
cp .env.example .env # Edit .env only if you want Mapbox tiles/routing (OpenStreetMap works without it)If you use a
.envfile, uncomment the# - .envline underflutter: assets:inpubspec.yaml. -
Run the app
flutter run
bash android/app/src/main/cpp/setup_llama.sh
flutter build apk --release --target-platform android-arm64flutter build appbundle --releasewandermind_llm/
├── lib/
│ ├── core/ # Core functionality
│ │ ├── config/ # App configuration
│ │ ├── data/ # Training data & knowledge base
│ │ ├── model/ # Data models (Freezed)
│ │ ├── provider/ # Riverpod providers
│ │ ├── routing/ # GoRouter navigation
│ │ ├── service/ # Core services
│ │ ├── theme/ # App theming
│ │ └── widget/ # Reusable widgets
│ │
│ ├── feature/ # Feature modules
│ │ ├── chat/ # AI chat interface
│ │ ├── explore/ # Map exploration
│ │ ├── home/ # Dashboard & home
│ │ ├── llm/ # LLM integration
│ │ ├── location/ # GPS & geolocation
│ │ ├── onboarding/ # First-time user flow
│ │ ├── route/ # Routing & navigation
│ │ ├── setting/ # App settings
│ │ └── travel_plan/ # Trip planning
│ │
│ └── main.dart # App entry point
│
├── android/ # Android-specific code
│ └── app/src/main/
│ ├── kotlin/ # Kotlin platform channels
│ │ └── dev/abbasian/wandermind_llm/
│ │ ├── LlamaCppService.kt
│ │ ├── LlamaCppChannel.kt
│ │ └── MainActivity.kt
│ └── cpp/ # Native C++ LLM integration
│ ├── llama_android.cpp
│ ├── llama.cpp/ # Llama.cpp library
│ └── CMakeLists.txt
│
├── assets/
│ ├── data/ # Training data
│ ├── images/ # App images
│ ├── fonts/ # Custom fonts
│ └── models/ # LLM models (downloaded)
│
└── test/ # Unit & widget tests
- Flutter 3.10+: Cross-platform UI framework
- Dart 3.0+: Programming language
- Material Design 3: Modern UI components
- Riverpod 2.4: Reactive state management
- Freezed: Immutable data classes
- GoRouter: Declarative routing
- Llama.cpp: On-device LLM inference
- Native C++ Integration: JNI bindings for Android
- Platform Channels: Dart
↔️ Kotlin↔️ C++ communication - Model Support: TinyLlama, Phi-2, Mistral (GGUF format)
- Flutter Map: OpenStreetMap integration
- OpenRouteService: Routing API
- OSRM: Open-source routing engine
- Offline Routing: Custom A* algorithm implementation
- Scenic Routes: Proprietary scoring algorithm
- Hive: Fast, lightweight NoSQL database
- SharedPreferences: Key-value storage
- Path Provider: File system access
- Geolocator: GPS positioning
- Geocoding: Address
↔️ coordinates conversion
- Dio: HTTP client
- Connectivity Plus: Network state monitoring
- Flutter TTS: Voice navigation
- Logger: Structured logging
- Image Picker: Photo integration
- Permission Handler: Runtime permissions
WanderMind supports multiple LLM models optimized for mobile devices:
| Model | Size | RAM Required | Best For |
|---|---|---|---|
| TinyLlama 1.1B | ~600MB | 2GB+ | Fast responses, basic queries |
| Phi-2 2.7B | ~1.6GB | 4GB+ | Better reasoning, complex planning |
| Mistral 7B Q4 | ~3.5GB | 6GB+ | Advanced conversations (high-end devices) |
First Launch: The app will automatically download the selected model (TinyLlama by default). This may take 5-15 minutes depending on your connection.
Maps and routing work out of the box with OpenStreetMap and OSRM — no configuration required.
To enable Mapbox tiles and directions, create a .env file in the project root:
# Optional: Mapbox tiles and routing (https://account.mapbox.com/)
MAPBOX_ACCESS_TOKEN=your_token_hereThen uncomment # - .env under flutter: assets: in pubspec.yaml, or pass the token at build time:
flutter run --dart-define=MAPBOX_ACCESS_TOKEN=pk.your_token_hereflutter testflutter test test/feature/llm/llm_service_test.dartflutter test --coverage
genhtml coverage/lcov.info -o coverage/html- LLM Initialization: 30-45 seconds (first launch)
- Response Generation: 2-5 seconds for 100 tokens
- Route Calculation: <500ms for typical routes
- Map Rendering: 60 FPS with cached tiles
- Memory Usage: 300-500MB (TinyLlama loaded)
- Use TinyLlama for devices with <4GB RAM
- Pre-download map tiles for offline areas
- Enable route caching for frequently used paths
- Close other apps for better LLM performance
This project is licensed under the MIT License - see the LICENSE file for details.