Troubleshooting and logs
Logs
BiscuitTin logs to standard error, one line per event with a timestamp, level, component and details:
2026-10-24T20:00:15.035+0100 info app app/run.go:161 started {"entries": 6, "config": "config.yaml"}
2026-10-24T20:00:15.486+0100 info icons icons/icons.go:164 icon cached {"provider": "thesvg", "query": "RetroArch", ...}
Start it with -debug to also log every input action and changes of primary input device.
Each launched app’s own output goes to ~/.cache/biscuittin/<title>.log (see logDir in the Configuration reference).
Diagnostics
More > Diagnostics shows the version, display size and refresh rate, connected gamepads, the primary input, uptime, the config, settings and cache paths, the integration addresses, the web remote’s address, the local debug socket, and RSS feed status.
Inspecting a running instance
A read-only debug socket is always on at $XDG_RUNTIME_DIR/biscuittin/debug.sock (or $TMPDIR/biscuittin-$UID/debug.sock).
It is a unix socket, mode 0600, not a network listener, and it cannot press buttons or launch tiles.
biscuittin debug
That prints JSON: window size, monitors, the current screen, paths, and the same facts as More > Diagnostics.
-debug is a different thing: it only raises the log level.
The same RPC is available over Connect (protocol/biscuittin/v1/debug.proto, DebugService.GetDiagnostics):
curl --unix-socket "$XDG_RUNTIME_DIR/biscuittin/debug.sock" \
-H 'Content-Type: application/json' -d '{}' \
http://localhost/biscuittin.v1.DebugService/GetDiagnostics
If no instance is running, biscuittin debug exits non-zero.
Common problems
- A tile shows a letter instead of an icon
-
thesvg has no exact match for the title, or the icon is still downloading. Set
iconQuery, oriconto a PNG. See Tile icons. - The launcher doesn’t come back after an app exits
-
The command handed off to an already running instance and exited straight away, before the app closed. Set
restoreOnExit: falseon that entry, and hold Guide to bring the launcher back. - "Web control could not start"
-
Another program is using the port. Set
webControl.portor$PORT. See Web remote. - Home Assistant says "no access token"
-
Put a long-lived access token in
~/.config/biscuittin/homeassistant.token. See OliveTin and Home Assistant. - No background images
-
Both providers need the internet. The last 5 shown images are reused at startup, and each provider’s download cache is reused when offline, so there are none on a fresh install without a network. Use the
localprovider for your own images.