Repository navigation
Releases
NexusIRL v0.5.1
This release fixes streaming on Android 10 to 12, makes the stream's audio bitrate setting work,
and adds SRTLA connection priorities from Moblin.
Which file: NexusIRL-v0.5.1-arm64-v8a.apk for practically every phone from the last several
years, or the universal APK for anything else. It installs over earlier versions and keeps your
settings.
New
- SRTLA connection priorities, as in Moblin (Streams → edit → SRT → Connection priorities, or
the new Connection priorities quick button): give mobile data, Wi-Fi, Ethernet and each Moblink
relay a priority from 1 to 10, or turn a connection off. Changes apply while live, and
priorities in imported Moblin settings are used. - More of the app is translated, using Moblin's translations (OBS remote control, Kick alerts,
Twitch banners, audio settings).
Fixed
- Android 10 to 12: SRT and SRTLA streams whose URL has a stream ID stayed at "Connecting"
forever, because the app used a Java method that only exists from Android 13. RTMP servers that
ask for a user name and password, Twitch searches and chat messages, encrypted settings files
and some timestamp comparisons had the same kind of problem. A new build check now compares the
app's shared code with what Android 10 provides, so this cannot slip through again. If a stream
ever fails to start like this, the app now says so instead of waiting. - Audio bitrate: the stream's audio bitrate setting (also from imported Moblin settings) was
ignored, and audio always went out at 128 kbps. Streams and recordings now use their own
setting, within what the phone's encoder can do. - Camera back after another app: after another app used the camera while live (for example
the phone's Camera app), the picture stuttered for several seconds once the camera returned.
It now stays at full frame rate. - If a phone cannot encode Opus, the app says it is streaming AAC instead; if audio cannot start
at all, it says the stream has no sound.
Tested
- Huawei P30 Pro (Android 10, no Google services): live to a server over SRTLA with AAC audio,
after the Android 10 fix (before it, the stream stayed at "Connecting"). - Galaxy S26 Ultra: live while walking (switching to the Camera app and back, recording, the
front camera, filters); live at home with a recording, switching between the built-in
microphone and Bluetooth earbuds; connection priorities, switching between Wi-Fi and mobile
data and running on mobile data only. - The unit and interoperability tests, now including a check of the shared code against
Android 10's API.
Not affiliated with or endorsed by the Moblin project.
NexusIRL v0.5.0
This release adds OBS remote control, Opus audio, Kick sign-in and many more Twitch and Kick
alerts, and makes bonded IRL streaming hold its bitrate on the road. It also closes every finding
of an independent pre-release security and reliability audit.
Which file: NexusIRL-v0.5.0-arm64-v8a.apk for practically every phone from the last several
years (about a third of the universal APK's size), or the universal APK for anything else. It
installs over earlier versions and keeps your settings.
Twitch users: sign in to Twitch again in the stream's settings to get the new alerts (hype
trains, polls, predictions and more). Your current sign-in keeps working with the alerts it has.
New
- OBS remote control (Streams → edit → OBS remote control, OBS 28+): switch scenes, start and
stop OBS streaming and recording, mute inputs and fix the stream's source from the new OBS
quick button. Going live and ending can start and stop OBS, and OBS switches to a BRB scene
while the phone's stream is reconnecting. - Opus audio for streams (Streams → edit → Audio → Codec), over SRT, SRTLA and RTMP when the
server accepts it. Recordings stay AAC. - Kick: sign in to send chat messages and change the title and category; Kick alerts
(subscriptions, gifts, rewards, hosts, Kicks) pop up and show in chat. - Twitch: hype trains, polls and predictions as banners and in chat; watch streaks, Prime and
upgraded subscriptions, shared chat partners' alerts, ad break toasts and shoutouts. - Torch brightness on Android 15+ phones that support it, also from chat
(!moblin torch level). - Stream editor: "Paste stream key or URL", and saved keys are shown only after your
fingerprint, face or screen lock.
Fixed
- Bitrate on the road: the Galaxy S26 Ultra sent 7–14 Mbps for a 5 Mbps stream while driving,
overloading the connection. The video now stays within 1.2 times its bitrate, as in Moblin; in
the next field test the server lost 16 late packets in 14 minutes instead of 1,896 in 8. - Moblink with an iPhone over a hotspot (IPv6) stayed on "Connecting"; it now bonds.
- Car Bluetooth became the microphone for whole streams. "Bluetooth output only" is now on
by default, as in Moblin, and the microphone you choose is remembered. - Another app taking the camera (the Camera app) froze the picture until the camera was
switched by hand; it now comes back by itself. - No more freezes of up to 8 seconds when going live, ending or stopping a recording.
- A failed recording (for example with storage full) no longer says "Recording saved".
- A large or broken colour LUT, for example in shared settings, no longer crashes the app.
Security
From an independent pre-release audit (docs/audit/ in the repository):
- Every password, key and token in the settings is kept encrypted, also those from iOS settings
NexusIRL does not use itself, and "Export without keys" leaves all of them out. Settings from
earlier versions are protected the first time this version starts. - Web remote control, remote control and Moblink are hardened against overload and oversized
messages, and accept only devices on the local network. - Copied secrets are hidden from keyboards and cleared after a minute; remote settings imports
need your yes on the phone (off by default).
Tested
- Galaxy S26 Ultra: field tests on 1 and 2 November 2026 (mobile data, driving, bonding with an
iPhone as Moblink relay, the Camera app taking the camera), each checked against the server's
recording. On 8 November: mobile data only, Moblink bonding with an iPhone, Opus audio, a
recording made while live (AAC, plays cleanly), and a 13-minute drive that held 30 fps and
5 Mbps although the phone reached critical temperature. - The emulator: going live, ending, recording and leaving the app in quick succession.
- Upgrading: the published v0.4.0 updated in place to this release's signed APK (version code 6
to 73), keeping its streams and stream keys. - About 580 unit and interoperability test runs, including streaming to ffmpeg over RTMP, SRT and
SRTLA, and Opus over MPEG-TS and RTMP.
Known issue
- After another app has used the camera while live (for example the phone's Camera app), the
picture can stutter for a few seconds once the camera is back: the video encoder saves up
bitrate while the picture stands still and then spends it at once. The stream stays live and
within its bitrate. Before this release the picture stayed frozen until the camera was switched
by hand. A fix is planned for the next release.
Not affiliated with or endorsed by the Moblin project.
NexusIRL v0.4.0
This release adds Moblin's chat bot, multi streaming and Discord snapshots, brings images along
with imported settings, and fixes dropped frames at the start of 60 fps recordings. It is also the
first release submitted to F-Droid.
Which file: NexusIRL-v0.4.0-arm64-v8a.apk for practically every phone from the last several
years, or the universal APK for anything else. It installs over earlier versions and keeps your
settings.
New
- Chat bot (Settings → Chat → Bot), as in Moblin: you and your moderators type
!moblin
commands in chat to switch scenes, mute and unmute, zoom, turn the torch and effects on and off,
take snapshots, and start or stop the stream or change its Twitch title and category. Each
command has Moblin's permissions (moderators, subscribers, everyone, cooldown) and aliases such
as!screenwork. Chat bot settings import from iOS Moblin. See the
chat bot guide. - Multi streaming: an RTMP stream can also go to more RTMP servers at once, for example Twitch
and YouTube, from the same encoder (Streams → edit → Multi streaming). Each destination
reconnects on its own, and its stream key is protected like the stream's own. - Snapshots to Discord: set a Discord webhook per stream (Streams → edit → Discord), with a
separate one for chat bot snapshots and an "only when live" switch. The chat bot's snapshot can
also come from another phone's web remote control. - Forwarded chat: chat and Twitch alerts forwarded by a remote control assistant show in chat,
the chat widget and alert pop-ups. - Bonding status: while live over SRTLA, the main screen shows each network's share of the
data, for example "60% Cellular, 40% WiFi".
Fixed
- 60 fps recordings could miss frames at the start: starting or stopping a recording or stream
held up the video for up to a tenth of a second. - Imported settings now bring their images (image widgets and LUT files), and exports include
them. Image widgets apply their LUT effects. - After importing settings without quick buttons, mute, torch and effects did nothing until the
app was restarted. - A scene whose camera is "None" shows black behind its widgets, as in Moblin.
- Two crashes: stopping a stream within a moment of starting it, and an emote without a name in
chat.
Changed
- Built with the latest Android build tools (Android Gradle Plugin 9.4, Kotlin 2.4, compile SDK
37). The app still targets Android 16.
Tested
- Galaxy S26 Ultra: every main-screen control and screen (27 checks), a camera stress test, and
Moblin's own system tests for settings, scenes, RTMP and multi-RTMP streaming, chat and the chat
bot, and six recording formats including 1080p60. - The emulator UI tests, and F-Droid's scanner and build tools.
Not affiliated with or endorsed by the Moblin project.
NexusIRL v0.3.0
This release fixes camera switching and the Portrait button, makes video and audio timing as even
as Moblin's, improves recordings, and adds encrypted settings exports. It is also the first
release that F-Droid's tools can build from source.
Which file: NexusIRL-v0.3.0-arm64-v8a.apk for practically every phone from the last several
years, or the universal APK for anything else. It installs over earlier versions and keeps your
settings.
Fixed
- Back and front camera: switching failed with "Camera session configuration failed" or
"Camera error 2" because the next camera opened before the previous one had closed. Cameras now
take turns, and quick taps end on the camera you chose last. Old camera errors clear once the
camera works again. - Portrait button: with a landscape stream the picture was sideways when holding the phone
upright. It now stays upright, as in Moblin, and the stream shows a landscape crop of it. - Back from the LUTs or Widgets screen, opened with a quick button, returns to the main screen.
- Two crashes: turning the screen off while the preview was being set up, and quick scene switches
while the camera was opening.
Improved
- Even timing: every video frame and audio frame is sent exactly one frame time after the one
before, like Moblin's frame timer, which players and streaming servers handle best. - Recordings use B-frames for better quality at the same size, start exactly with the picture
and keep their last frames. - Microphone: mono by default, as in Moblin. Turn on Prefer stereo in the microphone
picker for stereo from the built-in microphones.
New
- Encrypted settings exports: exporting with stream keys can encrypt the file with a passphrase
(AES-256-GCM). NexusIRL asks for the passphrase when importing it. The unencrypted export for
iOS Moblin is still available.
Tested
- Galaxy S26 Ultra: every main-screen control and screen (27 checks), 60 rapid back/front camera
switches, the Portrait button held upright with both cameras, a 5-minute stream to a test server
with every frame evenly spaced, and Moblin's own system tests for settings, scenes, RTMP
streaming and six recording formats. - F-Droid's scanner and build tools build and pass this version.
Not affiliated with or endorsed by the Moblin project.
NexusIRL v0.2.1
A fix-up release: it closes a crash in the web remote control and makes remote control and
YouTube settings move between NexusIRL and iOS Moblin. Most of it was found by running Moblin's own
system tests against NexusIRL for the first time.
Which file: NexusIRL-v0.2.1-arm64-v8a.apk for practically every phone from the last several
years, or the universal APK for anything else. It installs over v0.1.x and v0.2.0 and keeps your
settings.
Fixed
- Crash (security): the app closed when a browser dropped its connection to the web remote
control in the middle of a page. Anyone on the same network could cause it, even without the
access link. Only affects phones with the web remote control turned on (it is off by default). - iOS settings: the remote control connection and YouTube video IDs were stored under different
names from iOS Moblin, so they did not carry over in either direction. Your existing settings are
converted automatically. - Remote control status: assistants (Moblin on an iPhone, the web remote control) now show the
actual bitrate with the total sent, and the uptime, as with an iPhone streamer. - Remote control commands take effect before they are confirmed, as in Moblin.
New
- Web remote control Recordings page: list, download, delete and preview the phone's
recordings from a browser. - Stream logs for testing away from a computer: the app keeps a per-second log of the last 10
streams (frame rate, bitrate, connection quality per network). Share diagnostics includes
it. No stream keys, picture or sound.
Tested
- A 60-minute stream from a Galaxy S26 Ultra (1080p30 H.265 over SRTLA): every second at 30 fps on
average, no reconnects, no gaps, no audio/video drift. - Moblin's system tests: settings import, scene switching and RTMP streaming pass on the S26.
Not affiliated with or endorsed by the Moblin project.
NexusIRL v0.2.0
The second test release adds Twitch alerts on screen and Twitch stream title and category, and
fixes a dropped frame per second while a remote control showed the preview. It is the first
release tested live on Twitch, on a second Android phone and against iOS Moblin.
Which file: NexusIRL-v0.2.0-arm64-v8a.apk for practically every phone from the last several
years, or the universal APK for anything else. It installs over v0.1.x and keeps your settings.
New
- Twitch alerts on screen: follows, subscriptions, gift subscriptions, channel point rewards,
raids and cheers pop up one at a time while you are signed in to Twitch. Each stream chooses
which alerts pop up and which appear in chat (Settings → Streams → your stream → Twitch alerts). - Twitch title and category: see and change them in the stream's settings, with category
search. Changes go to Twitch only after you confirm. Sign in to Twitch again once to grant
the extra permission this needs. - Remote control over the internet with your own relay:
server/relayruns Moblin's
open-source relay with automatic HTTPS. docs/remote-control.md
explains every way to connect, including Tailscale and the same Wi-Fi.
Fixed
- While a remote control (Moblin's assistant or the web remote) showed the preview, the stream
lost one frame every second. - Twitch alerts ignored the alert settings of streams imported from iOS.
- The relay part of a remote control address (its bridge ID) is now stored encrypted and left out
of exports and logs, like stream keys. Existing settings are converted when the app starts. - After approving the Twitch sign-in on the phone, Twitch's page can stay blank; the app now says
to come back to it. - Smaller fixes: a "1 stream(s)" message and a warning logged whenever the camera closed.
Tested
- Samsung Galaxy S26 Ultra (Android 17): live on Twitch for 5 minutes over RTMPS with H.264
(picture, sound, chat, a follow alert, title and category changes); remote control from an
iPhone running Moblin, including going live and ending the stream. - Huawei P30 Pro (Android 10, Kirin 980): this release's predecessor installed from the
published APK, a setup link import and a 1080p30 H.265 stream with every frame arriving. - iOS Moblin interop: iPhone settings export imported with its stream, scenes and widgets;
Moblin's assistant controlling NexusIRL. - Still untested: bonding over real mobile networks and Moblink between phones (both need mobile
coverage away from the developer's desk).
Not affiliated with or endorsed by the Moblin project.
NexusIRL v0.1.1
A small update to the first test release, mainly so that testers can send useful bug reports.
Which file: NexusIRL-v0.1.1-arm64-v8a.apk for practically every phone from the last several
years, or the universal APK for anything else. It installs over v0.1.0 and keeps your settings.
New
- Share diagnostics (bottom of the main screen): creates a text report for a bug report, with
app and phone details, what the app is doing, your settings and the app's recent log. Stream
keys, passwords and tokens are removed, and nothing is sent unless you share it yourself.
Please attach it when you report a problem.
Behind the scenes
- Automated UI tests now run on an Android emulator for every change.
- Monthly dependency update checks and security alerts are enabled.
Everything in the v0.1.0 notes
still applies, including what has and has not been tested yet.
Not affiliated with or endorsed by the Moblin project.
NexusIRL v0.1.0
First test release of NexusIRL, a free and open-source IRL streaming app for Android, ported
from Moblin. Expect rough edges, and please report what you
find in Issues.
Which file: NexusIRL-v0.1.0-arm64-v8a.apk for practically every phone from the last several
years, or the universal APK for anything else. Android 10 or newer.
What works
- Streaming over SRT (with encryption), SRTLA bonding and RTMP/RTMPS, with adaptive
bitrate for SRT, H.264 or HEVC, up to 4K and 60 fps, landscape or portrait. - Status bar while live: uptime, bitrate, fps, round-trip time, audio level, thermal warnings.
- Camera: lens switching, zoom presets (including ultra-wide), pinch zoom, tap-to-focus, torch,
exposure, manual focus, shutter, ISO and white balance. - Recording to
Movies/NexusIRLand snapshots toPictures/NexusIRL. - Scenes and widgets: text (time, timers, bitrate and more), image, QR code, map, chat, browser.
- Quick buttons, including mic and bitrate pickers and video effects.
- Twitch, Kick and YouTube chat (read without signing in), Twitch alerts with sign-in.
- Remote control compatible with Moblin's assistant, plus a web remote control on the local
network (protected by an access link). - Moblink: lend this phone's mobile data to a streamer, or use other phones as relays.
- Settings import from iOS Moblin (
.moblinSettings), with stream keys stored encrypted.
Tested so far
Checked on a Samsung Galaxy S26 Ultra (Android 17) against local test receivers: 15-minute 1080p30
and 5-minute 1080p60 runs without dropped frames or audio drift, recording, both landscape
directions and portrait, camera controls, and the web remote control.
Not tested yet: bonding over a real mobile network, Moblink between two phones, interop with an
iPhone running Moblin, and phones other than the S26 Ultra. If you try any of these, a report is
very welcome.
Known limitations
- The app does not reduce frame rate or resolution when the phone gets hot. Long 1080p60 streams
can make a phone uncomfortably warm; use a cooling case or 30 fps. - Some upstream Moblin features are not ported yet (replays, face effects, DJI/GoPro control, RTMP
and SRT ingest servers, and more). Seedocs/PORT_PLAN.md.
Not affiliated with or endorsed by the Moblin project.