"When they say stillbox, you know it's real."
A Golang scanner call server and Angular frontend. Basically a rewrite of rdio-scanner with a cleaner backend (not frontend, so far; I am not a frontend guy and it shows) and a more opinionated featureset.
Primary differences:
-
Backend written as if Go is actually a typed language
I never would have started this project if existing projects were this way, as modifying them would have been far easier.
-
Call transcription using whisper.cpp.
Just setup
transcribedon a machine with a GPU (even the same machine) and point stillbox to it for call transcriptions. Then, use full-text search on the transcriptions in the database! -
No directory watch source, for now
This is not a feature I need personally, but would be simple to implement as another source.
-
Only supports Postgres DB right now. May add SQLite someday.
Most all database access is abstracted using a repository architecture. The calls table is also partitioned, with configurable intervals and retention.
-
Filter calls by duration in search
This feature was a major impetus for even starting the project.
-
Both REST and WebSocket APIs
REST is used for the admin interface, and WebSockets/protobuf are used for listener apps, including Calls (both Flutter and terminal versions).
-
Uses protobuf instead of JSON for the WebSocket API (no JSON arrays of numbers for call audio!)
Another thing that originally spawned the project.
-
Talkgroup activity alerting
We use go-trending to implement this.
-
"Native" flutter client (Calls) for Android/iOS/macOS/Linux/Windows (in progress)
This client, as of this writing, works for listening linearly only. More functionality to come. Currently available here.
-
RadioReference talkgroup import, SDRtrunk talkgroup playlist export
Just copy and paste from RadioReference. You can also have your talkgroup labels in SDRtrunk!
-
Incidents functionality (group past calls together and retain them)
Keep track of interesting past calls and link them to your friends. Calls linked to an incident are even swept away before retention pruning is done!
-
No premiumization nags or advertising of any kind
Another thing that drove me to start this project. It's either Free Software, or it isn't, folks.
-
3-clause BSD license
But that doesn't mean I don't want your improvements so that I may incorporate them!
If this message is still here, the database schema initial migration and protobuf definitions are still subject to change.
Once stillbox is actually usable (but not necessarily feature-complete), I will remove this note, and start using DB migrations and
protobuf best practices (i.e. not changing field numbers).
stillbox is developed primarily on FreeBSD/amd64, with CI done on Linux/arm64. calls is tested primarily on Linux and macOS. The Web client is developed on
Linux and macOS, and tested on those systems and Android. It is a goal of the project to function on as many systems as possible. Contributions toward this goal, of code
or bug reports, are always welcome.
© 2024, 2025 Daniel Ponte
Licensed under the 3-clause BSD license. See LICENSE for details.
Thanks to, among others:
- rdio-scanner for the original inspiration
- sdrtrunk, without which this would all be moot
- go-trending and go-time-series
- isoweek
- minimp3
