Tsunagu

Configuration

Tsunagu regenerates tsunagu.toml on every save. Active (uncommented) lines are authoritative and override whatever the app last set on boot; commented lines just show the default. Some keys need a restart to take effect, noted in the file as [FULL_RESTART] or [SANDBOX_RESTART].

data_dirRoot directory for the DB, caches, extensions, and downloads
db_pathSQLite database file
http_addrAddress the HTTP API binds to (default :6007)
api_tokenBearer token required on API requests, when set
public_urlExternally reachable base URL, for OAuth callbacks and image links
media_dirWhere covers, downloads, and other media are stored
novel_enabledLoad light-novel extensions in the sandbox
idle_timeout_minutesStop the sandbox after this many idle minutes (0 = never)
tracker_poll_hoursHow often background tracker sync runs (0 = never)
backup_interval_hoursHow often an automatic DB backup is taken (0 = never)
backup_retention_countHow many automatic backups to keep before pruning
anilist_client_idAniList OAuth client id; Tsunagu ships a working default
mal_client_id / mal_client_secretMyAnimeList OAuth credentials; Tsunagu ships a working default
cloudflare_solver_modedisabled, external, or managed, see Architecture
cloudflare_solver_urlFlareSolverr URL used in external mode

Settings loaded from tsunagu.toml are synced into the database on start. Some, like the content filter level, can be changed live through a GraphQL mutation without a restart at all.