The Problem

If you’ve spent any time on my repeater, you’ve probably heard the tail message that plays after someone keys up. For a while, that message was handled by AllStarLink’s built-in tail message feature—and it was flaky. It would work fine for weeks, then randomly stop playing entirely, with no obvious cause. I wasn’t the only one seeing it, but nobody could pin down why it happened or reliably reproduce it. After going back and forth on it for a while, I decided the fastest path forward was to just build something of my own that I could trust.

What I Built

ASL3-Herald is a small daemon that runs alongside AllStarLink/app_rpt and takes over tail messages and scheduled announcements completely, with reliable unkey detection so it doesn’t miss a beat. A few things it does:

  • Rotates through a list of tail messages instead of playing the same one every time
  • Supports scheduled announcements—things like a reminder for the 2nd Saturday breakfast net at a specific time
  • Uses neural text-to-speech (Piper) so I can just type a message and have it spoken, instead of recording my own audio every time
  • Integrates with SkywarnPlus, so an active severe weather alert takes priority over the regular rotation
  • Has a web UI built right into both Allmon3 and Supermon, so I manage everything from the same dashboard I already use to run the node
  • It’s been running on my node for a while now, and I honestly don’t think about tail messages anymore—it just works, which was the whole point.

    Try It Yourself

    If you run your own AllStarLink node and have dealt with the same flaky tail message behavior, ASL3-Herald is free and open source. It installs with a single script and includes install instructions on the repo:

    ASL3-Herald on GitHub

    Stay tuned—there’s more I want to add.