A Flutter chat app that actually ships on HarmonyOS
Kelivo is a cross-platform LLM client with an unusually broad platform footprint and a kitchen-sink feature list.

What it does
Kelivo is a Flutter-based chat client for large language models. It talks to OpenAI, Google Gemini, Anthropic, and others, renders Markdown and LaTeX, handles images and documents, and will read replies aloud via system TTS or cloud voice providers. The app runs on Android, iOS, Windows, macOS, Linux, and—unusually—HarmonyOS via a separate OpenHarmony port.
The interesting bit
The project treats platform breadth as a first-class feature rather than an afterthought, and it packs in integrations that many competitors skip: MCP tool calling, a built-in web search layer with fourteen search engines to choose from, QR-code config sharing, and even an optional Android background-generation mode so your chat keeps cooking while you switch apps. The UI borrows heavily from RikkaHub, which saves reinvention and keeps the interface coherent.
Key highlights
- Multi-provider LLM support with custom HTTP headers and request bodies
- Multimodal input: images, PDFs, Word docs, plain text
- Voice output via system TTS, OpenAI, Gemini, or ElevenLabs
- MCP tool integration plus a built-in MCP Fetch tool
- Fourteen search engine integrations including SearXNG, Perplexity, and Grok
- Chat history backup/restore and QR-code provider config sharing
- Material You dynamic theming on Android 12+
- AGPL-3.0 licensed
Caveats
- The README is heavy on emoji feature lists and light on architecture or security details; how local data is encrypted, if at all, is unclear
- “HarmonyOS support” actually lives in a separate repository (
kelivo-ohos), so maintenance burden and parity are unknown - Background generation on Android sounds useful but the README doesn’t clarify battery or permission implications
Verdict
Worth a look if you want one chat client across desktop and mobile—including Huawei’s ecosystem—and you value built-in search and tool calling over a minimal, single-purpose UI. Skip it if you need deep transparency into data handling or a native, platform-specific experience.