Skip to content

Repository files navigation

Herald logoAllStarLink Herald - Announcement Manager Suite

Release Version Release Date Last Commit Lint Open Issues License

A full-featured announcement and audio suite for ASL3/app_rpt.

asl3-herald started as a drop-in replacement for the native app_rpt tail message function and has grown into a complete announcement toolkit: reliable unkey-triggered tail messages, cron-style scheduled announcements, SkywarnPlus weather alert integration, built-in time & weather announcements, a station ID audio generator, neural TTS voices throughout, and an optional web UI for Allmon3 and Supermon.

📖 Full documentation, configuration reference, and troubleshooting → see the Wiki


About

Where Herald came from Herald started as a drop-in replacement for app_rpt's native tail message function — the built-in one is limited and, on some setups, unreliable. What began as a more dependable tail message replacement grew into a full announcement suite as more needs came up: scheduled announcements, time and weather, a station ID generator, and a web UI to manage it all without touching a config file by hand.

What Herald is (and isn't) Herald is an announcement manager — it decides what plays, when, and how, and generates the audio to play (via neural TTS) when you don't want to record it yourself. It's not a general-purpose audio editor or production tool. Herald's whole job is getting the right announcement to play at the right time, reliably, without you having to babysit it.

Why "Herald"? Back in medieval times, a herald was the person who rode into town to announce news, proclamations, and important events — the original real-time announcement system. That's exactly what this software does for your repeater or AllStarLink node. The logo's town-crier-with-trumpet, planted at the base of an antenna tower, is a nod to that — old-world herald, modern radio antenna.


Key Features

  • Tail Messages — reliable, unkey-triggered rotating announcements with SkywarnPlus WX priority and optional day/time-window gating
  • Scheduled Announcements — cron-style, clock-triggered, local or global playback
  • Time & Weather Announcements — built-in saytime.pl/weather.sh replacement with recordings or custom Piper-TTS templates; the same weather data can also feed Allmon3's panel and Supermon's own weather-conditions line, so every display agrees
  • Node ID Generator — generate a station ID recording for AllStarLink's own ID feature
  • Piper neural TTS — natural-sounding voices with adjustable speech speed (0.5x–2.0x), festival/espeak-ng fallback
  • Web UI — optional browser-based management for Allmon3 and Supermon, gated behind each app's own login
  • One-click updates — check for and install updates from the web UI, with automatic post-restart health verification
  • Config backup/restore, playback history, missing-file health checks — see the Wiki for details

Screenshots

How It Works — a plain-language overview of Tail Messages, Scheduled Announcements, and Time & Weather Announcements, shown before you touch any settings.

Tail Messages — General Settings, SkywarnPlus integration, the rotation table, and the add-message form.

Scheduled Announcements — cron-driven announcements with a live schedule picker and reference table.

Time & Weather Announcements — Custom Templates mode, with tag-based messages rendered fresh by Piper TTS each time.

Node ID Generator — generate a station ID recording with Piper TTS, test it locally, and see exactly what to add to rpt.conf.


Installation

Stable (recommended): installs from main — the tested, working release.

curl -fsSL -H "Cache-Control: no-cache" https://raw.githubusercontent.com/N6LKA/ASL3-Herald/main/install.sh | sudo bash

Development (testing only): installs from develop — whatever's currently being worked on ahead of the next release.

⚠️ Warning: develop may contain incomplete, untested, or broken features at any given time. Only use this on a system where you can tolerate things breaking (or reinstall from main to recover). Don't use it on a repeater or node you depend on for daily use.

curl -fsSL "https://github.com/N6LKA/ASL3-Herald/archive/refs/heads/develop.tar.gz" \
  | tar -xzO ASL3-Herald-develop/install.sh \
  | sudo bash -s -- --branch develop

This tarball form is used instead of the raw GitHub URL because raw.githubusercontent.com is CDN-cached and can serve a stale install.sh for an extended period — the tarball download goes through GitHub's codeload service, which always returns the current commit.

The installer will:

  1. Install python3-yaml, sox, and libsox-fmt-mp3 if not already present
  2. Install Piper TTS 1.2.0 (binary + the default en_US-amy-medium voice) into the shared /var/lib/piper-tts — more voices can be installed later from the web UI's Voices tab
  3. Copy asl3-herald.py to /usr/local/bin/asl3-herald/
  4. Install the herald management command to /usr/local/bin/herald
  5. Create /etc/asterisk/scripts/asl3-herald/ with an example config (if no config exists)
  6. Install and enable the asl3-herald systemd service, and start it automatically
  7. Install the web UI to /var/www/html/asl3-herald/ — installs apache2 + php first if neither Allmon3 nor Supermon is already present, then installs a dedicated page directly into Allmon3's and/or Supermon's own directory (with a sidebar/footer link to it) for whichever is detected

After installation:

  1. Edit the config: sudo nano /etc/asterisk/scripts/asl3-herald/asl3-herald.conf
  2. Check it's running: herald status

Uninstalling

curl -fsSL -H "Cache-Control: no-cache" https://raw.githubusercontent.com/N6LKA/ASL3-Herald/main/uninstall.sh | sudo bash

By default this removes the daemon, herald CLI, systemd service, web UI, sudoers rule, and the Allmon3/Supermon integration lines it added — while preserving your config, announcements, state, and Piper TTS install so a future reinstall picks up where you left off. To also remove those:

curl -fsSL -H "Cache-Control: no-cache" https://raw.githubusercontent.com/N6LKA/ASL3-Herald/main/uninstall.sh | sudo bash -s -- --purge-all

(--purge-config and --purge-piper are available individually too.)


Support the Project

If asl3-herald has been useful on your repeater or node, please consider supporting its development!

Donate with PayPal


License

GPLv3 © 2026 Larry Aycock (N6LKA)

This software is free and open source. You may use, modify, and redistribute it, but derivative works must remain open source under the same license — it may not be resold or relicensed as proprietary software.

See LICENSE for details.

About

Full-featured announcement daemon for ASL3/app_rpt — tail messages, scheduled announcements, Piper TTS time & weather, station ID generation, SkywarnPlus integration, and a web UI for Allmon3/Supermon

Topics

Resources

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages