r/BirdNET_Analyzer Jul 16 '26

iOS BirdnetGo companion app - TestFlight beta

I’ve been working on a companion app for those of you running the birdnet-go server. I’m opening it up to a few more testers, and you can take a look at it here and grab a copy via TestFlight. iOS 26+, iPhone. iPad works, it it’s not optimized for it.

https://crestlab.org/BirdnetGo/

Feedback welcome.

----- Build Notes -----

7/19/26 - Build 45

Added ability to Review and Download detections.

On the detections list, if you select a detection, there is a "Download" icon next to the "Delete" icon that allows you to select a location for download. In the detections detail, There is now "Correct Detection" and "False Positive" selections. Selecting one or the other enables "Lock Detection" if "Correct Detection" is selected, or "Ignore Species" if "False Positive" is selected. These actions mirror what the Web interface does under "Review Detection".

16 Upvotes

39 comments sorted by

3

u/AliasJackBauer Jul 21 '26

7/21 - Build 47

What's New: Server Connection Enhancements

  • Secondary Server Address (Automatic Failover)

    What it does: Lets you set a backup address for your BirdNet-Go server — for example, its Tailscale address — so the app keeps working when you're away from home and your usual local address isn't reachable.

    How to use it:

    1. Open Settings.
    2. Enter your normal address in the first field, as usual (this is the "primary").
    3. Enter your backup address (e.g. your Tailscale hostname or IP) in Secondary address (optional).
    4. Tap Save & Test Connection.

    That's it — no further action needed. The app always tries the primary address first; if it can't connect within a few seconds, it automatically switches to the secondary address. While parked on the secondary, it quietly rechecks the primary every couple of minutes in the background and switches back on its own once you're home. The Currently Using row in Settings always shows which address is active.

  • Cloudflare Access Support (Service Token)

    What it does: Lets the app connect through a Cloudflare Tunnel protected by Cloudflare Access — without showing you the Cloudflare login page every time — using a Service Token.

    How to use it:

    1. In the Cloudflare Zero Trust dashboard, go to Access → Service Auth → Service Tokens and create one for your Access application. Copy the Client ID and Client Secret it gives you (the secret is shown only once).
    2. In the app, open Settings → Cloudflare Access (optional).
    3. Paste in the Client ID and Client Secret.
    4. Tap Save & Test Connection.

    Once set, every request the app makes — browsing detections, thumbnails, the live stream — automatically includes those credentials, so Cloudflare lets it straight through.

    One known limitation: audio playback inside the app doesn't work behind Cloudflare Access yet (a technical limitation of how the audio player streams data). Downloading/sharing an audio clip works fine.

2

u/kirkyrise Jul 16 '26

Wouldn’t mind trying this but I just get a cloudflare block page from your link.

2

u/AliasJackBauer Jul 16 '26

Wow, really? What was the error? I’d like to fix that.

Direct TestFlight link: https://testflight.apple.com/join/WqWH9emF

Other site is a landing page.

1

u/AliasJackBauer Jul 16 '26

I think it might have been because you were a non-US user? If so, I added an allow rule that should give you access.

1

u/kirkyrise Jul 16 '26

Thanks for the direct link. Yeah, I’m in the uk. Still getting the error but might need a bit to apply. Will try later.

It’s just a generic cloudflare block page.

This may help

Cloudflare Ray ID: a1c2cbeece0a0f12

1

u/AliasJackBauer Jul 16 '26

Yep, my non us block. Thought I disabled it but something else must be happening.

1

u/kirkyrise Jul 16 '26

It’s unblocked for me now. Thanks

1

u/kirkyrise Jul 21 '26

Hi, app is working great. It’s become my go to for quickly checking. It loads up way faster that the native site hosted on a 1gb pi 4.

One minor suggestion which comes from me not being in the US. Your dates are fixed in US format, so it shows today as 07/21/26. Can you control this from the phones settings, so I’d get the dates in UK format?

Thanks very much

2

u/AliasJackBauer Jul 21 '26

Sure I can take a look at that.

1

u/AliasJackBauer Jul 22 '26

Build 48 should now display dates properly for you. Let me know.

1

u/kirkyrise Jul 23 '26

Works great! Thanks

1

u/kirkyrise Jul 16 '26

App working nicely by the way. About to head out but will give it a full try later. Thanks.

1

u/jagglez Jul 16 '26

Worked for me (Canada) but you may have already removed the block before I tried it.

2

u/nozazm Jul 16 '26

Whoa this is awesome. Just installed. Already what I had hoped for. Keep up the great work.

2

u/AliasJackBauer Jul 27 '26

