-
Notifications
You must be signed in to change notification settings - Fork 1
Configuration
Chen Miao edited this page Mar 10, 2026
·
1 revision
This page lists every config file key CRIEW currently accepts, how defaults and fallbacks are resolved, and which minimal settings fit the common lore, IMAP, reply, and code-browser workflows.
- Preferred config file:
~/.criew/criew-config.toml - On first run,
CRIEW writes a minimal file there if neither
~/.criew/criew-config.tomlnor the older~/.criew/config.tomlexists. - Normal runtime root:
~/.criew/ - Relative paths in the config file resolve from the config file directory, not from the shell's current working directory.
- CRIEW creates missing runtime directories on startup.
Use this when you only sync lore mailboxes:
[source]
mailbox = "io-uring"Run:
criew sync
criew tuiUse this when you want My Inbox,
reply sending,
and a local kernel tree:
[source]
mailbox = "io-uring"
[imap]
email = "you@example.com"
user = "you@example.com"
pass = "app-password"
server = "imap.example.com"
serverport = 993
encryption = "ssl"
[kernel]
tree = "/path/to/linux"Run:
criew doctor
criew sync --mailbox INBOX
criew tui- Omitted storage paths are derived from
storage.data_dir. -
b4.pathwins over every fallback. If it is unset, CRIEW triesCRIEW_B4_PATH,./vendor/b4/b4.sh, the embedded runtime copy under<data_dir>/vendor/b4/b4.sh, and thenb4inPATH. -
imap.userfalls back toimap.email. -
imap.proxyfalls back toCRIEW_IMAP_PROXY,ALL_PROXY,all_proxy,HTTPS_PROXY,https_proxy,HTTP_PROXY, andhttp_proxy, in that order. -
imap.mailboxis still accepted as a historical alias forsource.mailbox, but new config should usesource.mailbox. - When IMAP config is complete,
CRIEW can use
INBOXas the default active mailbox. Without complete IMAP config, CRIEW falls back tosource.mailbox. -
ui.keymap = "custom"currently changes only the displayed scheme label. Navigation still follows the default layout. -
kernel.treeis loaded first. Entries fromkernel.treesare appended after it, and duplicate resolved paths are removed.
-
storage.data_dir: Optional path. Default is~/.criew/. This is the runtime root used by the derived defaults for the database, raw mail cache, patch output, logs, and embedded vendor assets. -
storage.database: Optional path. Default is<data_dir>/db/criew.db. This SQLite database stores synced mail, threads, patch metadata, and reply send state. -
storage.raw_mail_dir: Optional path. Default is<data_dir>/mail/raw. CRIEW stores raw.emlfiles here for preview rendering, reply draft seeding, and fallback recovery when parsed state is incomplete. -
storage.patch_dir: Optional path. Default is<data_dir>/patches.b4downloads and patch workflow output are written here.
-
logging.dir: Optional path. Default is<data_dir>/logs. CRIEW writescriew.loganderror.loghere. -
logging.filter: Optional string. Default isinfo. CRIEW passes this to tracing's filter parser. Simple values such astrace,debug,info,warn, anderrorare the safest choices.
-
b4.path: Optional path. Use this when you want CRIEW to call one specificb4binary or wrapper instead of the normal fallback chain.
-
source.mailbox: Optional string. Default islinux-kernel. This is the lore mailbox used bycriew syncwhen you do not pass--mailbox. It is also the fallback active mailbox when IMAP is not fully configured. -
source.lore_base_url: Optional string. Default ishttps://lore.kernel.org. Use this only when you need a different lore base URL.
This section is optional unless you want real IMAP INBOX sync.
CRIEW treats the IMAP config as complete only when the login identity,
password,
server,
port,
and encryption mode are all present.
-
imap.mailbox: Historical compatibility alias forsource.mailbox. Supported for reading andconfig get/set, but not recommended for new files. -
imap.email: Optional string. CRIEW uses this as your self address for mail matching. It also becomes the login identity whenimap.useris omitted.criew doctoruses it beforegit config user.emailwhen resolving the self address, and reply composition keeps it as an additional self address for recipient filtering. -
imap.user: Optional string. Alias:imapuser. This is the IMAP login account. Gmail usually expects the full email address here. If omitted, CRIEW falls back toimap.email. -
imap.pass: Optional string. Alias:imappass. This is the IMAP password or app password. -
imap.server: Optional string. Alias:imapserver. This is the IMAP server host name. -
imap.serverport: Optional integer. Alias:imapserverport. Required for real IMAP sync. Valid values are1through65535.0is rejected. -
imap.encryption: Optional string. Alias:imapencryption. Accepted values aretls,ssl,starttls, andnone.sslis accepted as the same runtime mode astls. -
imap.proxy: Optional string. Supported schemes arehttp://,socks5://, andsocks5h://. When omitted, CRIEW falls back to the proxy environment variables listed above.
-
ui.startup_sync: Optional boolean. Default istrue. When enabled, CRIEW auto-syncs enabled subscriptions after the TUI starts. -
ui.keymap: Optional string. Default isdefault. Supported values aredefault,vim, andcustom.defaultusesj/lfor focus andi/kfor movement.vimusesh/lfor focus andj/kfor movement, plusgg,G, andqq.customcurrently keeps the default navigation behavior. -
ui.inbox_auto_sync_interval_secs: Optional integer. Default is30. This controls the delay betweenMy Inboxbackground sync runs while the TUI stays open. The value must be greater than0.
-
kernel.tree: Optional path. One kernel tree root shown in the code browser pane. -
kernel.trees: Optional TOML array of paths. Additional kernel tree roots shown as top-level entries in the code browser. Use this when you want to switch between multiple working trees.
Open the command palette with :,
then use one of these commands:
-
config showopens the visual config editor. -
config show <key>shows the current file value, or the effective runtime fallback when the key is unset. -
config get <key>is the same read-only lookup form. -
config edit [key]opens the visual editor, optionally focused on one supported field. -
config set <key> <value>writes a TOML literal back to the config file and reloads runtime config.
Examples:
config get source.mailbox
config set ui.keymap vim
config set kernel.trees ["/path/to/linux", "/path/to/linux-next"]
config.path is a runtime-only value exposed by config get.
It reports the active config file path,
but it is not a file key you set in TOML.
-
v0.0.1and later support only the CRIEW naming set:criew,~/.criew/,criew-config.toml,criew.db,CRIEW_B4_PATH, andCRIEW_IMAP_PROXY. - Courier-era names such as
~/.courier,courier-config.toml,courier.db,COURIER_B4_PATH, andCOURIER_IMAP_PROXYare intentionally unsupported. -
git send-emailis required only for reply sending. - The kernel tree is optional, but code browsing and patch context are much more useful when it is set.