You are viewing archived documentation for v0.17. Go to latest →

Features

Everything BirdNET-NG can do today.

Audio Capture

Deploy microphones anywhere — Raspberry Pi nodes or Android phones — and let them record autonomously.

  • 3-second WAV chunks at 48kHz mono (BirdNET's native window)
  • Three capture modes: ALSA (real hardware), simulated (sine wave), replay (pre-recorded files)
  • Local outbox queue (sql.js SQLite) — never blocks on network, drains with exponential backoff
  • MQTT transport with auto-reconnect, QoS 1, and hub-side acknowledgment
  • On-device audio filtering: adaptive noise floor + spectral peak SNR detection — rejects silence and non-bird audio before uploading
  • Recording profiles: continuous, dawn chorus, night migration, low power — with sunrise/sunset scheduling from GPS coordinates (NOAA algorithm)
  • 30-second heartbeat keepalive (decouples online status from audio sending)

AI Inference

BirdNET deep learning model identifies 6,500+ bird species.

  • Geo-aware filtering: species range narrowing based on GPS + date
  • Confidence-based re-processing: uncertain detections (0.4–0.7) get a second pass with extended window, frequency isolation, and cross-chunk correlation
  • Scalable workers: Python 3.11 + TFLite, scale horizontally with docker compose up --scale worker=N
  • Worker dashboard: connected workers, queue depth, processing stats

Species Intelligence

Rich context around every detection.

  • Species catalog: sortable cards with detection count, confidence, first/last seen, satellite count, accuracy. Sort by name uses primary language; search works across all 38 languages
  • Species profile pages: 90-day trend, hourly activity, seasonal presence, satellite breakdown, confidence distribution, share and comment on detections
  • Expected species: eBird integration cross-references what you should be seeing vs. what you've detected
  • First-of-season detection: automatic seasonal tracking with green badge on detection cards
  • First-of-day detection: per-species per-satellite daily tracking with blue badge
  • Rarity model: frequency-based rarity scoring with watchlist alerts
  • Species images: bird thumbnails from Wikipedia, downloaded in background, stored permanently in MinIO

Detection & Timeline

Browse, verify, and explore your detections.

  • Detection list: filter by satellite, status, species, confidence — with server-side sorting and pagination. Species search works across all 38 languages
  • SpectrogramPlayer: click-to-seek, drag-to-select loop region, auto-boost (peak normalization), speed control (0.25x–2x), volume, download, buffering indicator
  • Timeline: chronological recording sessions with inline chunk bars, species filter pills, expand/collapse sessions
  • Community verification: vote Yes/No/Unsure with keyboard shortcuts, consensus threshold, accuracy stats
  • Detection comments: inline expandable thread per detection
  • Shareable links: HMAC-signed public URLs with species image, translated names, stats (today + total + confidence), and lightbox (no login required)
  • Link previews: Open Graph meta tags served for all share URLs — rich previews on Discord, Slack, Telegram, WhatsApp, Twitter, Facebook
  • Link previews: Open Graph meta tags for rich previews on Discord, Slack, Telegram, WhatsApp, Twitter, Facebook

Analytics & Visualization

Understand your data at a glance.

  • Dashboard: 7-day detection trend, hourly activity bars, biodiversity snapshot, fleet status
  • Detection map: satellite markers (colored by status), detection clusters, heatmap layer, time range filter — species names in user's language
  • Biodiversity indices: Shannon H', Simpson 1-D, Pielou's evenness — per satellite and global
  • Migration patterns: month-by-species heatmap showing seasonal presence
  • Weather correlation: Open-Meteo temperature + precipitation overlaid on detection activity
  • Location comparison: side-by-side satellite stats, Jaccard similarity, shared/unique species, hourly activity
  • Activity heatmaps: hour-by-day-of-week grids per satellite and globally

Smart Alerts

Get notified about what matters.

  • Three trigger types: detection (species, confidence, time window, rare/first-of-season/first-of-day), absence (no activity for N minutes), trend (diversity or count drop/increase)
  • Six notification channels: Email (SMTP), Slack (Block Kit), Telegram (Bot API), Google Chat (Cards v2), Discord (embeds), Webhook (HMAC-signed)
  • Per-rule cooldown to prevent alert spam
  • Once per species per day option — each species triggers at most one notification per rule per day
  • Inline rename for rules and channels, duplicate rules (created disabled)
  • Alert messages in tenant's language — species names, labels, and rarity reasons translated based on tenant settings
  • Notification links point to public share pages (no login required for recipients)
  • Species images in notifications via Wikipedia direct URLs
  • Platform health banner: persistent warning when core services are down
  • Scheduled exports: cron-based automatic CSV/JSON/eBird/iNaturalist delivery via any channel

Data Export

Get your data out in standard formats.

  • CSV and JSON export with filters
  • eBird checklist generation
  • iNaturalist observation export
  • xeno-canto recording submission
  • Scheduled automatic exports with cron scheduling

Satellites & Fleet Management

Monitor and configure your entire network.

  • Fleet list: sortable, searchable, filterable — click to open dedicated satellite detail page
  • Satellite detail page: full-page view with stats cards (status, recording, version, location, CPU, storage, uptime, last seen), today's hourly activity chart, 24h schedule bar, filter stats, editable config, biodiversity, expected species (scrollable, with links to species profiles), live audio, actions
  • Telemetry: CPU, storage, battery, uptime, GPS, recording state — displayed as stat cards
  • Per-satellite config overrides: inline editor with lock toggle, customize/reset, override markers
  • Recording profile push: assign and push profiles via MQTT, integrated in schedule section
  • Remote update: trigger Pi satellite updates from the web UI via MQTT, with status feedback. Supports HTTPS token or SSH key authentication via .env
  • Audio device autodetection: automatically discovers the ALSA capture device when AUDIO_DEVICE is not set
  • Error state reporting: satellite reports "error" heartbeat after consecutive capture failures, recovers automatically
  • Filter stats: aggregate tracking of chunk filter results (processed/sent/rejected by reason) in satellite detail panel with pass rate bar
  • Per-session filter rate: timeline sessions show "X% sent" pill when significant filtering occurs
  • Satellite registration: register from web UI with complete .env generation
  • Schedule preview: resolved sun times and recording windows per satellite
  • Live audio: "Listen live" streams unfiltered real-time audio via hub-signaled MQTT — satellite sends all chunks (bypassing filter) while active, with 60s auto-stop timeout. Continuous playback with SpectrogramPlayer auto-chaining
  • Force update: always-visible button on satellite detail page (bypasses version check for dev/testing)
  • Disk management: WAV files deleted immediately on hub acknowledgment, periodic outbox DB purge

Android App

Turn any phone into a satellite.

  • Native AudioRecord plugin (bypasses WebView audio limitations)
  • GPS gate with auto-update interval (30s–10min)
  • Background mode for continuous recording
  • Live audio streaming support (same as Pi satellite — hub-signaled unfiltered MQTT)
  • In-app log viewer, keep-screen-on toggle
  • Hub filter settings received and applied via MQTT
  • Schedule display (read-only, from hub)

Multi-Tenancy & Auth

Multiple teams share infrastructure with full data isolation.

  • Row-level isolation via tenant_id on all data tables
  • Global users with per-tenant membership and roles (viewer < member < admin < owner)
  • Platform admin: cross-tenant access, hidden from tenant member lists
  • JWT cookie sessions (httpOnly, 7-day expiry) + Bearer API key auth
  • Invite system: single-use links with role assignment, 72h expiry
  • Login security: rate limiting (20/IP/15min), account lockout (5 failures), last login tracking

User Management & Settings

Full control for admins and users.

  • Account page: edit profile, change password, delete account
  • User preferences: primary/secondary bird name languages, date/time format, voting mode
  • Platform users: search, block/unblock, reset password, add to tenant, edit, delete
  • Tenant settings: confidence thresholds, audio filter config, heartbeat interval, offline timeout, retention, watchlist, tenant language
  • Platform settings: self-registration toggle, tenant creation toggle, invite links toggle, Wikimedia API config, species image cache management with not-found investigation panel and per-species retry, audio retention (capacity cap + time window + keep-best per species, with live usage bar and on-demand sweep)
  • Audit log: 30+ action types covering login, registration, profile changes, satellite management, settings, votes, webhooks, cache operations — with real client IPs
  • System monitoring: platform admin view of all running service instances (API, dispatcher, workers), infrastructure health, data summary, queue stats
  • Tenant ownership transfer

Internationalization (i18n)

The full interface in your language.

  • English and French translations with 500+ keys covering every page
  • Language switcher in sidebar
  • Locale-aware formatting: relative times, date/time, language names via Intl APIs
  • Singular/plural support via Intl.PluralRules (e.g. "1 detection" vs "5 detections")
  • Bird names in 38 languages via BirdNET label files (primary + secondary display)
  • Map popups and heatmap labels localized
  • Start-of-week preference (Monday/Sunday/Saturday) for heatmap grids

Infrastructure

  • Docker Compose: 8-container stack (9 with split mode) behind Traefik reverse proxy
  • Hub split mode: stateless API (scalable) + single-instance dispatcher
  • Four FQDNs: web, MQTT, MinIO console, documentation site
  • MQTT over WSS (port 443, no extra firewall ports)
  • Service registry: Redis-based auto-discovery with System monitoring page
  • 26 database migrations, run automatically on hub startup
  • Versioned documentation site with version switcher