Settings Reference (~/.si/settings.toml)
si reads a single TOML file for user-facing configuration. The canonical path is:
si login so that profile metadata (auth path/timestamps) are tracked in one place.
Precedence
When supported by a command, values resolve in this order:- CLI flags
~/.si/settings.toml- Environment variables
- Built-in defaults
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(string): default~/.si/settings.tomlpaths.codex_profiles_dir(string): default~/.si/codex/profiles
~/.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 login (and explicit si warmup enable), not by si status.
[codex]
Defaults for Codex container commands (spawn/respawn/login/run).
codex.image(string): docker image forsi spawn(default:aureuma/si:local)codex.network(string): docker network namecodex.workspace(string): host path for workspace bind.- If unset,
si 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): container working directorycodex.repo(string): default repo inOrg/Repoformcodex.gh_pat(string): optional PAT (stored in settings; keep file permissions restrictive)codex.codex_volume(string): override codex volume namecodex.skills_volume(string): shared skills volume name (default:si-codex-skills)codex.gh_volume(string): override GitHub config volume namecodex.docker_socket(bool): mount host Docker socket into codex containers (default:true)codex.profile(string): default profile ID/emailcodex.detach(bool): default detach behaviorcodex.clean_slate(bool): default clean-slate behavior
[codex.login]
Defaults for si login.
codex.login.device_auth(bool): default device auth flow (true/false)codex.login.open_url(bool): open the login URL in a browser after it is printedcodex.login.open_url_command(string): command to open the login URL. Use{url}to inject the URL, otherwise it is appended. Supported placeholders:{url},{profile},{profile_id},{profile_name},{profile_email}. Special valuesafari-profileopens Safari using a profile window derived from the selected Codex profile name (including emojis). macOS only; requires Accessibility permission for System Events. Usesi login --safari-profile "<name>"to override. Notes:- When
si logindetects a one-time device code, it copies it to the clipboard (macOS:pbcopy, Linux:wl-copy,xclip, orxsel).
[codex.exec]
Defaults for one-off si run (alias si exec).
codex.exec.model(string): default modelcodex.exec.effort(string): default reasoning effort
[codex.profiles]
Profile metadata tracked in settings.
codex.profiles.active(string): the last profile used for login
[codex.profiles.entries.<id>]
Per-profile entry keyed by profile ID (for example america). These entries are updated on successful si login.
name(string): profile display nameemail(string): profile emailauth_path(string): path to auth.jsonauth_updated(string): RFC3339 timestamp of auth.json
[dyad]
Defaults for dyad spawns.
dyad.actor_image(string): defaultaureuma/si:localdyad.critic_image(string): defaultaureuma/si:localdyad.codex_model(string)dyad.codex_effort_actor(string)dyad.codex_effort_critic(string)dyad.codex_model_low(string)dyad.codex_model_medium(string)dyad.codex_model_high(string)dyad.codex_effort_low(string)dyad.codex_effort_medium(string)dyad.codex_effort_high(string)dyad.workspace(string): host path for workspace bind.- If unset,
si dyad spawnresolves from--workspaceor current directory. - On first interactive use, SI prompts to save the resolved path into
~/.si/settings.toml.
- If unset,
dyad.configs(string): host path for configsdyad.forward_ports(string): port range, e.g.1455-1465dyad.skills_volume(string): shared skills volume name (default:si-codex-skills)dyad.docker_socket(bool): mount host Docker socket into dyad containers (default:true)
[stripe]
Defaults for si stripe account and environment context.
stripe.organization(string): optional organization labelstripe.default_account(string): default account alias (oracct_id)stripe.default_env(string):liveorsandbox(default:sandbox)stripe.log_file(string): JSONL log path for Stripe bridge request/response events (default:~/.si/logs/stripe.log)
[stripe.accounts.<alias>]
Per-account Stripe settings.
id(string): Stripe account id (acct_...) used for scoped callsname(string): display namelive_key(string): direct live API key (prefer env refs instead)sandbox_key(string): direct sandbox API key (prefer env refs instead)live_key_env(string): env var name holding the live keysandbox_key_env(string): env var name holding the sandbox key
si stripe:
--api-key(or--live-api-key/--sandbox-api-keyfor sync)- Account settings key (
live_key/sandbox_key) - Account settings env ref (
live_key_env/sandbox_key_env) - Environment-specific env fallback (
SI_STRIPE_LIVE_API_KEY/SI_STRIPE_SANDBOX_API_KEY) - Generic env fallback (
SI_STRIPE_API_KEY)
SI_STRIPE_ACCOUNT can provide default account selection when settings do not specify one.
[github]
Defaults for si github (GitHub App or OAuth token auth).
github.default_account(string): default account aliasgithub.default_auth_mode(string):apporoauth(default:app)github.api_base_url(string): API base URL (default:https://api.github.com)github.default_owner(string): default owner/org for commands that accept owner fallbackgithub.vault_env(string): vault env hint (default:dev)github.vault_file(string): optional explicit vault file pathgithub.log_file(string): JSONL log path for GitHub bridge request/response events (default:~/.si/logs/github.log)
[github.accounts.<alias>]
Per-account GitHub settings.
name(string): display nameowner(string): default owner/org for this accountapi_base_url(string): per-account API base URL (supports GHES)auth_mode(string):apporoauth(overrides global default for this account)vault_prefix(string): env key prefix override (exampleGITHUB_CORE_)oauth_access_token(string): direct OAuth token (prefer env refs)oauth_token_env(string): env var with OAuth tokenapp_id(int): direct app id (prefer env refs for secretless settings)app_id_env(string): env var with app idapp_private_key_pem(string): direct private key PEM (prefer env refs)app_private_key_env(string): env var with private key PEMinstallation_id(int): explicit installation idinstallation_id_env(string): env var with installation id
si github:
- CLI override (
--auth-modewhere available) - Account settings (
auth_mode) - Env fallback (
GITHUB_AUTH_MODE, thenGITHUB_DEFAULT_AUTH_MODE) - Global settings (
github.default_auth_mode)
si github in app mode:
- CLI overrides (
--app-id,--app-key,--installation-id) - Account settings (
app_id,app_private_key_pem,installation_id) - Account env refs (
app_id_env,app_private_key_env,installation_id_env) - Account-prefix env keys (
GITHUB_<ACCOUNT>_APP_ID,GITHUB_<ACCOUNT>_APP_PRIVATE_KEY_PEM,GITHUB_<ACCOUNT>_INSTALLATION_ID) - Global env fallbacks (
GITHUB_APP_ID,GITHUB_APP_PRIVATE_KEY_PEM,GITHUB_INSTALLATION_ID)
si github in oauth mode:
- CLI override (
--tokenwhere available) - Account settings (
oauth_access_token) - Account env ref (
oauth_token_env) - Account-prefix env keys (
GITHUB_<ACCOUNT>_OAUTH_ACCESS_TOKEN,GITHUB_<ACCOUNT>_TOKEN) - Global env fallbacks (
GITHUB_OAUTH_TOKEN,GITHUB_TOKEN,GH_TOKEN)
[cloudflare]
Defaults for si cloudflare (token auth with multi-account and env context labels).
cloudflare.default_account(string): default account aliascloudflare.default_env(string):prod,staging, ordev(default:prod)cloudflare.api_base_url(string): API base URL (default:https://api.cloudflare.com/client/v4)cloudflare.vault_env(string): vault env hint (default:dev)cloudflare.vault_file(string): optional explicit vault file pathcloudflare.log_file(string): JSONL log path for Cloudflare bridge request/response events (default:~/.si/logs/cloudflare.log)
[cloudflare.accounts.<alias>]
Per-account Cloudflare context and env-key pointers.
name(string): display nameaccount_id(string): Cloudflare account idaccount_id_env(string): env var with account idapi_base_url(string): per-account API base URL overridevault_prefix(string): env key prefix override (exampleCLOUDFLARE_CORE_)default_zone_id(string): default zone id fallbackdefault_zone_name(string): default zone name fallbackprod_zone_id(string): zone id used whenenv=prodstaging_zone_id(string): zone id used whenenv=stagingdev_zone_id(string): zone id used whenenv=devapi_token_env(string): env var with API token
si cloudflare is vault-compatible and token-only:
- CLI overrides (
--api-token,--account-id,--zone-id) - Account settings (
account_id, env-mapped zone ids, defaults) - Account env refs (
account_id_env,api_token_env) - Account-prefix env keys (
CLOUDFLARE_<ACCOUNT>_API_TOKEN,CLOUDFLARE_<ACCOUNT>_ACCOUNT_ID,CLOUDFLARE_<ACCOUNT>_PROD_ZONE_ID,CLOUDFLARE_<ACCOUNT>_STAGING_ZONE_ID,CLOUDFLARE_<ACCOUNT>_DEV_ZONE_ID) - Global env fallbacks (
CLOUDFLARE_API_TOKEN,CLOUDFLARE_ACCOUNT_ID,CLOUDFLARE_ZONE_ID)
[gcp]
Defaults for si gcp (Service Usage, IAM, API keys, Gemini, and Vertex AI).
gcp.default_account(string): default account aliasgcp.default_env(string):prod,staging, ordev(default:prod)gcp.api_base_url(string): default API base URL used bysi gcp service(default:https://serviceusage.googleapis.com)gcp.log_file(string): JSONL log path for GCP bridge events (default:~/.si/logs/gcp-serviceusage.log)
[gcp.accounts.<alias>]
Per-account GCP context and env-key pointers.
name(string): display namevault_prefix(string): env key prefix override (exampleGCP_CORE_)project_id(string): default Google Cloud project idproject_id_env(string): env var with project idaccess_token_env(string): env var with OAuth access tokenapi_key_env(string): env var with API key (used by Gemini API-key mode)api_base_url(string): per-account API base URL override
si gcp project id:
- CLI override (
--project) - Account settings (
project_id) - Account env ref (
project_id_env) - Account-prefix env key (
GCP_<ACCOUNT>_PROJECT_ID) - Global env fallbacks (
GCP_PROJECT_ID,GOOGLE_CLOUD_PROJECT)
si gcp OAuth token:
- CLI override (
--access-token) - Account env ref (
access_token_env) - Account-prefix env key (
GCP_<ACCOUNT>_ACCESS_TOKEN) - Global env fallbacks (
GOOGLE_OAUTH_ACCESS_TOKEN,GCP_ACCESS_TOKEN)
si gcp gemini):
- CLI override (
--api-key) - Account env ref (
api_key_env) - Account-prefix env key (
GCP_<ACCOUNT>_API_KEY) - Global env fallbacks (
GEMINI_API_KEY,GOOGLE_API_KEY,GCP_API_KEY)
[google]
Defaults for si google places and si google youtube (multi-account and env context labels).
google.default_account(string): default account aliasgoogle.default_env(string):prod,staging, ordev(default:prod)google.api_base_url(string): API base URL (default:https://places.googleapis.com)google.vault_env(string): vault env hint (default:dev)google.vault_file(string): optional explicit vault file pathgoogle.log_file(string): shared JSONL log path override for Google bridges. If unset, Places defaults to~/.si/logs/google-places.logand YouTube defaults to~/.si/logs/google-youtube.log.
[google.accounts.<alias>]
Per-account Google Places context and env-key pointers.
name(string): display nameproject_id(string): default Google Cloud project idproject_id_env(string): env var with project idapi_base_url(string): per-account API base URL overridevault_prefix(string): env key prefix override (exampleGOOGLE_CORE_)places_api_key_env(string): env var with generic Places API keyprod_places_api_key_env(string): env var with prod Places API keystaging_places_api_key_env(string): env var with staging Places API keydev_places_api_key_env(string): env var with dev Places API keydefault_region_code(string): default CLDR region codedefault_language_code(string): default BCP-47 language code
si google places is vault-compatible and API-key based:
- CLI overrides (
--api-key,--project-id) - Account settings (
project_id) - Account env refs (
project_id_env,places_api_key_env,prod_places_api_key_env,staging_places_api_key_env,dev_places_api_key_env) - Account-prefix env keys (
GOOGLE_<ACCOUNT>_PLACES_API_KEY,GOOGLE_<ACCOUNT>_PROD_PLACES_API_KEY,GOOGLE_<ACCOUNT>_STAGING_PLACES_API_KEY,GOOGLE_<ACCOUNT>_DEV_PLACES_API_KEY,GOOGLE_<ACCOUNT>_PROJECT_ID) - Global env fallbacks (
GOOGLE_PLACES_API_KEY,GOOGLE_PROJECT_ID)
[google.youtube]
Defaults for si google youtube (YouTube Data API v3).
google.youtube.api_base_url(string): API base URL (default:https://www.googleapis.com)google.youtube.upload_base_url(string): upload API base URL (default:https://www.googleapis.com/upload)google.youtube.default_auth_mode(string):api-keyoroauth(default:api-key)google.youtube.upload_chunk_size_mb(int): default chunk hint for upload flows (default:16)
[google.youtube.accounts.<alias>]
Per-account YouTube context and env-key pointers.
name(string): display nameproject_id(string): default Google Cloud project idproject_id_env(string): env var with project idvault_prefix(string): env key prefix override (exampleGOOGLE_CORE_)youtube_api_key_env(string): env var with generic YouTube API keyprod_youtube_api_key_env(string): env var with prod YouTube API keystaging_youtube_api_key_env(string): env var with staging YouTube API keydev_youtube_api_key_env(string): env var with dev YouTube API keyyoutube_client_id_env(string): env var with OAuth client idyoutube_client_secret_env(string): env var with OAuth client secretyoutube_redirect_uri_env(string): env var with OAuth redirect uriyoutube_refresh_token_env(string): env var with OAuth refresh tokendefault_region_code(string): default region codedefault_language_code(string): default language code
si google youtube is vault-compatible and supports both API key and OAuth:
- CLI overrides (
--api-key,--project-id,--client-id,--client-secret,--redirect-uri,--access-token,--refresh-token) - Account settings (
project_id) - Account env refs (
project_id_env,youtube_api_key_env, env-specific api key refs, OAuth refs) - Account-prefix env keys (
GOOGLE_<ACCOUNT>_YOUTUBE_API_KEY,GOOGLE_<ACCOUNT>_PROD_YOUTUBE_API_KEY,GOOGLE_<ACCOUNT>_STAGING_YOUTUBE_API_KEY,GOOGLE_<ACCOUNT>_DEV_YOUTUBE_API_KEY,GOOGLE_<ACCOUNT>_YOUTUBE_CLIENT_ID,GOOGLE_<ACCOUNT>_YOUTUBE_CLIENT_SECRET,GOOGLE_<ACCOUNT>_YOUTUBE_REDIRECT_URI,GOOGLE_<ACCOUNT>_YOUTUBE_ACCESS_TOKEN,GOOGLE_<ACCOUNT>_YOUTUBE_REFRESH_TOKEN,GOOGLE_<ACCOUNT>_PROD_YOUTUBE_REFRESH_TOKEN,GOOGLE_<ACCOUNT>_STAGING_YOUTUBE_REFRESH_TOKEN,GOOGLE_<ACCOUNT>_DEV_YOUTUBE_REFRESH_TOKEN) - Global env fallbacks (
GOOGLE_YOUTUBE_API_KEY,GOOGLE_YOUTUBE_CLIENT_ID,GOOGLE_YOUTUBE_CLIENT_SECRET,GOOGLE_YOUTUBE_REDIRECT_URI,GOOGLE_YOUTUBE_ACCESS_TOKEN,GOOGLE_YOUTUBE_REFRESH_TOKEN,GOOGLE_PROJECT_ID)
si google youtube auth login is stored at:
~/.si/google/youtube/oauth_tokens.json
[vault]
Defaults for si vault (encrypted dotenv files).
vault.file(string): default env file path used when--fileis not provided (default:~/.si/vault/.env)vault.trust_store(string): local TOFU trust store path (default:~/.si/vault/trust.json)vault.audit_log(string): JSONL audit log path (default:~/.si/logs/vault.log)vault.key_backend(string): where the device private key is stored. Supported:keyring(OS secure store; Keychain on macOS),keychain(alias),file(default:keyring)vault.key_file(string): identity file path used whenvault.key_backend = "file"(default:~/.si/vault/keys/age.key)
[shell.prompt]
Prompt rendering for si run interactive shells. This applies without modifying .bashrc.
shell.prompt.enabled(bool): enable/disable prompt customizationshell.prompt.git_enabled(bool): include git branch when availableshell.prompt.prefix_template(string): template for profile prefix. Use{profile}placeholder.shell.prompt.format(string): layout template. Supported placeholders:{prefix},{cwd},{git},{symbol}shell.prompt.symbol(string): prompt symbol (e.g.$or❯)
[shell.prompt.colors]
Color tokens for prompt components. Supported values:
- Basic names:
black,red,green,yellow,blue,magenta,cyan,white - Bright variants:
bright-black,bright-red,bright-green,bright-yellow,bright-blue,bright-magenta,bright-cyan,bright-white resetansi:<code>where<code>is an ANSI numeric color code (e.g.ansi:0;36)raw:<value>to pass a raw escape sequence
shell.prompt.colors.profileshell.prompt.colors.cwdshell.prompt.colors.gitshell.prompt.colors.symbolshell.prompt.colors.errorshell.prompt.colors.reset
