Skip to content

Releases

Listening Observatory Workbench 0.2.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 15:38

Listening Observatory Workbench 0.2.0 moves sources to a commons model and adds a range of improvements found while it went into production.

  • Sources as a commons:
    • a stream is registered once, and every member can use it in their own analyses without asking;
    • the member who registered it looks after it as its steward: texts, credit, place, the operator's agreement, pausing;
    • a new source can be kept private for now and opened to all later;
    • a source other members use is retired instead of deleted, so its history stays;
    • "draft" and "in service" become one state, active; existing sources are migrated.
  • Home: a panel "Now" shows the member's CPU and memory against their cap, their sources and other members', and their analyses in a run or a preview, next to the same figures for the whole Workbench.
  • Mails: sent as text and as HTML in the Workbench's look, with the text unchanged as the fallback; subjects are encoded for non-ASCII names.
  • Front page: says what the Workbench is now, and links published research only when something is published.
  • Runs: a run ends at its planned end to the second (before: up to 30 seconds late), and its data set holds only events from its start to its end.
  • For programs and assistants:
    • a second preview while one is going on is refused instead of lengthening it;
    • a wrong token is answered invalid_token;
    • unknown event types in ?types= and wrong source ids in ?source= on the live data stream are answered with 400;
    • every limit refusal points to "AI, Access";
    • a saved settings change says when the engine had nothing to warn about;
    • the data API names a source's steward (it was owner; programs reading owner need a change).
  • Install guide: reviewed by an administrator.

Needs: listen-engine and listen-ingest on the same machine, ffmpeg, and a web server in front (nginx files are in the repository). To try it without an engine, the archive includes listen-standin, an engine stand-in with made-up data, plus engine-check, which tests an engine against the control API.

Downloads: Linux (amd64, arm64), macOS (Intel, Apple silicon) and Windows (amd64). The Linux archives include a systemd unit.

Tested on: Linux, on our intranet and in production. The macOS and Windows builds compile but haven't been run as services yet.

Listening Observatory Workbench 0.1.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 09:43

Listening Observatory Workbench is the research companion to Listening Observatory. Members bring their own audio streams, decide how they are analysed, and get the results as pages, as a data stream, or through an AI assistant.

  • Members: invitation by an admin, and login by email link with no passwords.
  • Sources: registering a stream with a probe, pausing, deleting, sharing with other members, and the operator's contact for streams a member doesn't run.
  • Analyses:
    • one or more sources with settings and filter rules per source, checked by the engine;
    • a live spectrogram, events, motifs and memories;
    • revisions.
  • Runs:
    • each run fixes one revision and produces a data set (events and comparison, as CSV and JSON);
    • a ten-minute preview that records nothing;
    • a trial of changed settings next to a run;
    • comparing sources on one time axis, with activity per second, correlations and a map.
  • For programs and assistants: tokens, a data stream (JSON and Server-Sent Events), and an MCP endpoint that can also start and stop runs within limits set per token.
  • Limits: usage caps for the server and per member, and a disk quota.
  • Built in, switched off by default: publishing an analysis as a public research page, and members' language-model keys.

Needs: listen-engine and listen-ingest on the same machine, ffmpeg, and a web server in front (nginx files are in the repository). To try it without an engine, the archive includes listen-standin, an engine stand-in with made-up data, plus engine-check, which tests an engine against the control API.

Downloads: Linux (amd64, arm64), macOS (Intel, Apple silicon) and Windows (amd64). The Linux archives include a systemd unit.

Tested on: Linux, on our intranet. The macOS and Windows builds compile but haven't been run as services yet.

Listening Observatory 0.1.1

Choose a tag to compare

@github-actions github-actions released this 17 Oct 19:47

Listening Observatory 0.1.1: the server installation, reviewed by an administrator. The programs are unchanged from 0.1.0. What changed is the guide and what comes with it.

  • The certificate comes first: INSTALL.md gets the Let's Encrypt certificate before the site goes live, and the site keeps the check path open on port 80, so renewals work.
  • Limits per visitor: deploy/observatory-limits.conf allows 10 requests a second and 20 connections at a time, on the pages and on every listener route.
  • scripts/apply-sources.sh: sets up the listeners and their routes from sources.json, and applies later changes. It restarts only what changed, removes sources taken out, and keeps the old routes if nginx refuses the new ones.
  • The website's PHP runs as its own user, so no other site on the machine can read the contact form's mail password. Exact commands for the contact form's settings; the form stays off while its secret is the example's placeholder.
  • Smaller points: a reload instead of a restart for PHP-FPM, server_tokens off, which ports need to be open, and PHP's mbstring is no longer required.