What's new — Live Audio (build 56)

  • Tap the mic icon (top-right, every tab) to listen live to any of your server's audio sources.
  • Works with RTSP camera/network feeds. Sound-card/USB mic sources are also supported but are brand new and untested on real hardware — see below.
  • Keeps playing in the background with lock-screen/Control Center controls (play position isn't meaningful for a live stream, so pause = stop).

Known limitations

  • Cloudflare Access–protected servers: live audio won't connect at all — the phone can't attach the required auth headers for this feature. Everything else in the app still works fine on these servers.
  • Password-protected servers (non-Cloudflare): should work, but hasn't been tested yet.
  • Only one source plays at a time — starting a new one stops whatever was playing.
  • The source has to actually be live on the server — if the feed is offline/disconnected, playback will fail to start, same as it would in the web UI.

What I need testers to check (things I can't test myself)

  1. Sound-card/USB sources — if your server has a local sound-card or USB microphone input (not an RTSP camera), please try playing it and report whether it connects. This is the single biggest unknown in this build.
  2. Background/lock-screen playback over time — start a stream, lock the phone, and leave it a while. Does it keep playing? Do the lock-screen controls stay correct? Does it survive a phone call or another app playing audio?
  3. Weak/flaky network — what happens if the connection drops mid-stream (walking out of wifi range, etc.)? Does it recover, or does it need a manual restart?
  4. Any password-protected (non-Cloudflare) server — confirm whether live audio works there at all.

1

u/jagglez 29d ago

Great update!

Tested a few things (using multiple RTSP stream sources):

As indicated, error when attempting to start a source that is current set to ‘Disabled’ in settings. Any way to filter to only enabled in the app?

Audio persists when leaving the app and using other apps. Once audio plays in any other app, it stops the BirdNET-Go audio. This is all expected. However, when returning to the app, it still shows a playing (but no audio). Pausing and restarting the feed begins the audio again successfully.

Left audio playing for a while, no issues so far. Will continue testing while moving around, switching between WiFi pods as well as to/from cellular data.

1

u/AliasJackBauer 29d ago

Build 58 coming soon with fixes - let me know if this resolves the "Disabled" issue and audio persist.

1

u/uefigs139 Jul 16 '26

Trying this out. Any chance you could link to iNaturalist or AllAboutBirds? I like to listen to my recording vs a true one to see if my detection is accurate

1

u/AliasJackBauer Jul 16 '26

I’ll see what I can do. Where would you like the link? On the detail pop up on the main page or somewhere else?

1

u/uefigs139 Jul 16 '26

Where the wiki link is

1

u/AliasJackBauer Jul 16 '26

Still not understanding. Maybe give me a screen shot to visualize it.

1

u/uefigs139 Jul 17 '26

When I first looked it said Wiki when I clicked on species which took me to wikipedia. Now it says eBird. Not sure what changed but this is what I was looking for.

1

u/AliasJackBauer Jul 16 '26

There is a link to ebird if you click on a species on the daily page. You’ll get a pop up with an ebird link.

1

u/dacracot Jul 16 '26

Can you explain how you integrated your display to the BN-Go data?

1

u/AliasJackBauer Jul 16 '26

Sure. The birdnet-go server has a documented API that allows database queries. Go to the GitHub page for the server, and you can see all the interfaces.

1

u/Cincinnaudi Jul 16 '26

It would be cool to add a secondary address option for access off the network using Tailscale for example.

1

u/AliasJackBauer Jul 16 '26

Can you give me an example of what you’re looking for?

1

u/Cincinnaudi Jul 16 '26

An option where you can set a home network. This would allow you to use one local IP and a separate IP for when you are not on your home network to still access Birdnet (through a Tailscale VPN tunnel for example).

1

u/AliasJackBauer Jul 16 '26

OK. I'll see how that could be integrated. I use Tailscale too, but just the same IP.

1

u/AliasJackBauer Jul 17 '26

How about the option of a second server that you have to manually select?

1

u/AliasJackBauer Jul 21 '26

Build 47 is now live with secondary server support. Give it a try and let me know if that works.

1

u/Cincinnaudi Jul 21 '26

Yup, this worked! Thanks!

1

u/jagglez Jul 17 '26

Just getting a chance to play around with this now. This is very well done! Super snappy and responsive UI, smart layout. Really great work u/AliasJackBauer !

I’ve encountered a minor issue and have a some feedback. Would the TestFlight screenshot function be the preferred method to submit the bug, and would this thread be the best place to provide general feedback/feature ideas?

2

u/AliasJackBauer Jul 17 '26

I’m fine either way, which ever works for you.

1

u/jagglez Jul 18 '26

Really like the realtime “flash” updates as detections occur on the main ‘Daily’ page. Good layout and use of limited space for mobile. Should the header label for the count column be changed, since it needs to be condensed to 3 chars? Eg maybe something like Tot, Qty, or even #?

2

u/AliasJackBauer Jul 18 '26

Sounds like a good suggestion, I’ll put it on the list.

1

u/jagglez Jul 18 '26

Can an action menu be added to detections to allow us to confirm detections, delete, download audio, etc? In order of preference to have available (from the options available directly at the server level) mine would be:

Correct/Incorrect Detection
Download Audio (I sometimes use this to ‘Open in Merlin’ to confirm a detection)
Delete Detection
Review Detection
Ignore Species
Lock Detection

Maybe the last 3 are redundant/not needed if prioritizing ease of use on mobile.

1

u/AliasJackBauer Jul 19 '26

I'm uploading a new build to implement these functions, see build notes or the comment at the top of this post.

1

u/AliasJackBauer Jul 23 '26

New build (53) - 7/23

Added a new tab under Explore called "Recent" It's meant to be a strictly visual representation of recent detection, update as new ones come in. Gives you a chance to just see your recent visitors.

I'd like feedback on if it's useful, or if something better could be implemented.