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_dir | Root directory for the DB, caches, extensions, and downloads |
db_path | SQLite database file |
http_addr | Address the HTTP API binds to (default :6007) |
api_token | Bearer token required on API requests, when set |
public_url | Externally reachable base URL, for OAuth callbacks and image links |
media_dir | Where covers, downloads, and other media are stored |
novel_enabled | Load light-novel extensions in the sandbox |
idle_timeout_minutes | Stop the sandbox after this many idle minutes (0 = never) |
tracker_poll_hours | How often background tracker sync runs (0 = never) |
backup_interval_hours | How often an automatic DB backup is taken (0 = never) |
backup_retention_count | How many automatic backups to keep before pruning |
anilist_client_id | AniList OAuth client id; Tsunagu ships a working default |
mal_client_id / mal_client_secret | MyAnimeList OAuth credentials; Tsunagu ships a working default |
cloudflare_solver_mode | disabled, external, or managed, see Architecture |
cloudflare_solver_url | FlareSolverr 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.