CLI
Every `oaken` command, its options and the exit codes — generated by walking the real command-line parser.
The oaken command is a thin client over the local core: every command is one call to a registry operation. It holds no logic of its own, so a new operation is reachable immediately through the generic oaken operation NAME fallback, with no new release. oaken operation NAME takes the operation's own fields as flags (--describe lists them), and oaken PLUGIN VERB is shorthand for oaken operation PLUGIN.VERB, so a function a plugin offers is a command the moment it is installed.
Output is human-readable by default; --json gives the machine form on stdout (never sanitized — it is the contract a script reads), while logs and errors go to stderr. Text printed to a terminal is stripped of control and escape sequences, because mail is untrusted.
Global options
These work before or after the command name:
--json— emit machine-readable JSON instead of text.--url URL— base URL of a running core (dev override).--token-file PATH— read the API token from this file (dev override).--verbose,-v— show core log output on stderr (-vINFO,-vvDEBUG).
Commands
| Command | What it does |
|---|---|
start |
Start the core daemon (in the background; --fg to stay attached). |
stop |
Stop the core daemon, killing it if it will not stop in time. |
restart |
Restart the core daemon (in the background; --fg to stay attached). |
reload |
Make the running core re-read config.toml, without a restart. |
operation |
Call any registry operation by name (generic fallback). |
status |
Is core running? (does not start it) |
search |
Search the mail (keyword and meaning, merged). |
show |
Show one message (cleaned text, or --raw/--headers). |
thread |
Show a conversation as a tree: who replied to whom (* marks unread). |
summarize |
Summarize messages with the local model. |
read |
Mark messages read. |
unread |
Mark messages unread. |
undo |
Undo a read-state change from the audit log. |
sync |
Sync every account on every provider now (or one account, or one folder). |
label |
Label messages (tags for finding mail). |
folder |
File messages into folders under Inbox. |
star |
Star messages (written back to the mailbox where it can be). |
unstar |
Remove the star from messages. |
mailbox |
Look at a mailbox: the folder tree, counts, a listing, or why a message is filed. |
pipeline |
Pipeline status, and pausing the model-bound stages. |
usage |
Model calls and tokens per workspace, stage and model. |
plugins |
List plugins, and control one: enable, disable, reload, config, check, set. |
config |
Show, test, save or reload config.toml through core. |
accounts |
The configured accounts (never credentials). |
workspaces |
List, inspect, create, edit and remove AI workspaces. |
audit |
The newest audit-log rows. |
operations |
Every operation with its permission and MCP exposure. |
reprocess |
Bring one pipeline stage up to date. |
rebuild-index |
Rebuild the search index from the raw store. |
watch |
Stream core events as lines (or --json). |
settings |
Show, check or change core's own settings (index, retrieval, ai, sync, ...). |
storage |
Where the data is and how big it is. |
vacuum |
Give back the space deleted mail left in the databases. |
cache |
The enrichment cache: how it is doing, or clear it. |
events |
Recent events from core's event log (--follow keeps watching). |
trace |
Watch what a plugin or a job is told, thinks and returns (opt-in; holds mail text). |
agents |
Create, list and revoke external agents (the swarm). |
jobs |
The durable job queue: list, show, cancel, retry; or work it as an agent. |
mcp |
Bridge an MCP client that speaks stdio to the MCP server in core. |
enrich |
Run or show the enrichers (summary, actions, inspector) on a message. |
triage |
Run, show or dry-run triage (the verdict that rates a message) on a message. |
action |
Show what the actions did about a message, or approve one that is waiting. |
sieve |
Check, try and list Sieve filter scripts; refilter stored mail. |
admin |
Administration: add and inspect accounts. |
schedule |
The per-account sync schedule: list, set, pause, resume, remove. |
completion |
Print a shell completion script (bash, zsh or fish). |
help |
Show this help, or help for one COMMAND. |
Shortcuts
Three more commands each take a slice of the ones above: mill sync is not a command, sawyer sync is. oaken always takes them all.
| Shortcut | What it covers | Commands |
|---|---|---|
mill |
The Oaken core daemon: run it, configure it, look after its storage. | start · stop · restart · reload · status · plugins · config · settings · storage · vacuum · cache · events · mcp · help |
sawyer |
The Oaken mail flow: sync, the ingest pipeline, its jobs and schedules. | sync · pipeline · reprocess · rebuild-index · watch · jobs · enrich · schedule · help |
cubby |
The Oaken mailbox: search, read and file your mail. | search · show · thread · summarize · read · unread · undo · label · folder · star · unstar · mailbox · sieve · help |
Exit codes
| Code | Meaning | When |
|---|---|---|
| 0 | ok | The command succeeded. |
| 1 | error | The operation ran and failed, or an unexpected error. |
| 2 | usage | Bad arguments. |
| 3 | core down | Core is not running — start it with "oaken start". |
| 4 | auth | A bad API token, or a provider that needs re-authorizing. |
| 5 | needs confirmation | A mutation returned a proposal and was not confirmed. |
Command details
start
Start the core daemon (in the background; --fg to stay attached).
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--fg— Run in the foreground, logging to this terminal (default: the background).
stop
Asks core to stop, waits for it to finish what it is doing (up to --grace seconds), and kills it if it is still running. Core's work is a durable queue, so a killed core loses nothing: unfinished jobs are retried when it starts again.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--grace— How long core gets to finish what it is doing before it is killed (default 40; 0 kills it at once).--no-kill— Report an error if core does not stop in time, instead of killing it.
restart
Restart the core daemon (in the background; --fg to stay attached).
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--fg— Run in the foreground, logging to this terminal (default: the background).--grace— How long core gets to finish what it is doing before it is killed (default 40; 0 kills it at once).--no-kill— Report an error if core does not stop in time, instead of killing it.
reload
Signals the running core (SIGHUP) to re-read its configuration and rebuild itself in the same process. An invalid file changes nothing.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
operation
Call a registry operation directly. The input is JSON on --json-input or stdin. This reaches every operation the daemon offers, including ones added after this CLI was released. 'oaken operation' with no name lists the operations. The operation's own fields can be given as flags built from its input schema (see --describe), e.g. 'oaken operation list_messages --limit 5'; 'oaken PLUGIN VERB' is a shorthand for 'oaken operation PLUGIN.VERB'.
Arguments:
name— Operation name; omit to list operations.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--json-input— The operation input as a JSON object. Use '-' or omit to read stdin when piped.--no-browser— Print an address, never open it.--timeout— When an operation waits on the person (a sign-in), give up after S seconds.--describe— Show the operation's summary and input and output fields instead of calling it.--yes— Confirm a mutating operation (the person asked for exactly this).
status
Is core running? (does not start it)
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
search
Hybrid search: keyword and vector results merged by rank. Operators in the query: from:, before:, after:, label:, in:, -term, "phrase", term*. Each hit says which retriever found it; if the vector side was down the result says so.
Arguments:
query— Search terms and operators.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--from— Only this sender.--since— Only after this date (ISO 8601).--before— Only before this date (ISO 8601).--label— Only messages carrying this label.--account— Restrict to one account.--disposition— inbox, archive or discarded (discarded is explicit).--category— Only this triage category.--min-priority— Only this priority or more.--unread— Only unread messages.--keyword— Keyword search only (no model, no vectors).--limit— Maximum results.--offset— Skip this many (paging).--starred— Only starred messages.--has-attachment— Only messages with an attachment.
show
Show one message (cleaned text, or --raw/--headers).
Arguments:
message_id— The message id.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--raw— Include the raw bytes (base64 in --json).--headers— Show only the raw headers.
thread
Show a conversation as a tree: who replied to whom (* marks unread).
Arguments:
message_id— Any message in the conversation.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--limit— Most messages to show.
summarize
Summarize messages with the local model.
Arguments:
ID— One or more message ids.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--mark-read— Also mark the summarized messages read.
read
Mark messages read.
Arguments:
ID— One or more message ids.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--yes— Confirm a bulk change (>25 messages).
unread
Mark messages unread.
Arguments:
ID— One or more message ids.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--yes— Confirm a bulk change (>25 messages).
undo
Undo a read-state change from the audit log.
Arguments:
audit_id— The audit id to undo (see 'oaken audit').
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
sync
Sync every account on every provider now (or one account, or one folder).
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--account— Account to sync; default is all.--folder— One folder; default is the whole account.--wait— Wait until the sync job finishes.--timeout— Give up waiting after S seconds.
label
Label messages (tags for finding mail).
oaken label list | create NAME | add NAME ID... | remove NAME ID...
Arguments:
action— oaken label list | create NAME | add NAME ID... | remove NAME ID...ARG— A name or path, then message ids.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--yes— Confirm a change to over 25 messages.
folder
File messages into folders under Inbox.
oaken folder list | create PATH | add PATH ID... (or move) | remove ID... (back to the Inbox)
Arguments:
action— oaken folder list | create PATH | add PATH ID... (or move) | remove ID... (back to the Inbox)ARG— A name or path, then message ids.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--yes— Confirm a change to over 25 messages.
star
Star messages (written back to the mailbox where it can be).
oaken star list | add ID... | remove ID... (oaken unstar ID... is remove)
Arguments:
action— oaken star list | add ID... | remove ID... (oaken unstar ID... is remove)ARG— A name or path, then message ids.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--yes— Confirm a change to over 25 messages.--limit— With list: most to show.
unstar
Remove the star from messages.
Arguments:
ID— One or more message ids.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--yes— Confirm a change to over 25 messages.
mailbox
tree (default): Inbox, folders, labels and Discarded with counts. counts: the sidebar's numbers. messages: list what is in a folder or under a label. rules ID: the labels and flags on a message and the Sieve rule behind each. --account limits counts and messages to one account.
Arguments:
action— tree (default), counts, messages or rules.id— With rules: the message id.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--account— Only this account.--folder— With messages: only this folder.--label— With messages: only this label.--disposition— With messages: where to look (default: filed for --folder, any for --label, else inbox).--unread— With messages: only unread.--starred— With messages: only starred.--limit— With messages: most to show.--offset— Skip this many.
pipeline
Default shows status. 'pause'/'resume' stop and restart the model-bound ingest stages (embed, triage, enrich), or just one (oaken pipeline pause enrich, or one enricher: enrich.summary) — mail keeps landing and being filtered while paused. 'limits enrich 2' changes how many jobs a stage runs at once, live. 'parked' re-queues failed ingest jobs.
Arguments:
subcommand— status (default), pause, resume, limits, or parked.STAGE— With pause/resume: one stage (embed, triage, enrich or enrich.NAME), or none for all. With limits: a stage and a number.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--why— A note recorded with a pause.--by-enricher— With status: also each enricher's queue.--retry— With 'parked': re-queue this one parked job.--all— With 'parked': re-queue every parked ingest job.
usage
Model calls and tokens per workspace, stage and model.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--since-hours— Only the last H hours of usage.--workspace— Only this workspace.
plugins
Plugin control is core's, all here. Default lists plugins; --check runs the health probe now. 'disable' stops a plugin until 'enable' (or a restart; enabled = false in [plugins.KIND.NAME] makes it last). 'reload' restarts one on the current config.toml. 'config NAME' shows its settings. 'set NAME KEY=VALUE ...' changes them (--unset KEY, --replace, or --file FILE for TOML; comments in config.toml are kept, secrets are refused). 'check NAME [KEY=VALUE ...]' tries settings on a throwaway instance and writes nothing.
Arguments:
subcommand— list (default), enable, disable, reload, config, check or set.name— The plugin (gmail) or one account (gmail@work).KEY=VALUE— With set/check: settings.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--kind— For a name two kinds share (ollama): which one. NAME may also be KIND.NAME, as in triager.ai.--check— Run each plugin's health probe.--unset— With set/check: remove a setting.--replace— With set/check: KEY=VALUE is the whole table.--file— With set/check: the plugin's settings as TOML (- is stdin).
config
'show' prints config.toml. 'test FILE' checks an edit without saving it, 'save FILE' validates and saves it (the old file is kept as a timestamped .bak), 'reload' applies the saved file to the running core. FILE may be - for standard input.
Arguments:
subcommand—file— With test/save: the TOML to use, or - for stdin.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
accounts
The configured accounts (never credentials).
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
workspaces
Workspaces are named confidentiality levels: each has a trust level (secure or insecure) and an LLM backend. A secure workspace only uses a local backend. Default lists workspaces. 'get NAME' shows one. 'check NAME [TOML...]' validates without saving. 'set NAME [TOML...] [--file FILE]' creates or replaces. 'remove NAME' removes it (default cannot be removed).
Arguments:
subcommand— list (default), get, check, set, or remove.name— The workspace name.TOML— With check/set: TOML lines for the workspace settings (e.g. 'trust = "insecure"').
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--file— With check/set: a TOML file for the workspace settings (- for stdin).
audit
The newest audit-log rows.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--limit— How many rows (max 500).--op— Only rows for this operation.--since— Nothing older than this (ISO 8601).--cursor— The next page: the cursor the last one gave.--all— Page through every row, not just one.
operations
Every operation with its permission and MCP exposure.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
reprocess
Bring one pipeline stage up to date.
Arguments:
stage— The stage to reprocess.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--account— Restrict to one account.--since— embed and enrich: mail dated on or after this day.--limit— embed and enrich: just the newest N messages.
rebuild-index
Rebuild the search index from the raw store.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--account— Restrict to one account.--force— Re-index even where the content hash is unchanged.
watch
Stream core events as lines (or --json).
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
settings
'settings' lists every section; 'settings SECTION' one. 'settings set SECTION KEY=VALUE ...' saves a change (--unset KEY goes back to the default) to config.toml, keeping its comments; 'settings check ...' tests it without saving. Saved settings reach core on 'oaken reload' (or add --reload); the answer says which need more. An environment variable that overrides a key is reported.
Arguments:
[get|check|set] [SECTION] [KEY=VALUE ...]— The action (default get), the section, then settings.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--unset— Remove a setting: back to its default.--reload— With set: reload core on the change.
storage
Where the data is and how big it is.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
vacuum
Rewrites raw.db and index.db. One at a time, and not while an index rebuild runs. It holds each database's write lock while it works (ingest waits, reads go on) and needs about the database's own size free on the disk.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--wait— Wait for it, and show the sizes.--timeout— Give up waiting after S seconds.
cache
'cache' (or 'cache stats') shows what it holds and how often it saved a model call. 'cache clear' deletes cached answers (--task TASK for one task): mail and the index are untouched, and cleared answers are recomputed on demand.
Arguments:
action—
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--task— With clear: only this task's answers.--yes— With clear: do not ask.
events
What core published recently, including before it was last restarted: ids, states and numbers, never mail text. --follow prints the history and then the live stream.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--tail,-n— How many (default 50, max 1000).--kind— Only this kind of event.--since— Nothing older than this (ISO 8601).--follow,-f— Then keep watching.
trace
The trace records, with the full text, what core hands a model and what it answers (the prompt, the thinking, the timings), the calls into every plugin, and what an agent claims and commits. It is off until oaken trace on (or [log] trace = true). oaken trace -f plugin.triager.ai follows one plugin (plugin.enricher.summary, plugin.llm_backend.ollama, ...); --job ID follows one job and nothing else.
Arguments:
PLUGIN|on|off|status— plugin.KIND.NAME to show one plugin, or on, off, status for the switch.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--job— Only this job.--message— Only this message.--kind— Only this kind of event.--tail,-n— How many first.--since— Nothing older than this (ISO 8601).--follow,-f— Then keep watching.
agents
Agents lease jobs from the queue with a token of their own (the swarm page).
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
agents create
Register an agent and print its token once.
Arguments:
label— A name for the agent.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--kind— A job kind it may lease.--account— Limit it to this account (repeatable).--max-leases— Jobs it may hold at once.--max-per-hour— Jobs it may claim per hour.
agents list
List agents.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--all— Include revoked agents.
agents revoke
Revoke an agent; its jobs go back on the queue.
Arguments:
agent_id— The agent id (see 'oaken agents list').
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
jobs
Inspect and steer the durable queue (list, show, cancel, retry) with your API token. The agent protocol (claim, heartbeat, complete, fail) is authenticated by the agent's own token (OAKEN_AGENT_TOKEN or --agent-token-file) instead.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--agent-token-file— Read the agent token from PATH.
jobs list
List jobs in the queue.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--status— Only jobs in this state.--kind— Only this kind, e.g. ingest.enrich.--account— Only this account.--limit— How many (newest first, max 500).
jobs show
Show one job in full.
Arguments:
job_id—
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
jobs cancel
Cancel a queued job (or ask a running one to stop).
Arguments:
job_id—
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
jobs retry
Re-queue a failed or cancelled job to run now.
Arguments:
job_id—
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
jobs claim
Lease the next job.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--kind— Only this kind.--max-chars— For ingest.enrich: the most text to send.
jobs heartbeat
Extend a lease.
Arguments:
job_id—
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
jobs complete
Hand back a result.
Arguments:
job_id—
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--result— The result object; '-' reads stdin.--produced-by— The model or tool that made it.
jobs fail
Report an error.
Arguments:
job_id—
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--error— What went wrong (no mail).--permanent— Do not retry it.--retry— Hand it back without spending an attempt.
mcp
Reads MCP messages on stdin and forwards them to the MCP server inside the running core, writing its answers to stdout. It adds nothing: the tools, the confirmation step and the limits are core's. If core is not running, tool calls answer with a core_not_running error. It never starts core. Point a stdio-only client (Claude Desktop) at 'oaken mcp'. 'oaken mcp expose' lists which operations MCP clients may call; 'oaken mcp expose NAME on|off|default' (--plugin for a plugin's operations) changes it.
Arguments:
action— expose: choose which operations MCP clients may call (bare 'oaken mcp' is the bridge).NAME— With expose: an operation name.state— With expose NAME: on, off, or default (the operation's own).
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--timeout— Give up on a call after.--agent— Speak to the swarm door as an agent (token from OAKEN_AGENT_TOKEN).--agent-token-file— Read the agent token from a file.--plugin— With expose: NAME is a plugin (all of its operations).
enrich
Run or show the enrichers (summary, actions, inspector) on a message.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
enrich run
Run the enrichers on one message now.
Arguments:
message_id—enricher— Only these enrichers (default: all).
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--force— Run even if a current result is stored.
enrich show
Show the stored results.
Arguments:
message_id—enricher— One enricher (default: all stored).
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
triage
Run, show or dry-run triage (the verdict that rates a message) on a message.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
triage run
Run the triagers on one message now.
Arguments:
message_id—
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--force— Rate again even if a current verdict is stored.
triage show
Show the stored verdict.
Arguments:
message_id—
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
triage try
Dry-run triage on a message or on text: the verdict, nothing stored.
Arguments:
message_id— A stored message (or use --text).
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--text— Triage this text instead (- reads stdin).--subject— With --text: the subject.--sender— With --text: the From line.
action
Show what the actions did about a message, or approve one that is waiting.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
action show
What each action did.
Arguments:
message_id—
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
action approve
Say yes to an action that is waiting.
Arguments:
message_id—name— The action plugin's name.route— The route triage sent the message by.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
sieve
Scripts are files you edit; these commands never change them.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
sieve check
Compile a script file.
Arguments:
file—
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
sieve test
Run a script on one message and show each effect. Stores nothing.
Arguments:
file—
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--message— A stored message.--eml— A message file.
sieve list
The scripts core would load.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
sieve get
Print one script's text (to edit it).
Arguments:
name— The script file name, e.g. 10-lists.sieve.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
sieve save
Compiles the script first and writes it only if it compiles, atomically and owner-only. Run order is by name, so a new script is best named NN-name.sieve; 'oaken sieve save --suggest-name' prints the next free NN.
Arguments:
name— The script file name (e.g. 20-work.sieve).file— The script file to read ('-' reads stdin).
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--suggest-name— Print the next free NN-prefixed name and exit (give a base with --base).--base— Base for --suggest-name (default filter).
sieve delete
Remove one script.
Arguments:
name— The script file name.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
sieve refilter
Re-run the scripts over stored mail (a job).
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--account— Restrict to one account.
admin
Administration: add and inspect accounts.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
admin account
Mail accounts.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
admin account list
List accounts.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
admin account show
One account and its settings.
Arguments:
account_id—
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
admin account add
Asks for the provider, an id, a name and the provider's own non-secret settings, then stores them. The credential is stored afterwards with 'oaken PROVIDER auth'. Give --provider, --id and --name (and --set) to skip the questions.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--provider— gmail, smtp or imap.--id— a-z, 0-9, - and _.--name— A display name.--set— A provider setting (repeatable).--receive-only— Listen but never send (the default for a new Gmail account until send is turned on).
admin account set
Merges --set KEY=VALUE into the account's config and/or flips the receive-only switch. Credentials are never set here (use 'oaken PROVIDER auth').
Arguments:
account_id—
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--set— A setting to change (repeatable).--receive-only— Mark the account receive-only (listen but never send).--can-send— Allow this account to be a send route (undo receive-only).
admin account remove
Remove an account and its schedules (stored mail is kept).
Arguments:
account_id—
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
schedule
When each account syncs. 'set' takes 'every 15m' or a five-field cron expression; edits are audited and take effect live. Editing a schedule is never offered over MCP.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.
schedule list
Every schedule and its state.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--crontab— Also print a read-only crontab export.
schedule set
Create or change a schedule.
Arguments:
account_id— The account to schedule.schedule— 'every 15m' or a five-field cron expression (UTC-aware).
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--folder— A per-folder schedule (default: account).--timezone— e.g. America/New_York (unchanged if omitted).--quiet— Mute alerts in this window; sync still runs.--clear-quiet— Remove the quiet window.--run-now— Also sync immediately.
schedule pause
Pause a schedule.
Arguments:
account_id— The account to schedule.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--folder— A per-folder schedule (default: account).--why— A note recorded with the pause.
schedule resume
Resume a paused schedule.
Arguments:
account_id— The account to schedule.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--folder— A per-folder schedule (default: account).
schedule remove
Remove a schedule.
Arguments:
account_id— The account to schedule.
Options:
--debug— DEBUG logging for this command, to the terminal and the configured logfile.--folder— A per-folder schedule (default: account).
completion
Install with, for example: eval "$(oaken completion bash)".
Arguments:
shell—
help
Show this help, or help for one COMMAND.
Arguments:
COMMAND— A command to show help for.