Please ask a stream's operator before you add their stream. Every Observatory opens its own connection, and its pages can relay the sound.

Contents: the programs (bin/), the website (site/), the scripts, the nginx and PHP-FPM templates, and the guide INSTALL.md. The Linux archives also include the systemd unit.

Needs: ffmpeg, jq and PHP 8. For a server: Linux with systemd, nginx, PHP-FPM and certbot.

Tested on: a fresh Ubuntu 24.04 server, walked through by this guide (with a stand-in for the certificate, as the test server is not public), and macOS (scripts/dev.sh). On Windows, use the Windows Subsystem for Linux for the scripts.

Listening Observatory 0.1.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 10:18

Listening Observatory listens to live audio streams, analyses their acoustic structure in real time, and turns what it hears into evolving visual forms and short textual observations. This release lets you run an Observatory of your own, for streams you choose.

  • One listener per stream: it detects frequencies, harmonics, transients and textures, and learns recurring resonances and motifs that return with a lasting visual identity.
  • A website with one live page per stream: a live visualization, spectrogram and events, and (where the stream allows) the sound itself.
  • An optional narrator: any OpenAI-compatible language model can put what was detected into words.
  • An optional AI interface: read-only access for an assistant over MCP (listen-mcp).
  • Can read through listen-ingest: then each stream is connected once on the machine.

Please ask a stream's operator before you add their stream. Every Observatory opens its own connection, and its pages can relay the sound.

Contents: the programs (bin/), the website (site/), the scripts, nginx and PHP-FPM templates, and the guide INSTALL.md. The Linux archives also include the systemd unit.

Needs: ffmpeg, jq and PHP 8. For a server: Linux with systemd, nginx and PHP-FPM.

Tested on: Linux (a fresh installation by this guide on Ubuntu 24.04, and our own installations) and macOS (scripts/dev.sh). On Windows, use the Windows Subsystem for Linux for the scripts.

listen-ingest 0.1.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 09:43

listen-ingest is the one service on a machine that connects to audio stations. Every other program on that machine asks it for a station over a local Unix socket and gets the station's original bytes. A station is connected once, however many programs listen.

  • Passes the bytes on unchanged: no decoding. A program can join at any moment; for Ogg and raw FLAC streams the ingest sends the stream's headers first, so any decoder accepts a late joiner.
  • Plain HTTP interface: GET /v1/feed?url=… for a station and GET /v1/feeds for the operator. Usable from any language; a Go client is included.
  • Checks every address: only http and https addresses of public hosts are accepted, and every connection and redirect is checked again after name resolution. Playlists and web pages are refused.
  • Drops slow readers: a reader that falls behind is disconnected rather than given a stream with holes. A connection closes 10 seconds after its last reader leaves.

Downloads: Linux (amd64, arm64), macOS (Intel, Apple silicon) and Windows (amd64). The Linux archives include a systemd unit.

Tested on: Linux, where it runs in production on our intranet. The macOS and Windows builds compile but haven't been run as services yet. Reports are welcome.

listen-engine 0.2.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 09:43

listen-engine decodes live audio streams and analyses them for Listening Observatory Workbench. It holds the streams, decodes, analyses and memories, and is told what to run over a control API on a local Unix socket. It knows nothing about users or accounts.

  • One decode per stream: several analyses on one stream share one decode and one spectrum.
  • Through listen-ingest: it reads stations through listen-ingest, so streams at different sample rates share one connection.
  • Groups: a group of analyses compares stations second by second (activity, correlation and lag).
  • Separate callers: each program served on its own socket sees only its own streams.
  • Resumes after a restart: the engine saves its configuration and picks it up again. An analysis that fails is marked failed without stopping the others.
  • Contract and check: the control API is workbench/docs/control-api.md, and the Workbench's engine-check tests any engine against it.

Needs: ffmpeg, and listen-ingest (or -ingest left empty, to connect to stations itself).

Downloads: Linux (amd64, arm64), macOS (Intel, Apple silicon) and Windows (amd64). The Linux archives include a systemd unit.

Tested on: Linux, where it serves the Workbench on our intranet. The macOS and Windows builds compile but haven't been run as services yet.