{"id":30410322,"url":"https://github.com/cogwheel0/conduit","last_synced_at":"2026-05-01T07:02:32.310Z","repository":{"id":309418833,"uuid":"1035165731","full_name":"cogwheel0/conduit","owner":"cogwheel0","description":"Mobile (iOS/Android) client for OpenWebUI. Chat with your self‑hosted AI.","archived":false,"fork":false,"pushed_at":"2026-04-23T18:41:08.000Z","size":266684,"stargazers_count":1400,"open_issues_count":61,"forks_count":138,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-04-23T20:23:59.533Z","etag":null,"topics":["ollama","openwebui","selfhosted"],"latest_commit_sha":null,"homepage":"http://conduit.cogwheel.app/","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cogwheel0.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":"cogwheel0","buy_me_a_coffee":"cogwheel0"}},"created_at":"2025-08-09T19:46:53.000Z","updated_at":"2026-04-23T18:41:11.000Z","dependencies_parsed_at":"2025-08-11T20:38:43.856Z","dependency_job_id":"5992695c-cc6d-4b57-a6d1-ccf764e5c66a","html_url":"https://github.com/cogwheel0/conduit","commit_stats":null,"previous_names":["cogwheel0/conduit"],"tags_count":70,"template":false,"template_full_name":null,"purl":"pkg:github/cogwheel0/conduit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cogwheel0%2Fconduit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cogwheel0%2Fconduit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cogwheel0%2Fconduit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cogwheel0%2Fconduit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cogwheel0","download_url":"https://codeload.github.com/cogwheel0/conduit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cogwheel0%2Fconduit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32487739,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ollama","openwebui","selfhosted"],"created_at":"2025-08-21T23:01:57.057Z","updated_at":"2026-05-01T07:02:32.294Z","avatar_url":"https://github.com/cogwheel0.png","language":"Dart","funding_links":["https://github.com/sponsors/cogwheel0","https://buymeacoffee.com/cogwheel0","https://www.buymeacoffee.com/cogwheel0"],"categories":["Dart"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eConduit\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg\n    src=\"assets/icons/icon.png\"\n    alt=\"Conduit icon\"\n    width=\"96\"\n    height=\"96\"\n  /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eThe native Open WebUI client for iOS and Android.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg\n    alt=\"Latest Release\"\n    src=\"https://img.shields.io/github/v/release/cogwheel0/conduit?display_name=tag\u0026color=0A84FF\"\n  /\u003e\n  \u003cimg\n    alt=\"GitHub all downloads\"\n    src=\"https://img.shields.io/github/downloads/cogwheel0/conduit/total?style=flat-square\u0026label=Downloads\u0026logo=github\u0026color=111827\"\n  /\u003e\n  \u003cimg\n    alt=\"License: GPL-3.0\"\n    src=\"https://img.shields.io/badge/License-GPL%203.0-16A34A\"\n  /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://play.google.com/store/apps/details?id=app.cogwheel.conduit\"\u003e\n    \u003cimg\n      src=\"docs/store-badges/google.webp\"\n      alt=\"Get it on Google Play\"\n      height=\"56\"\n    /\u003e\n  \u003c/a\u003e\n  \u003ca\n    href=\"https://apps.apple.com/us/app/conduit-open-webui-client/id6749840287\"\n  \u003e\n    \u003cimg\n      src=\"docs/store-badges/apple.webp\"\n      alt=\"Download on the App Store\"\n      height=\"56\"\n    /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003eOSS support and project momentum\u003c/sub\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n      \u003ca href=\"https://vercel.com/blog/vercel-open-source-program-fall-2025-cohort#conduit\"\u003e\n        \u003cimg\n          alt=\"Vercel OSS Program\"\n          src=\"https://vercel.com/oss/program-badge.svg\"\n          height=\"25\"\n        /\u003e\n      \u003c/a\u003e\n      \u003cbr\u003e\u003c/br\u003e\n      \u003ca href=\"https://trendshift.io/repositories/15397\" target=\"_blank\"\u003e\n        \u003cimg\n          src=\"https://trendshift.io/api/badge/repositories/15397\"\n          alt=\"cogwheel0%2Fconduit | Trendshift\"\n          height=\"56\"\n        /\u003e\n      \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#why-conduit\"\u003eWhy Conduit\u003c/a\u003e |\n  \u003ca href=\"#feature-snapshot\"\u003eFeature Snapshot\u003c/a\u003e |\n  \u003ca href=\"#screenshots\"\u003eScreenshots\u003c/a\u003e |\n  \u003ca href=\"#quickstart\"\u003eQuickstart\u003c/a\u003e |\n  \u003ca href=\"#build-from-source\"\u003eBuild from Source\u003c/a\u003e |\n  \u003ca href=\"#architecture\"\u003eArchitecture\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg\n    src=\"docs/screenshots/conduit-demo.gif\"\n    alt=\"Conduit demo\"\n    width=\"360\"\n  /\u003e\n\u003c/p\u003e\n\n## Why Conduit\n\nOpen WebUI is excellent on the desktop, but mobile usually breaks down at the\nedges: authentication, streaming stability, sharing content into a prompt, and\nworking quickly from the home screen. Conduit is built to close that gap with a\nnative client that respects self-hosted deployments and still feels polished\nenough for daily use.\n\n## Feature Snapshot\n\n| Area | Included |\n| --- | --- |\n| Chat | Real-time streaming, model selection, temporary chats, conversation search, and folder management |\n| AI workflows | File and image uploads, re-attaching previously uploaded server files, multimodal prompts, server-side tools, saved prompts with variables, model-specific toggle filters, and optional web search or image generation when supported by your server |\n| Authentication | Username and password, LDAP, JWT, custom headers, SSO/OAuth, and reverse proxy login flows |\n| Productivity | Notes with autosave, pinning, AI-generated titles, AI enhancement, audio attachments, channels with threads and reactions when enabled by the server, and sharing from other apps |\n| Rendering | Syntax-highlighted code, LaTeX, Mermaid, Chart.js, citations, follow-up suggestions, reasoning blocks, tool-call details, and code execution rendering |\n| Mobile UX | Voice input, full voice-call mode, home screen widgets, app quick actions, clipboard image paste, haptics, and adaptive Material/Cupertino UI |\n| Personalization | Light, dark, and system themes plus a localized interface across 10 supported locales |\n| Privacy | Native secure storage, no third-party analytics or ads, and no developer-operated backend relaying your data |\n\n## Built for Self-Hosted Reality\n\n- Handles direct Open WebUI sign-in as well as OAuth and SSO providers exposed\n  by your deployment.\n- Works with reverse proxy setups such as `oauth2-proxy`, Authelia,\n  Authentik, Pangolin, and Cloudflare Tunnel by capturing the right cookies and\n  session state on-device.\n- Supports custom headers during connection setup for environments that depend\n  on keys like `X-API-Key`, `Authorization`, or organization routing headers.\n- Keeps credentials in Keychain or Keystore instead of plain-text local\n  storage.\n- Uses WebSocket-backed streaming for fast token-by-token responses and better\n  long-running chat reliability.\n- Surfaces optional server capabilities such as notes, channels, web search,\n  and image generation only when your Open WebUI deployment exposes them.\n\n## Assistant Output That Holds Up on Mobile\n\nConduit renders more than plain chat bubbles. The app includes native Flutter\nsurfaces for:\n\n- syntax-highlighted code blocks with copy and preview affordances\n- Mermaid diagrams and Chart.js embeds\n- LaTeX and math rendering\n- expandable reasoning, tool-call, and code-execution sections\n- inline citations, source cards, and follow-up suggestions\n\n## Platform Integrations\n\n- Home screen widgets on iOS and Android with new chat, microphone, camera,\n  photos, and clipboard entry points\n- App quick actions for starting a new chat or jumping straight into voice call\n- iOS App Intents and Shortcuts for opening chat, sending text, URLs, images,\n  and starting a voice call\n- Share-sheet ingestion and clipboard image paste to move content into a prompt\n  without manual file juggling\n\n## Screenshots\n\n| Chat | Models | Navigation | Settings |\n| --- | --- | --- | --- |\n| \u003cimg src=\"docs/screenshots/1.png\" alt=\"Conduit conversation screen\" width=\"200\" /\u003e | \u003cimg src=\"docs/screenshots/2.png\" alt=\"Conduit model selection screen\" width=\"200\" /\u003e | \u003cimg src=\"docs/screenshots/3.png\" alt=\"Conduit navigation screen\" width=\"200\" /\u003e | \u003cimg src=\"docs/screenshots/4.png\" alt=\"Conduit settings screen\" width=\"200\" /\u003e |\n\n## Quickstart\n\nIf you just want to use Conduit, install it from the App Store or Google Play,\nconnect it to your Open WebUI server, and sign in with the auth flow your\ndeployment already exposes.\n\n1. Launch Conduit.\n2. Enter the base URL for your Open WebUI instance.\n3. Add any required custom headers.\n4. Sign in with username and password, LDAP, JWT, SSO, or proxy auth.\n5. Pick a model and start chatting.\n\nFeatures such as channels, notes, web search, image generation, and toggle\nfilters appear when they are available on the connected server.\n\n## Build from Source\n\n### Requirements\n\n- A recent Flutter SDK with Dart `3.8` or newer\n- Java 17 for Android builds\n- Android 7.0+ (API 24) or iOS 16.0+\n- An Open WebUI instance for normal usage\n- Xcode for iOS builds or Android Studio / Android SDK for Android builds\n\n### Run locally\n\n```bash\ngit clone https://github.com/cogwheel0/conduit.git\ncd conduit\nflutter pub get\ndart run build_runner build --delete-conflicting-outputs\nflutter run -d ios\n# or\nflutter run -d android\n```\n\n### Developer checks\n\n```bash\nflutter pub get\ndart run build_runner build --delete-conflicting-outputs\ndart run custom_lint\nflutter test\n```\n\n### Release builds\n\n```bash\n# Android\nflutter build apk --release\nflutter build appbundle --release\n\n# iOS\nflutter build ios --release\n```\n\n## Localization\n\nConduit currently ships localized UI strings for English, German, Spanish,\nFrench, Italian, Korean, Dutch, Russian, Simplified Chinese, and Traditional\nChinese.\n\n## Architecture\n\nConduit is a Flutter application organized around feature modules and shared\nplatform services. It uses Riverpod 3 with code generation for state management\nand GoRouter for navigation, with persistent local storage and secure\ncredential handling built into the core layer.\n\n### Stack\n\n- Flutter for the UI layer\n- Riverpod 3 and `riverpod_generator` for state and dependency wiring\n- GoRouter for navigation\n- Dio plus socket transport for API and streaming\n- Hive and shared preferences for local persistence\n- Flutter Secure Storage for credentials\n\n### Project layout\n\n```text\nlib/\n  core/         auth, routing, models, persistence, platform services\n  features/\n    auth/       server setup, login, SSO, and proxy auth\n    chat/       conversations, attachments, tools, streaming, voice call\n    channels/   channel browsing and messaging\n    navigation/ chat shell, drawer, and responsive navigation\n    notes/      note editor and AI-assisted note workflows\n    profile/    theme, preferences, and app customization\n    prompts/    prompt helpers and prompt variable UI\n    tools/      tool integration surfaces\n  shared/       reusable widgets, theme tokens, and task infrastructure\n```\n\n\u003cdetails\u003e\n\u003csummary\u003ePlatform permissions\u003c/summary\u003e\n\n- Android asks for internet, microphone, camera, and file access for chat,\n  voice input, attachments, and image capture.\n- iOS requests microphone, speech recognition, camera, and photo library access\n  for voice and attachment workflows.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eTroubleshooting\u003c/summary\u003e\n\n- If streaming stalls, verify WebSocket support is enabled on your Open WebUI\n  deployment. The upstream guidance requires\n  `ENABLE_WEBSOCKET_SUPPORT=\"true\"`.\n- If iOS device builds fail, run `cd ios \u0026\u0026 pod install` and confirm signing is\n  configured in Xcode.\n- If Android builds fail, confirm your Java and Gradle toolchain, then try\n  `flutter clean`.\n- If code generation fails, rerun\n  `dart run build_runner build --delete-conflicting-outputs`.\n\n\u003c/details\u003e\n\n## Security and Privacy\n\n- Preferences stay on-device and credentials use platform secure storage.\n- Conduit does not include third-party analytics or advertising SDKs.\n- Diagnostic logging is local and transient, and Conduit does not relay your\n  data through developer-operated backend infrastructure.\n- Additional details are documented in [PRIVACY_POLICY.md](PRIVACY_POLICY.md).\n\n## Contributing\n\nConduit is actively developed and feedback is welcome.\n\n- Report bugs in [GitHub Issues](https://github.com/cogwheel0/conduit/issues).\n- Start product and feature discussions in\n  [GitHub Discussions](https://github.com/cogwheel0/conduit/discussions).\n- Share deployment notes, questions, or ideas in\n  [GitHub Discussions](https://github.com/cogwheel0/conduit/discussions).\n\nAt the moment, unsolicited pull requests are not the primary contribution path.\nOpen an issue or discussion first so changes can line up with the current\nroadmap.\n\n## Enterprise and White-Label\n\nIf you need private distribution, internal deployment support, or a custom\nenterprise/white-label build, open a discussion or contact the maintainer\nthrough the repository.\n\n## Support\n\nIf Conduit is useful to you, you can support ongoing development through\n[GitHub Sponsors](https://github.com/sponsors/cogwheel0) or\n[Buy Me a Coffee](https://www.buymeacoffee.com/cogwheel0).\n\n## License\n\nConduit is released under the [GPL-3.0 License](LICENSE).\n\nConduit is an independent client and is not affiliated with Open WebUI.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcogwheel0%2Fconduit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcogwheel0%2Fconduit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcogwheel0%2Fconduit/lists"}