stillbox

module
v0.0.0-...-1a3a2fa Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 11, 2026 License: BSD-3-Clause

README

stillbox

"When they say stillbox, you know it's real."

Calls View Screenshot

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 transcribed on a machine with a GPU (even the same machine) and point it to stillbox 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, source, or transcript text in search

    Enhanced search 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.

    Notifications are via Web Push notifications or Slack-compatible webhooks (tested with Prosody mod_slack_webhooks).

  • "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.

  • No restrictions on who can connect to the WebSocket API

    Anyone may use it for whatever they want. Or not.

  • 3-clause BSD license

    But that doesn't mean I don't want your improvements so that I may incorporate them!

Note

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).

Compatibility

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-2026 Daniel Ponte

Licensed under the 3-clause BSD license. See LICENSE for details.

Credits

Thanks to, among others:

Directories

Path Synopsis
client
cmd
calls command
stillbox command
internal
acl
audio/resample
Package resample implements resampling of PCM-encoded audio.
Package resample implements resampling of PCM-encoded audio.
isoweek
Package isoweek calculates a starting date and time of [ISO 8601] week.
Package isoweek calculates a starting date and time of [ISO 8601] week.
queue
Package queue provides a fast, ring-buffer queue based on the version suggested by Dariusz Górecki.
Package queue provides a fast, ring-buffer queue based on the version suggested by Dariusz Górecki.
robin
Package robin implements a simplistic atomic round robin dispatcher.
Package robin implements a simplistic atomic round robin dispatcher.
pkg
pb
services
Package services avoids having to wrap contexts so much for multiple services.
Package services avoids having to wrap contexts so much for multiple services.
workers
Package workers implements transcript (and possibly other) workers.
Package workers implements transcript (and possibly other) workers.
util
omitempty command
This is here until https://github.com/sqlc-dev/sqlc/pull/3117 is merged.
This is here until https://github.com/sqlc-dev/sqlc/pull/3117 is merged.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL