Settings Reference (~/.si/settings.toml)
si reads a single TOML file for user-facing configuration. The canonical path is:
si codex profile ... writes Codex profile metadata here so profile registry state, Fort profile binding, and default runtime selection all share one source of truth.
Precedence
When supported by a command, values resolve in this order:- CLI flags
~/.si/settings.toml- Environment variables
- Built-in defaults
CLI color output
SI CLI help and text-mode output share one semantic color palette:- section headings: cyan
- commands/examples: magenta
- flags/prompts: yellow
- labels: blue
- success: green
- warnings: yellow
- errors: red
- muted text: gray
SI_CLI_COLOR=always: force colorSI_CLI_COLOR=auto: default behaviorSI_CLI_COLOR=never: disable colorNO_COLOR=1: disable color
Schema
The file is a standard TOML document.schema_version is reserved for future migrations.
Top-level
schema_version(int): settings schema version. Current value:1.
[paths]
Reference paths for the local .si directory layout.
paths.root(string): default~/.sipaths.settings_file(string): default~/.si/settings.tomlpaths.codex_profiles_dir(string): default~/.si/codex/profilespaths.workspace_root(string): optional host directory containing sibling repos. Used by SI runtime commands when flags are omitted.
~/.si:
~/.si/warmup/state.json(reconcile state/feedback loop)~/.si/warmup/autostart.v1(warmup scheduler enabled marker)~/.si/warmup/disabled.v1(warmup scheduler disabled marker)~/.si/logs/warmup.log(JSONL operational log)
si codex warmup ....
Warmup only inspects persistent Codex worker status and schedules the next run from the reported reset windows with a small jitter.
Warmup only reports a profile as warmed once the live weekly quota drops below 100% left.
[codex]
Defaults for si codex profile-bound worker commands.
- Every
si codexworker must resolve to a predefined entry under[codex.profiles.entries.<id>].si codex profile add|show|list|login|swap|removemanages the profile registry in~/.si/settings.toml.
codex.workspace(string): host path for workspace bind.- If unset,
si codex spawnresolves from--workspaceor current directory. - On first interactive use, SI prompts to save the resolved path into
~/.si/settings.toml.
- If unset,
codex.workdir(string): worker working directorycodex.profile(string): legacy compatibility field for the most recently selected Codex profile.- Profile metadata is intentionally narrow here: the entry records identity and auth file location, while actual runtime behavior stays under
si codex .... - Worker-slot behavior is command-level:
si codex spawn|respawn --profile <profile> --slot <slot>si codex shell|tail|tmux|stop|remove --profile <profile> --slot <slot>si codex repair-auth --profile <profile> --slot <slot>for in-place Fort runtime repair
[codex.profiles]
Profile metadata tracked in settings.
codex.profiles.active(string): the most recently swapped/selected profile for profile-scoped Fort runtime auth and related host state
[codex.profiles.entries.<id>]
Per-profile entry keyed by profile ID (for example profile-alpha). These entries are created and updated by si codex profile add and any later profile metadata sync flows.
name(string): profile display nameemail(string): profile emailauth_path(string): path to auth.jsonauth_updated(string): RFC3339 timestamp of auth.json
[fort]
Defaults for the si fort wrapper (hosted Fort API access).
fort.repo(string): source repo path used whensi fort --buildis enabledfort.bin(string): fort binary path used by wrapper executionfort.build(bool): default build-before-run behavior for wrapper callsfort.host(string): hosted Fort endpoint URL (must be HTTPS for production runtime)fort.runtime_host(string): Fort endpoint URL intended for runtime workers (defaults tofort.hostwhen unset)
si fort config showreads these values.si fort config set ...writes these values to settings.si fortinjects--hostfrom[fort].hostwhen no explicit native--hostflag is passed.si fortprefers the profile Fort session underCODEX_HOME/fort/whenCODEX_HOMEis set by a managed Codex profile runtime.si fortdoes not accept caller-suppliedFORT_TOKEN_PATH/FORT_REFRESH_TOKEN_PATHas a normal runtime fallback and does not fall back to the active Codex profile outsidesi codex spawn/si codex shell.si fortfails loudly for runtime secret commands when no usable runtime session exists or runtime refresh fails; it does not silently fall back to host/bootstrap admin auth.si fortuses host/bootstrap admin token files at~/.si/fort/bootstrap/admin.tokenand~/.si/fort/bootstrap/admin.refresh.tokenonly for explicit admin/provisioning commands.- Treat bootstrap/admin auth as recovery-only; day-to-day Fort use should run through profile-scoped runtime token files provisioned by
si codex spawnorsi codex shell. - Codex profile provisioning explicitly requests a
30dFort refresh-session TTL even if Fort’s general default refresh-session TTL is shorter. - Runtime worker token state remains file-backed under:
~/.si/codex/profiles/<profile>/fort/for theprimaryslot~/.si/codex/profiles/<profile>/workers/<slot>/fort/for non-primary slots- Fort runtime agent IDs are slot-aware:
si-codex-<profile>forprimary,si-codex-<profile>--<slot>for non-primary slots - profile refresh tokens must be rotated in place.
[viva]
Defaults for the si viva wrapper. Native deploy, tunnel, backup, rollback, status, history, serve, analytics, and notification behavior remains owned by the viva binary.
viva.repo(string): source repo path used bysi viva --repo, configured repo resolution, or build fallbackviva.bin(string): native Viva binary path used by wrapper executionviva.build(bool): default build-before-run behavior for wrapper calls
si viva config showreads these wrapper values.si viva config set --repo <PATH> --bin <PATH> --build <true|false>writes these wrapper values to~/.si/viva/settings.tomlunless--settings-fileis supplied.- Wrapper options such as
si viva --repo <PATH> --build -- versionmust appear before native Viva args.
[viva.tunnel]
SI-owned tunnel profile selection used when wrapping native viva tunnel ... commands.
viva.tunnel.default_profile(string): default profile appended to nativeviva tunnel ...commands when no native--profileargument is presentviva.tunnel.profiles.<name>(table): stored tunnel profile metadata consumed by the wrapper
si viva config tunnel showreads configured tunnel profiles.si viva config tunnel import --profile <name> --file <PATH> [--set-default]imports one native Viva tunnel profile table into~/.si/viva/settings.toml.si viva config tunnel default --profile <name>changes the wrapper default profile and refuses missing profile names.si viva config tunnel importcopies the raw profile TOML table so native Viva-owned fields are preserved.
[surf]
Defaults for the si surf wrapper. Native Surf runtime, proxy, tunnel, host, session, and surf config ... behavior remains owned by the surf binary.
Surf wrapper module path:
surf.repo(string): source repo path used bysi surf --repo, configured repo resolution, or build fallbacksurf.bin(string): native Surf binary path used by wrapper executionsurf.build(bool): default build-before-run behavior for wrapper callssurf.settings_file(string): native Surf settings file path passed through where native Surf supports itsurf.state_dir(string): native Surf state directory path passed through where native Surf supports itsurf.vnc_password_fort_key(string): Fort key used to injectSURF_VNC_PASSWORDforsi surf startsurf.vnc_password_fort_repo(string): Fort repo scope for the noVNC password key; defaults tosurfwhen a key is configuredsurf.vnc_password_fort_env(string): Fort env scope for the noVNC password key; defaults todevwhen a key is configured
si surf wrapper config showreads SI wrapper values.si surf wrapper config set --repo <PATH> --bin <PATH> --build <true|false>writes SI wrapper values to~/.si/surf/si.settings.tomlunless--settings-fileis supplied.si surf config ...is native Surf config passthrough and does not write SI wrapper settings.- Wrapper options such as
si surf --repo <PATH> --build -- versionmust appear before native Surf args. si surfsetsSI_SURF_WRAPPED=1for native Surf execution.
[surf.tunnel]
Surf tunnel metadata used by compatibility paths. Prefer Fort-backed key naming in new documentation.
surf.tunnel.name(string): Surf tunnel runtime namesurf.tunnel.mode(string):quickortokensurf.tunnel.fort_key(string): Fort key for tunnel token material when supported by native Surfsurf.tunnel.vault_key(string): legacy compatibility alias for older settings only
External orbit settings
Third-party integration settings moved to the standaloneorbit repo. SI no longer reads provider account settings such as [stripe], [github], [cloudflare], [gcp], [google], [openai], [oci], [apple], or [workos].

