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
flutter pub 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:
flutter pub run build_runner build --delete-conflicting-outputs
- Run the app:
# For iOS
flutter run -d ios
# For Android
flutter run -d android
flutter build apk --release
# or for App Bundle
flutter build appbundle --release
flutter build ios --release
The 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
See the dedicated documentation: docs/localization.md
Conduit App | Open‑WebUI | Notes |
---|---|---|
1.x | 0.3.x+ | OpenAPI validation removed in 1.1+ (no bundled schema) |
- Localization:
docs/localization.md
- Architecture (planned):
docs/architecture.md
- Theming (planned):
docs/theming.md
- Release Process (planned):
docs/release.md
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.