Bruno’s Alarm
Last howlBlogGet the app

Effective October 20, 2026

Privacy Policy

The short version

There’s no sign-up and we never learn your real name, email, or phone number. Your alarms are stored only on your phone. When you use live chat, the app creates an anonymous device ID so messages can be moderated and rate-limited, and anything you send in chat is public to everyone in that chat. We use Firebase Analytics and Crashlytics for basic usage and crash data, and Cloudflare to deliver the video. No ads, nothing sold to anyone.

Bruno’s Alarm (com.brunosalarm.app) wakes you up with a real dog’s twice-daily howl, and lets you chat with other viewers while he’s live. This page explains, plainly, what the app does and doesn’t do with your data.

1Information we collect

  • Automatically, via Firebase Analytics and Crashlytics: basic app-usage events (like which screens you open), device and OS info, and crash or error reports. Analytics also works out an approximate location (country or region) from a masked IP address. This is standard diagnostic data and isn’t tied to your name or contact info.
  • If you use live chat: an anonymous device ID (created by Firebase Anonymous Authentication, with no name, email, or phone attached), the text of any message you send, a display name, and a timestamp. The display name is the nickname you typed before your first chat message or, if you skipped that, a generated one like Viewer 4821. Either way it’s never linked to your real name. A typed nickname is automatically checked and replaced with a generated one if it’s inappropriate or impersonates staff. These are stored in a shared database (Cloud Firestore) and are visible to everyone in that chat, since that’s the point of a public chat.
  • If you turn on “Ring when Bruno goes live”: Firebase Cloud Messaging gives your device a push identifier, and the app subscribes it to a “live” topic so it can be told when Bruno starts streaming. No name, email, or phone number is attached, and turning the option off unsubscribes it.
  • If you report a chat message: the message you reported, your reason, and your anonymous device ID, so we can review it.
  • If you rate one of Bruno’s howls: your rating (1 to 5 paws) and your anonymous device ID, so rating again changes your rating instead of adding a second one. Everyone else sees only the average and how many people rated it.

We do not collect your real name, email address, phone number, or precise location, and there is no account or sign-up anywhere in the app.

2What stays on your device

Never sent anywhere:

  • Your scheduled alarm times, held by Android’s own AlarmManager.
  • Whether you’ve finished onboarding, and whether you turned on the live alarm.
  • The nickname you optionally typed before your first chat message (it’s only sent along with a chat message you choose to send).
  • Whether you’ve accepted live chat’s rules, and anyone you’ve blocked. Blocking is local only: it hides that person’s messages on your device, and doesn’t remove them for anyone else or notify them.
  • The most recently cached copy of Bruno’s howl, so the alarm can play without a connection.

Uninstalling the app removes all of this.

3Live chat and moderation

There are two chats. Live chat is open only while Bruno is live and resets with each session; a session’s messages are automatically deleted a couple of hours after it goes quiet. Bruno’s Pack is one always-open room that keeps only its newest 200 messages; older ones are deleted automatically as new ones arrive. Every message goes through a server-side check before it’s posted: length, a language filter, and a rate limit so chat can’t be flooded. Posted messages are public to anyone in that chat. We don’t sell or share chat content, and it’s never linked to your name, email, or an account.

If something in chat bothers you:

  • Report a message sends it to us for review, with your reason.
  • Block a viewer hides their messages for you, immediately, on your device only.

4Services we use

  • Firebase (Google): Anonymous Authentication, Cloud Firestore, and Cloud Functions run live chat; Cloud Messaging delivers the optional live alerts; Analytics and Crashlytics provide usage and crash data. See Google’s Privacy Policy.
  • Cloudflare Stream and R2: Stream delivers the live video, and R2 stores the recording your phone downloads for the alarm. Loading either means your device’s IP address and standard request data reach Cloudflare, the same as loading anything from a CDN. See Cloudflare’s Privacy Policy.
  • Vercel: hosts this website and the small server the app asks for the link to Bruno’s latest recording. Your IP address and standard request data reach it, and we don’t keep them. See Vercel’s Privacy Policy.

None of these are used to show you ads, and Bruno’s Alarm runs no ad network.

5Permissions the app requests, and why

POST_NOTIFICATIONS
Lets the app show you anything at all. Required on Android 13+ for any notification, including the alarm itself.
SCHEDULE_EXACT_ALARM · USE_EXACT_ALARM
Let Bruno's alarm fire at the exact scheduled minute, the same permissions every alarm-clock app uses.
USE_FULL_SCREEN_INTENT
Lets the alarm screen wake your phone and show over the lock screen when it goes off.
WAKE_LOCK
Keeps the phone awake while the alarm is ringing.
RECEIVE_BOOT_COMPLETED
Lets your alarms survive a phone restart, so a reboot overnight doesn't cancel tomorrow's wake-up.
MODIFY_AUDIO_SETTINGS · FOREGROUND_SERVICE · FOREGROUND_SERVICE_MEDIA_PLAYBACK
Let the alarm sound play reliably, including while the app isn't open, and keep it audible while it rings.
VIBRATE
Lets the alarm vibrate your phone alongside the sound.
INTERNET · ACCESS_NETWORK_STATE
Download Bruno's latest recording and play the live video.
com.google.android.c2dm.permission.RECEIVE
Lets the optional live alerts reach your phone (Firebase Cloud Messaging).

The app does not ask for your microphone, contacts, photos, files, or location.

6This website

This site has no analytics, no cookies, and no trackers. Its fonts are served from the site itself, not from Google. The only thing it works out about you is your timezone, in your own browser, to show Bruno’s schedule in your local time. That never leaves your device.

7Deleting your data

There’s no account, so most of this you can do yourself, straight away:

  • Everything on your phone: uninstall the app. Alarms, your nickname, blocks, and the cached recording are all removed.
  • Live alerts: turn off “Ring when Bruno goes live” in Settings. Your device is unsubscribed from the alert topic.
  • Chat messages: live chat messages delete themselves a couple of hours after each session ends, and Bruno’s Pack keeps only its newest 200 messages. You don’t need to ask.

To have something removed sooner, such as a message you sent or a report you filed, email vishnuna26@gmail.com with the subject “Delete my data”. Because there’s no account to look up, include the display name you used and roughly when you chatted, so we can find it. We’ll delete it and reply within 30 days.

Usage and crash data from Firebase Analytics and Crashlytics isn’t linked to your name or anything that identifies you, so we can’t match it to a request. It’s deleted automatically under Firebase’s retention periods (crash reports after 90 days).

8Children

Bruno’s Alarm isn’t directed at children, and live chat’s public nature means it isn’t meant for them either. We don’t knowingly collect information from children. If you believe a child has used chat inappropriately or shared personal information, email us and we’ll remove it.

9Changes to this policy

If this policy changes, the date at the top changes with it. Continuing to use the app after an update means you accept the revised policy.

10Contact

Questions about this policy, the app, or a chat report: vishnuna26@gmail.com

See also: Terms of Service

Bruno’s Alarm

Made by one person and one very loud dog.

BlogPrivacy PolicyTerms of Servicevishnuna26@gmail.com
© 2026 Bruno’s AlarmNot affiliated with Google, Firebase, or Cloudflare.