Conduit is an open-source, cross-platform mobile application for Open-WebUI, providing a native mobile experience for interacting with your self-hosted AI infrastructure.
- Features
 - Screenshots
 - Requirements
 - Quickstart
 - Installation
 - Building for Release
 - Configuration
 - Localization (i18n)
 - Compatibility
 - Docs
 - Architecture
 - Troubleshooting
 - Security & Privacy
 - Contributing
 - License
 - Support
 
git clone https://github.com/cogwheel0/conduit && cd conduit
flutter pub get
dart run build_runner build --delete-conflicting-outputs
flutter run -d ios   # or: -d android- Real-time Chat: Stream responses from AI models in real-time
 - Model Selection: Choose from available models on your server
 - Conversation Management: Create, search, and manage chat histories
 - Markdown Rendering: Full markdown support with syntax highlighting
 - Theme Support: Light, Dark, and System themes
 
- Voice Input: Use speech-to-text for hands-free interaction
 - File Uploads: Support for images and documents (RAG)
 - Multi-modal Support: Work with vision models
 - Secure Storage: Credentials stored securely using platform keychains
 - Folder Management: Organize conversations into folders; create, rename, move, and delete
 - Tools (Function Calling): Invoke server-side tools exposed by Open‑WebUI, with result rendering
 
Conduit supports multiple authentication flows when connecting to your Open‑WebUI:
- Username + Password: Sign in directly against servers that expose a login endpoint. Credentials are stored securely using platform keychains.
 - API Key: Paste a server‑issued API token for stateless auth.
 - Custom Headers: Add headers during login (e.g., 
X-API-Key,Authorization,X-Org, or self‑hosted SSO headers) that Conduit will include on all HTTP/WebSocket requests (see Endpoint Allowlist for reverse proxy whitelisting). 
- Flutter SDK 3.0.0 or higher
 - Android 6.0 (API 23) or higher
 - iOS 12.0 or higher
 - A running Open-WebUI instance
 
- Clone the repository:
 
git clone https://github.com/yourusername/conduit.git
cd conduit- Install dependencies:
 
flutter pub get- Generate code:
 
dart run build_runner build --delete-conflicting-outputs- Run the app:
 
# For iOS
flutter run -d ios
# For Android
flutter run -d androidflutter build apk --release
# or for App Bundle
flutter build appbundle --releaseflutter build ios --releaseThe app requires the following permissions:
- Internet access
 - Microphone (for voice input)
 - Camera (for taking photos)
 - Storage (for file selection)
 
The app will request permissions for:
- Microphone access (voice input)
 - Speech recognition
 - Camera access
 - Photo library access
 
The app follows a clean architecture pattern with:
- Riverpod for state management
 - Dio for HTTP networking
 - WebSocket for real-time streaming
 - Flutter Secure Storage for credential management
 
lib/
├── core/
│   ├── models/         # Data models
│   ├── services/       # API and storage services
│   ├── providers/      # Global state providers
│   └── utils/          # Utility functions
├── features/
│   ├── auth/           # Authentication feature
│   ├── chat/           # Chat interface feature
│   ├── server/         # Server connection feature
│   └── settings/       # Settings feature
└── shared/
    ├── theme/          # App theming
    ├── widgets/        # Shared widgets
    └── utils/          # Shared utilities
Contributions are welcome! Please feel free to submit a Pull Request.
Developer workflow:
flutter analyze
flutter pub run build_runner build --delete-conflicting-outputs
# flutter test  # add when tests are available- Fork the project
 - Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
 
- iOS: ensure recent Xcode, run 
cd ios && pod install, set signing team in Xcode if building on device. - Android: minSdk 23+, ensure correct Java and Gradle; if builds fail, try 
flutter clean. - Codegen conflicts: 
flutter pub run build_runner build --delete-conflicting-outputs. 
- Credentials are stored using platform secure storage (Keychain/Keystore).
 - No analytics or telemetry are collected.
 - Network calls are only made to your configured Open‑WebUI server.
 
If you protect Open‑WebUI with SSO or a reverse proxy (Authlia, Authentik, etc.), whitelist these path prefixes so Conduit can complete login, sync, and streaming flows. Paths are relative to your server base URL.
/health/api/*
WebSocket connections use the Socket.IO handshake on /ws/socket.io. Ensure the
same headers (or allowlist rules) apply there as well.
This project is licensed under the GPL3 License - see the LICENSE file for details.
- Open-WebUI team for creating an amazing self-hosted AI interface
 - Flutter team for the excellent mobile framework
 - All contributors and users of Conduit
 
For issues and feature requests, please use the GitHub Issues page.