Skip to content

Configuration Reference

Larry K. Aycock edited this page Aug 5, 2026 · 3 revisions

Configuration Reference

Config file: /etc/asterisk/scripts/asl3-herald/asl3-herald.conf

Setting Default Description
Node (required) Your AllStarLink node number
Debug false Enable verbose debug logging
TailMessage.Enable true Enable/disable tail message function
TailMessage.MinInterval 300 Minimum seconds between tail messages
TailMessage.NetworkKeyupTrigger false When enabled, tail messages also fire after a connected AllStar node unkeys (not just local RF); requires AMI
TailMessage.Rotation (empty) List of rotation entries (WAV file paths, or dicts with File plus optional Days/TimeStart/TimeEnd/Node)
TailMessage.Rotation[].Days (always eligible) Optional: daily (default) or a list, e.g. [tuesday] — restricts this entry to those days
TailMessage.Rotation[].TimeStart / TimeEnd (none) Optional: HH:MM window this entry is eligible in; omit either side for open-ended
TailMessage.Rotation[].Node (daemon's Node) Optional: target a specific node number for this entry (multinodes= setups)
TailMessage.Rotation[].Enabled true Set to false to disable an entry without removing it; re-enable with herald toggle-rotation <name> or the web UI
TailMessage.Rotation[].Speed 1.0 TTS speech-speed multiplier, 0.5-2.0 (ignored on file-uploaded entries; takes effect the next time the entry's audio is (re)generated)
TailMessage.SkywarnPlus.Enable true Enable SkywarnPlus WX tail integration
TailMessage.SkywarnPlus.WxTailFile /var/lib/skywarnplus-ng/data/wx-tail.wav Path to the WX tail WAV — matches SkywarnPlus-NG's own default; set to /tmp/SkywarnPlus/wx-tail.wav for the classic fork
TailMessage.SkywarnPlus.SilenceThreshold 5000 File size (bytes) to distinguish active alerts from silence
TailMessage.SkywarnPlus.NGEnable false See Tail Messages → SkywarnPlus-NG integration — needed alongside WxTailFile above when running NG, not needed for the classic fork
TailMessage.SkywarnPlus.NGApiBase http://127.0.0.1:8100 NG's local dashboard API
TailMessage.SkywarnPlus.NGPollIntervalSec 30 How often Herald polls NG's API for change detection
Scheduled[].Name (required) Unique name for the scheduled announcement
Scheduled[].Cron (required) 5-field cron expression: MIN HOUR DOM MON DOW
Scheduled[].File (required) Path to WAV file to play
Scheduled[].PlayMode local local (this node only) or global (all connected/linked nodes)
Scheduled[].Node (daemon's Node) Optional: target a specific node number for this entry (multinodes= setups)
Scheduled[].Enabled true Set to false to disable an entry without removing it; re-enable with herald toggle-schedule <name> or the web UI
Scheduled[].Speed 1.0 TTS speech-speed multiplier, 0.5-2.0 (ignored on file-uploaded entries)

AMI credentials are never stored in asl3-herald.conf. The daemon reads them automatically at startup and on every config reload from /etc/allmon3/allmon3.ini (Allmon3 users) or /etc/asterisk/manager.conf (Supermon and other frontends). If neither file yields usable credentials, herald falls back to the legacy CLI kerchunk counter (local RF unkeys only).

Example Config

Node: "YOUR_NODE_NUMBER"
Debug: false

TailMessage:
  Enable: true
  MinInterval: 300
  NetworkKeyupTrigger: false
  Rotation:
    - /etc/asterisk/scripts/asl3-herald/announcements/tail-messages/tail1.wav
  SkywarnPlus:
    Enable: true
    WxTailFile: /var/lib/skywarnplus-ng/data/wx-tail.wav
    SilenceThreshold: 5000

Scheduled:
  - Name: "ARRL Audio News"
    Cron: "30 7 * * 6"           # Saturdays at 7:30 AM
    File: /etc/asterisk/scripts/asl3-herald/announcements/scheduled/arrl-news.wav
    Enabled: true

  - Name: "Second Saturday Breakfast Net"
    Cron: "0 8 8-14 * 6"         # 2nd Saturday (DOM 8-14, DOW 6) at 8:00 AM
    File: /etc/asterisk/scripts/asl3-herald/announcements/scheduled/breakfast-net.wav
    Enabled: true

Tail Messages and Scheduled Announcements each store their audio in their own subdirectory under announcements/ (tail-messages/ and scheduled/) — this keeps the two from ever colliding on a filename just because an entry in each happens to share a name. Entries created before this existed still work fine from wherever they already are; editing an entry (even without changing anything) moves it into the correct subdirectory automatically.

Files

Path Description
/usr/local/bin/asl3-herald/asl3-herald.py Main daemon (also exposes CLI subcommands used by herald)
/usr/local/bin/asl3-herald/version.txt Version file
/usr/local/bin/herald Management command
/etc/asterisk/scripts/asl3-herald/asl3-herald.conf Configuration file
/etc/asterisk/scripts/asl3-herald/asl3-herald.state Runtime state (rotation index, last played time, playback history)
/etc/asterisk/scripts/asl3-herald/asl3-herald-disabled Disable flag (presence disables tail messages)
/etc/asterisk/scripts/asl3-herald/announcements/tail-messages/ Tail Message announcement WAV files
/etc/asterisk/scripts/asl3-herald/announcements/scheduled/ Scheduled Announcement WAV files
/etc/systemd/system/asl3-herald.service systemd service unit
/var/www/html/asl3-herald/ Shared UI fragment/JS and JSON API (PHP)
/var/www/html/asl3-herald/img/ Logo assets (icon + banner), used by the Allmon3/Supermon page headers
/usr/share/allmon3/asl3-herald.html Allmon3 entry point (installed alongside Allmon3's own index.html)
/var/www/html/supermon/asl3-herald.php Supermon entry point (installed alongside Supermon's own index.php)
install.sh / uninstall.sh (repo root) Installer / uninstaller — not installed on the node itself
/etc/sudoers.d/asl3-herald-web Narrow passwordless sudo rule for www-data to run herald
/opt/piper/ Piper TTS binary
/var/lib/piper-tts/ Piper voice models (shared with SkywarnPlus-NG / asl3-tts)

Clone this wiki locally