← Back

Bark!

Listens through your Mac's microphone while you're out, and sends you a Telegram message when your dog barks or whimpers.

Download for macOS

Set up in 10 minutes

You need a Mac and the Telegram app. Nothing else.

Step 1 — Download

Grab the archive above and unzip it (double-click the .zip file if it doesn’t unzip automatically). You’ll get a folder called bark_monitor.

Step 2 — Run the installer

Open the bark_monitor folder and double-click install.command.

A black Terminal window will open and start setting things up. This is normal — just follow what it says on screen:

Step 3 — Connect Telegram

No need to create a bot or look anything up. Partway through, the installer opens Telegram for you with a chat already started — just tap Start there.

The Terminal window is waiting for that tap and continues on its own once you do — nothing to type or copy.

Step 4 — First launch

The installer finishes by opening Bark!. The first time, macOS will refuse to open it (“unidentified developer”) — this is expected, it’s not from the App Store:

  1. Open Applications in Finder, find Bark!.
  2. Right-click (or Control-click) it → Open → click Open again in the popup.

Bark! will ask for microphone access — click Allow. Without this it can’t hear anything.

Using it

If something’s not working

Technical details, for the curious

The app is a native macOS SwiftUI client that spawns a Python process as its detection engine: it listens to the microphone via sounddevice and classifies audio in real time with YAMNet (TensorFlow Hub) — recognizing barking, howling, growling, and, most importantly, whimpering (which usually precedes barking in separation anxiety). The Python engine emits structured events to stdout, which the Swift wrapper parses to drive a live “what I’m hearing right now” feed and to control starting/stopping sessions.

Notifications go out over Telegram in two modes. The direct mode talks to your own bot. The shared mode goes through a relay: a separate Docker service on a VPS that’s the only thing holding the real bot token — the client app never sees it. Instead, on first launch it goes through pairing via Telegram: the user taps Start, the relay picks that up via getUpdates, binds the code to their chat_id, and issues a unique notify_token scoped to just that one recipient. A leaked token can’t do anything beyond messaging that same person — unlike the bot token, it doesn’t need to be kept secret.

Distribution is a single install.command that installs Xcode CLT/Homebrew/Python if missing, builds the .venv, compiles the app, and runs the pairing flow — the only thing the user actually does is tap once in Telegram, no terminal, no manual config editing.