sigil.radio

Automation API

Turn it on

The API is off by default. Enable it in Sigil ▸ Settings… ▸ Advanced ▸ Local automation API. The app then listens on a Unix domain socket at:

The socket is owned by your user with permissions no one else can read (mode 0600), and nothing is exposed to the network. To drive Sigil from another machine, forward the socket over SSH:

The protocol

One JSON object per line, UTF-8, in both directions. On connect the server sends a hello: the versioned handshake, which also carries the full command catalog. The schema grows additively within v1.

Requests carry a verb name and an args object. An id is optional and echoed back in the reply:

Success is an empty failure list. A command succeeds only if its postcondition held (the decode finished, the window appeared, the layout took); otherwise the reply lists what failed. Commands execute strictly in order, one at a time across all connections, and each runs to completion before its reply arrives, so issue them sequentially and trust the answer. v1 is request and response only; there is no event push.

Argument values use the same mini-grammars as the app and the CLI: transform names like whiten:PN9, framing specs like sync or 128:32, layout operations like split:bits:trailing:decoder. Arguments that take a list accept a JSON array or one comma-separated string.

The sigil app client

The bundled CLI is the readiest client. A bare value goes to the verb's primary argument; everything else is key=value:

Any other language

The core of a Python client is a dozen lines:

For exploration, nc works straight from the shell:

Verbs

sigil app list (or the hello's commands array) is the authoritative, always-current catalog for your installed version. The families: session setup (open, select, set-audio-mode, demod-analysis), decoders (run-decoder, select-tab), the Symbols, Demod, and Bits workbenches (adopt-symbols-baud, demod-burst, the bits-* family through bits-export), walkthroughs, panes and dock tabs, workspaces and window layout, auxiliary windows, issue reporting, and window renders (render-window captures the real laid-out window, but GPU-drawn plots such as the spectrum and waterfall render blank in it).

Getting help

The docs page covers the app and the rest of the CLI, and support has contact details if the API does something these pages don't explain.