Configuration Reference
Every setting that matters, organized by what it controls. The
desktop app shows these in a tabbed β Settings dialog;
the server shows them on a Blazor /settings page. The names and
defaults are the same on both editions unless noted.
Data\config.json; on the server they live in
data/config.json inside the data folder you mounted into the
container.
Desktop app settings
Open with β Settings. The dialog has twelve tabs; click Save to apply or Cancel to discard.
Camera (RTSP)
| Setting | Default | Purpose |
|---|---|---|
| Camera Name | β | Friendly name (e.g. "Backyard Feeder"); shown in the title bar and used as your public feeder name |
| Camera IP Address | 192.168.1.100 | The camera's network address |
| RTSP Port | 554 | Streaming port |
| RTSP Username / Password | β | Camera account credentials |
| RTSP URL | auto | Built from the above, or paste a full URL. Build/Test buttons here. |
| Analysis Stream URL | auto | Optional low-res stream for
software motion (Tapo: /stream2 used automatically) |
| Use ONVIF motion detection | On | Use the camera's hardware motion events (recommended for Tapo) |
| TAPO Reboot (TP-Link email/password) | β | Cloud login enabling remote camera reboot |
Bird Identification
| Setting | Default | Purpose |
|---|---|---|
| AI Model | Bird Model (965) | Local classifier; or SpeciesNet (2,498, experimental) |
| Minimum Confidence Threshold | 35% | Only detections above this are recorded |
| Use Test Mode | Off | Generates fake detections for testing β leave off for real use |
Monitoring
| Setting | Default | Purpose |
|---|---|---|
| Check Interval (seconds) | 2 | How often the app samples for motion |
| Motion Threshold | 5 | % of pixels that must change to count as motion |
| Cooldown Period (seconds) | 3 | Minimum gap between detections |
| Monitor daylight hours only | On (7β20) | Pauses overnight; set start/end hours |
| Auto-reconnect | On | Retry dropped connections automatically |
| Periodic reconnect (minutes) | 0 (off) | Force a fresh connection every N minutes |
| Feeder Zip Code / GPS | β | Location for weather, rarity, daylight. GPS optional (with "Pick on Map") |
| Temperature Unit | Fahrenheit | Β°F or Β°C |
Advanced
| Setting | Default | Purpose |
|---|---|---|
| Snapshot Folder | Data\Snapshots | Where photos/videos are saved |
| Save snapshots locally | On | Keep image files on disk |
| Max Snapshots Per Day | 500 | Daily cap |
| Auto-delete old snapshots | Off | Optionally purge after N days (default 30) |
| Enable video recording | On | Record a clip per detection (duration, pre-buffer) |
| Best frame extraction | On | Pick the clearest frame from the clip for ID |
| Object Detector (YOLOv8) | On | Crop to the bird; filter non-bird motion |
| Save below-threshold detections | Off | Keep uncertain ones in a ForReview folder |
| Check for updates on startup | On | Notify when a newer version is available |
| Auto-connect & start on startup | Off | Begin monitoring automatically at launch |
Other tabs (summary)
- Email Notifications, Pushover, NTFY & Windows β see Notification channels.
- Summary Reports β Daily / Weekly / Monthly digest schedules, recipients, and delivery method.
- Photo Frame β FTP or email-to-frame delivery of snapshots.
- Community β see Community sharing.
- Video Summary β intro card, music, highlight extraction, Ken Burns, scheduled daily summary time.
- Debug Logging β per-component log levels (None / Low / Medium / High) for Bird Identification, Camera, Motion, Monitoring loop, and MainForm/UI, plus log-file rotation.
Server settings
On the server edition, settings live on the Blazor /settings page.
They're grouped into the same logical sections as the desktop app, but presented
in one long scrollable page with anchored sub-sections rather than tabs. All
settings persist to data/config.json in your mounted data folder.
docker restart birdwatch after
a settings change.
Major sections
- Camera β RTSP URL (or Pi camera device path), Camera type dropdown, Test camera button, ONVIF toggle.
- Detection β Confidence threshold, motion detection threshold, cooldown, daily cap, daylight hours.
- Location & weather β ZIP code or lat/long, temperature unit.
- Notifications β Email (SMTP), ntfy push.
- Community β sharing toggle + Share Level.
- License β paste a license key; deactivate to move to another machine.
- Storage β snapshot retention policy, video retention, ForReview folder toggle.
- Backups & Migrate β see Part 8 β Backups & migration.
Notification channels
Email (SMTP) β both editions
- Enable email notifications.
- Set the SMTP server and port
(Gmail:
smtp.gmail.com/587), keep SSL / TLS on. - Enter your sending email + password and one or more recipients (comma-separated).
- Click Send Test Email.
ntfy push β both editions
ntfy is a free, open-source push service that needs no account.
- Install the ntfy app on your phone.
- In settings, enable ntfy, keep the server
https://ntfy.sh, and choose a unique topic name (e.g.birdwatch-myfeeder-12345). - Subscribe to the same topic in the phone app.
- Click Send Test Notification.
Pushover β desktop only
Pushover delivers instant push notifications (with the photo) to your phone, tablet, or desktop. Low-cost one-time purchase per platform after a free trial.
- Create an account at pushover.net and install the app.
- Create an application at pushover.net/apps/build.
- In Settings β Pushover, enable it and paste your Application API Token and User Key.
- Click π± Send Test Notification.
BirdWatch in Pushover to give bird alerts
their own distinctive tone.
Windows desktop notifications β desktop only
Native Windows 10 / 11 toast pop-ups. Fast and local β no internet round-trip. Settings β NTFY & Windows tab.
Photo frame β desktop only
BirdWatchAI can push snapshots (and optionally videos) straight to a digital photo frame, turning it into a live bird gallery. In Settings β Photo Frame:
- Enable it, name the frame, choose whether to send snapshots, videos, and whether to auto-send on every detection.
- Pick a delivery method: FTP Upload (host, port, credentials, remote path, optional FTPS) or Email to Frame (the frame's email address + SMTP details).
- Click πΌ Test Photo Frame.
You can also send any single detection on demand via the history right-click menu β πΌ Send to Photo Frame.
Summary reports β both editions
Reports roll up your activity into a tidy digest with statistics, charts, and snapshots. Enable any of Daily / Weekly / Monthly with a chosen schedule, the recipient email(s), and the delivery method (Email / Pushover / Both on desktop; Email / ntfy on server). Reports are skipped automatically when there were no detections in the period.
Community sharing
Sharing is controlled in Settings β Community on both editions. The most important control is the Share Level, which precisely governs what leaves your machine:
| Level | What is shared |
|---|---|
| 0 β Off | Nothing is shared |
| 1 | Species + timestamp only (plus confidence, rarity, and temperature when available) |
| 2 | The above + your ZIP code (or GPS coordinates if you've enabled GPS instead of ZIP) |
| 3 | The above + the snapshot image |
| 4 | The above + the video clip |
Other options on the tab:
- Enable Community Sharing β the master switch.
- Automatically push each detection β uncheck to share only manually (right-click a detection β π Push to Communityβ¦).
- When you correct or delete a detection locally, the change syncs to the community automatically.
- Your install periodically sends a heartbeat so the website can show your feeder as online / monitoring.
Detection tuning β when defaults aren't right
The factory defaults work for most installs, but if you're getting too many false positives, missing real birds, or finding the AI keeps misidentifying things, here's what knob to turn:
| Symptom | Knob | Direction |
|---|---|---|
| Too many "false" detections (squirrels, wind) | Motion Threshold; YOLOv8 detector | Raise threshold; keep YOLOv8 on |
| Missing real birds | Motion Threshold; Cooldown | Lower threshold; lower cooldown |
| Wrong species often | Camera placement; Best-frame extraction; Min confidence | Get the camera closer; keep best-frame on; raise confidence to 40β50% |
| Bursts of duplicates of the same bird | Cooldown | Raise to 10β30 s |
| App ignores some real birds (low confidence) | Min confidence; "Save below-threshold detections" | Lower min confidence; enable the for-review folder and confirm manually |
On the desktop, the π Telemetry window plots motion %, temperature, and your two thresholds against detection markers β the easiest way to pick a Motion Threshold that's just below real visits and above background sway.