Settings
Theme
Layout
Reading
Workspaces TBD
“Workspace” isn’t part of the Oaken Mail architecture. This pane is a placeholder until the concept is pinned down — likely a switchable context that bundles a set of accounts, filters and folders (e.g. Work vs Personal).
Accounts
Secrets live only in the OS keyring (service oaken), never in config, logs or exceptions. Google uses your own OAuth client at gmail.modify scope.
Defaults
- Default interval
- Every 15 minutes
- Minimum interval
- 60 seconds (floor, enforced on save)
- Max concurrent syncs
- Missed runs
- Collapse into one catch-up run
- On failure
- Back off with jitter; an auth failure pauses only that account
Quiet hours
Schedules
| Account / folder | Type | When | Timezone | Next run | Last run | |
|---|---|---|---|---|---|---|
| alex@example.com | Interval | every 15 min | America/New_York | in 11 min | ok · 2 min ago | |
| alex.work@gmail.com | Interval | every 15 min | America/New_York | paused | auth error | |
| alex@fastmail.com · INBOX | Cron | */10 * * * * | Europe/London | in 4 min | ok · 5 min ago | |
| alex@fastmail.com · Lists | Cron | 0 * * * * | Europe/London | in 38 min | ok · 22 min ago |
raw.db; every edit is audited.Backends
Token thrift
Enrichment cache
Every LLM result is cached by (content_hash, model, prompt_version), so re-runs are free until an input changes.
Installed plugins
First-party only in v1 · in-processDatabases
Data lives in ~/.local/share/oaken/, never in the repo. index.db can be deleted and rebuilt entirely from raw.db.
Maintenance
Quarantine
owner-only| Time | Actor | Action | Target | |
|---|---|---|---|---|
| 15:21:04 | user | readstate.mark_read | msg 184213 | |
| 15:18:40 | user | schedule.update | alex@fastmail.com · INBOX | |
| 15:02:11 | user | account.pause | alex.work@gmail.com | |
| 14:47:55 | system | sieve.file | 12 messages → Lists | — |
The audit log lives in raw.db and holds ids and booleans only — never mail content.
{"ts":"2026-10-20T15:21:04Z","event":"sync.completed","account":"alex@example.com","new":3,"ms":812}
{"ts":"2026-10-20T15:20:52Z","event":"ingest.enriched","doc":184213,"model":"llama3.1:8b","cached":false}
{"ts":"2026-10-20T15:18:40Z","event":"schedule.updated","target":"alex@fastmail.com/INBOX"}
{"ts":"2026-10-20T15:02:11Z","event":"account.paused","account":"alex.work@gmail.com","reason":"AuthError"}
{"ts":"2026-10-20T14:47:55Z","event":"sieve.filed","count":12,"label":"Lists"}
Events are an append-only JSON-lines file, read via the oaken events CLI.