Cassini is configured through environment variables and command-line flags. There is no config file — every option can be set inline or exported in your shell profile.

Environment variables

VariableDefaultDescription
CASSINI_CACHE_ROOT~/.cache/cassiniWhere Cassini stores downloaded models and temporary data
CALL_URLNextcloud Talk room URL. Can be passed as --call instead
CASSINI_LOG_LEVELinfoLog verbosity: debug, info, warn, error

Command flags

cassini record

--call <url>       Nextcloud Talk room URL (required unless $CALL_URL is set)
--out <path>       Output path for the .opus file (required)
--simulate         Run in simulate mode — no real call, writes a debug .run bundle

cassini build

<input>            Path to a .run bundle
--out <path>       Output path for the .meeting artifact (required)

cassini serve

<dir>              Directory of .opus files to serve
--port <n>         Port to listen on (default: 8080)
--host <addr>      Address to bind (default: 127.0.0.1)

cassini inspect

<path>             Path to any Cassini artifact (.run, .meeting, .opus)

Cache directory

Cassini downloads speech-to-text models on first use and caches them at CASSINI_CACHE_ROOT. The default is ~/.cache/cassini. On a shared machine, you may want to point multiple users at the same directory to avoid downloading the model multiple times:

export CASSINI_CACHE_ROOT="/opt/cassini/cache"

Make sure the directory is writable before running. cassini doctor will report if it is not.

Model selection

Cassini uses a local Parakeet speech-to-text model (NVIDIA, run through ONNX Runtime) for transcription. The default model is chosen to balance accuracy and speed. If you have a GPU available, Cassini will use it automatically.

To check what model is in use and whether GPU acceleration is active:

./bin/cassini doctor

Logging

Set CASSINI_LOG_LEVEL=debug to see verbose output during recording. This is useful for diagnosing capture or transcription issues:

CASSINI_LOG_LEVEL=debug ./bin/cassini record --call "$CALL_URL" --out ./meetings/debug.opus

Nextcloud credentials

When running in ExApp mode, Cassini receives credentials from Nextcloud via the AppAPI handshake. For CLI use, Cassini joins Talk rooms without authentication — it connects as an external participant. The room must allow guests, or you must supply a valid session token via the call URL.