Vivid
Android version of the open-source Moblin IRL streaming app. Vivid lets you broadcast high-quality live video to platforms like Twitch, YouTube, Facebook, Kick or your own SRT server, with advanced features like multi-network bonding, OBS WebSocket control, configurable overlays, and full I18n support.
Vivid brings the Moblin IRL streaming app to Android
A Kotlin app that streams to Twitch, YouTube, Kick, or an SRT server with OBS control and a built-in chat bot.
What Vivid is built to do
Vivid is an Android implementation of the open source Moblin IRL streaming app. The stated goal of the project is functional parity with Moblin, adapted to the Android platform, and the README tracks that progress honestly with a feature list and a parity status table. The app is written in Kotlin and targets Android API 24 and above. Rather than relying on Google Play, Vivid ships its APKs through GitHub Releases in stable, nightly, and alpha channels, and the README walks through downloading, allowing installs from unknown sources, and granting camera and microphone permissions. A persistent foreground notification keeps the stream alive when the screen is off or the app is swiped away, because the encoder runs on a view independent pipeline. The README also explains how to keep the app updated automatically with Obtainium, which detects new GitHub Releases and installs them over the previous build thanks to consistent signing. This distribution model means users get new builds directly from the repository without waiting on a store review, which suits a project that iterates daily through its nightly channel. The README is explicit that features marked planned are not yet shipped, so readers should not rely on them for production streaming until they appear in a tagged release.
Streaming and camera features
The implemented feature set covers the core of a mobile IRL stream. Vivid streams over RTMP, RTMPS with TLS, and SRT to platforms such as Twitch, YouTube, and Kick, or to a custom server such as Owncast. Multi streaming sends the same feed to two RTMP targets in parallel, and if one target fails the other keeps running. A go live self check validates the URL and stream key before starting and blocks on clear errors while showing warnings for lesser problems. On the camera side, the app offers focus lock, tap to focus, pinch to zoom, a stabilization toggle, and a torch control that can also be triggered by an owner chat command. OBS WebSocket control lets the phone switch scenes and start or stop recording and streaming on a desktop OBS instance. Background streaming continues even if the activity is destroyed, and an in app log view keeps daily rotated logs with crashes marked and sensitive values such as stream keys and tokens redacted before they are stored. A small LAN web remote control exposes stream status and start or stop on port 8080 behind a token. These streaming and camera capabilities are the parts the README marks as implemented, while higher resolution output and network bonding remain listed under the planned section rather than shipped.
Chat, AI bot, and localization
Twitch chat integration is built on EventSub for reading and the Helix API for sending, with no IRC connection, and it powers a chat overlay plus an automated bot. The overlay renders messages with Twitch colors, badges, and inline emotes, and it shows event alerts for follows, subscriptions, and raids. The AI chat bot connects when the stream starts and answers viewers through any OpenAI compatible endpoint, including OpenAI, Gemini, Groq, DeepSeek, or a local Ollama server, then shuts down when the stream ends. A mode switch picks between a deterministic command bot and a more autonomous model driven reply mode, and rate limits such as a per viewer cooldown and an hourly reply budget keep costs under control. The README notes that multi platform chat for Kick, YouTube, and SOOP is on the post beta roadmap, so today the chat features target Twitch specifically. On localization, every UI string is externalized into per module strings files, with German as the default and full English and French translations, and CI gates enforce that the three languages stay complete. The README also notes that chat integration for custom platforms such as Owncast is on the post beta roadmap, so at present only Twitch chat is read by the overlay and the bot.
Editorial conclusion
The application is released under the MIT license and its most recent commit was on 2026-08-26.
Community notes