A cross-platform GUI client for Ollama with advanced features for chat management, context handling, and file processing, built with Flutter.
- Multiple Chat Sessions: Create and manage multiple chat conversations
- Model Selection: Choose from available Ollama models for each chat
- Automatic Chat Naming: Chats are automatically named based on their content
- Manual Chat Renaming: Easily rename chats for better organization
- Chat Deletion: Delete unwanted conversations
- Selectable Text: All text (both user and AI responses) is selectable for easy copying
- Enhanced Chat Bubbles: Visually distinct chat bubbles with improved styling
- System Prompt Configuration: Set custom system prompts for each chat
- Chat History Persistence: All conversations are automatically saved and restored
- Keyboard Shortcuts: Use Ctrl+Enter to quickly send messages
- Live Response Streaming: See responses as they are generated in real-time
- Stop Button: Cancel response generation at any time
- Enhanced Context Memory: Maintains comprehensive conversation history for better follow-up understanding
- Smart Context Handling: Automatically includes previous messages for short follow-up prompts
- Configurable Context Length: Adjust the token context window size (2048-32768)
- Error Recovery: Automatic retry mechanism for failed API calls
- File Attachments: Attach files to your messages for context
- PDF Support: Extract and process text from PDF files
- Image Support: Process images as part of your prompts
- Multiple File Types: Support for various text and document formats
- File Size Limits: Automatic handling of large files with 10MB limit
- Smart File Cleanup: Advanced automatic cleanup system with intelligent monitoring
- Storage Management: Real-time file size monitoring with configurable thresholds
- Background Cleanup: Isolate-based cleanup operations for better performance
OllamaVerse features an advanced file caching system that dramatically improves performance by eliminating redundant file processing operations.
The system creates unique cache signatures for each file using SHA-256 hashing based on:
- File path and name
- File size
- Last modification timestamp
When you upload a file that's been processed before, the system instantly retrieves the cached content instead of re-processing it from scratch.
- 99% Speed Improvement: Previously processed files load in under 50ms instead of several seconds
- Resource Efficiency: 50-90% reduction in CPU usage for repeated file operations
- Seamless Experience: Zero waiting time for cached files in multi-turn conversations
- Batch Optimization: Multiple file uploads are intelligently optimized with cache detection
- Automatic Size Control: 200MB cache limit with Least Recently Used (LRU) eviction
- Data Freshness: 30-day automatic expiration ensures up-to-date content
- File Change Detection: Cache automatically invalidates when source files are modified
- Error Resilience: System gracefully falls back to processing if cache fails
- Real-time Statistics: Monitor cache size and entry count in Settings
- Manual Cache Clearing: Clear cache instantly with immediate UI feedback
- Transparent Operation: Works seamlessly behind the scenes with no user intervention required
- Storage Integration: Cache management integrated with existing cleanup system
This caching system is particularly beneficial for Ollama workflows involving:
- Document Analysis: Instantly re-analyze PDFs, research papers, or reports across multiple chats
- Code Review: Rapidly iterate on code files without processing delays
- Image Processing: Immediate access to previously uploaded images for vision models
- Multi-session Workflows: Same files available instantly across different conversations
- Unified Operation Tracking: New
isAnyOperationInProgressgetter tracks all types of operations (generation, file processing, sending) - Comprehensive Cancellation: Stop button now properly cancels all operations including file processing
- Proper State Reset: Cancellation correctly resets all operation flags and clears any ongoing streams
- Persistent State Fix: Prevents stop button state from persisting when switching/deleting chats during operations
- Smart Button Logic: Button dynamically switches between send and stop modes based on any ongoing operation
- Immediate Response: Stop button provides immediate feedback and cancellation without delays
- Secure Authentication Storage: Bearer auth tokens stored using encrypted secure storage
- Dual Storage System: Sensitive data in secure storage, regular settings in standard storage
- Storage Statistics: Monitor cache, logs, and attachment storage usage
- Manual Cleanup Control: Force cleanup of temporary files through settings
- Copy Code Button: Easily copy code snippets
- Language Labels: Code blocks show the programming language
- LaTeX Support: Render mathematical formulas and equations
- Dark Mode: Toggle between light and dark themes with instant switching
- System Theme Sync: Automatic theme detection on Windows (follows system preferences)
- Font Size Control: Adjust text size for better readability (12-24px range)
- Responsive Design: Fully responsive layout optimized for mobile, tablet, and desktop
- Adaptive UI: Different layouts for small screens (≤600px) and large screens
- Custom Themes: Support for Dracula dark theme and Material light theme
- Performance-Optimized Animations: Smooth transitions with minimal frame drops
- Real-Time Performance Tracking: Monitor frame rates, theme switching speed, and UI responsiveness
- Performance Dashboard: View detailed metrics in settings with recommendations
- Frame Drop Detection: Automatic detection and logging of performance issues
- Theme Switch Optimization: Ultra-fast theme switching (<50ms target)
- Performance Logging: Console output with detailed performance summaries
- Metrics Reset: Reset performance counters and export performance data
- Server Configuration: Configure Ollama server host and port
- Authentication: Support for Bearer Auth Token when connecting to secured Ollama servers
- Connection Testing: Test and verify connection to the Ollama server
- Font Size: Adjust the font size for better readability
- Dark Mode: Toggle between light and dark themes
- Live Response: Toggle real-time response streaming
- System Prompt: Configure default system prompt for new chats
- Performance Settings: Monitor and configure app performance
- Storage Settings: Manage file cleanup and storage usage
- Keyboard Shortcuts: Ctrl+Enter to send messages, system menu shortcuts
- Responsive Navigation: Adaptive drawer/menu system based on screen size
- Touch-Friendly: Optimized touch targets for mobile devices
- High Contrast Support: Enhanced contrast modes for better visibility
- Custom Host/Port: Connect to any Ollama server
- Model Refresh: Update the available model list
- Connection Status: Real-time server connection status
- Error Handling: Detailed error messages for connection issues
- Network Security: Configured for both HTTP and HTTPS connections
- Timeout Handling: Robust connection timeout management
- Windows Integration: Native window decorations with theme sync
- Android Optimization: Network security configuration for local connections
- macOS Support: Native menu integration and system preferences
- Adaptive Icons: Platform-specific app icons and launch screens
- Ollama installed and running on your local machine or a remote server
- At least one model pulled in Ollama (e.g.,
ollama pull llama3) - Flutter SDK (for development)
- Download the latest release for your platform
- Launch the application
- Configure the Ollama server address in Settings (default: 127.0.0.1:11434)
- Click "New Chat" to start a conversation
- Select a model from the available models list
- Type your message and press Enter or click Send
- Attach files using the attachment button if needed
- Use the stop button to cancel response generation
- Adjust settings as needed through the Settings screen
- Use Ctrl+Enter to quickly send messages
On Windows, the chat history is stored in the application documents directory at:
C:\Users\<Username>\AppData\Roaming\com.ollama.verse\chats\
On Android, the chat history is stored in the application's private documents directory at:
/data/data/com.ollama.verse/app_flutter/chats/
Or on newer Android versions with scoped storage:
/storage/emulated/0/Android/data/com.ollama.verse/files/chats/
- Install Flutter SDK
- Clone the repository
- Install dependencies
- Configure your IDE
# Clone the repository
git clone https://github.com/MqtUA/OllamaVerse.git
# Navigate to the project directory
cd OllamaVerse
# Install dependencies
flutter pub get
# Run the app
flutter run# Run unit tests
flutter test
# Run integration tests
flutter test integration_test- Follow the official Dart style guide
- Use meaningful variable and function names
- Add comments for complex logic
- Write unit tests for new features
- Fork the repository
- Create a feature branch
- Make your changes
- Write tests for new features
- Submit a pull request
- http: Network requests to the Ollama API
- provider: State management throughout the application
- shared_preferences: Storing user settings and preferences
- path_provider: Accessing system directories for file storage
- path: File path manipulation and management
- flutter_secure_storage: Encrypted storage for sensitive data like auth tokens
- package_info_plus: App version and metadata information
- gpt_markdown: Rendering markdown content with LaTeX support
- flutter_highlighter: Code syntax highlighting for various programming languages
- highlight: Core syntax highlighting engine
- flutter_syntax_view: Additional code display capabilities
- file_picker: Selecting files from the device
- flutter_file_dialog: Native file dialogs for saving files
- syncfusion_flutter_pdf: PDF processing and text extraction
- uuid: Generating unique identifiers for chats and messages
- logging: Application logging and debugging
- logger: Enhanced logging capabilities
- flutter_launcher_icons: App icon generation
This project is licensed under the MIT License - see the LICENSE file for details.
If you're experiencing connection issues on Android when trying to connect to a remote Ollama instance:
-
"Connection Failed" or "Connection timed out" errors:
- Check Network Connectivity: Ensure your Android device is connected to the same network as your Ollama server
- Verify Server Address: Make sure you're using the correct IP address and port (not
localhostor127.0.0.1when connecting remotely) - Test Server Accessibility: Try accessing
http://YOUR_SERVER_IP:11434/api/tagsin a web browser on your Android device
-
Firewall and Network Configuration:
- Server Firewall: Ensure your Ollama server's firewall allows connections on port 11434
- Router/Network Firewall: Check if your router or network firewall is blocking the connection
- Ollama Binding: Make sure Ollama is bound to
0.0.0.0:11434(not just127.0.0.1:11434)
-
Android-Specific Network Issues:
- Clear DNS Cache: Go to Android Settings > Apps > OllamaVerse > Storage > Clear Cache
- Network Security: The app is configured to allow HTTP connections for development
- Mobile Data vs WiFi: Try switching between mobile data and WiFi to isolate network issues
To allow remote connections to your Ollama server:
-
Set Environment Variable (recommended):
export OLLAMA_HOST=0.0.0.0:11434 ollama serve -
Or start with host binding:
ollama serve --host 0.0.0.0:11434
-
For systemd services, edit the service file:
sudo systemctl edit ollama
Add:
[Service] Environment="OLLAMA_HOST=0.0.0.0:11434"
- From your computer:
curl http://YOUR_SERVER_IP:11434/api/tags - From Android browser: Navigate to
http://YOUR_SERVER_IP:11434/api/tags - In the app: Go to Settings and use "Test Connection"
- Local network:
192.168.1.100:11434 - Docker: Ensure port mapping
-p 11434:11434 - Cloud server: Use public IP and ensure security groups/firewall rules allow port 11434
If issues persist, check the app logs in Settings > About for detailed error messages.