User settings are optional deployment preferences for one workstation. They are
not Run configuration, are not compiled into an ExecutionPlan, and are not
written into a lock file.
Default behavior
The canonical default is no user settings file. Reading settings never creates
one. With no file and no FASTSIM_* environment override, FastSim behaves exactly
as it did before this feature:
- Run authoring and project configuration remain the only simulation inputs;
- CLI-owned outputs use
./outputsonly when an enabled plugin requestsrun.output; - project cache, Registry, network, GPU and presentation defaults are unchanged.
FastSim creates the file only after an explicit settings set or settings import.
Removing the final stored key removes the file again.
Location and precedence
The default paths are:
| Platform | Path |
|---|---|
| Linux | $XDG_CONFIG_HOME/fastsim/config.toml, otherwise ~/.config/fastsim/config.toml |
| macOS | ~/Library/Application Support/FastSim/config.toml |
| Windows | %APPDATA%\FastSim\config.toml |
FASTSIM_SETTINGS_FILE selects a different file for managed deployments and
tests. fastsim settings --file PATH ... selects a file for one settings command.
Effective values use this precedence:
- an explicit command-line option;
- its documented environment variable;
- the persisted user setting;
- the pre-existing FastSim default.
Project fields still take precedence over user fallback values. For example, a
project cache_dir is not replaced by paths.cache_root.
Supported keys
| Key | Environment | Consumer |
|---|---|---|
outputs.root |
FASTSIM_OUTPUT_ROOT |
fastsim run and fastsim outputs |
paths.cache_root |
FASTSIM_CACHE_ROOT |
project resource cache fallback |
paths.temp_root |
FASTSIM_TEMP_ROOT |
temporary files created by CLI processes |
registries.sources |
FASTSIM_REGISTRIES |
additional local or pinned HTTPS Registry indexes |
network.offline |
FASTSIM_OFFLINE |
resource resolver network policy |
network.timeout_s |
FASTSIM_NETWORK_TIMEOUT_S |
resource download timeout |
cli.language |
FASTSIM_LANGUAGE |
operator-facing language preference |
cli.color |
FASTSIM_COLOR |
auto, always, or never color policy |
cli.output_format |
FASTSIM_OUTPUT_FORMAT |
rich, plain, or json CLI output |
cli.log_level |
FASTSIM_LOG_LEVEL |
CLI logging level |
compute.gpu_ids |
FASTSIM_GPU_IDS |
default CUDA_VISIBLE_DEVICES for fastsim run |
compute.max_workers |
FASTSIM_MAX_WORKERS |
bounded explicit jobs such as output verification and Viewer preparation |
server.default_url |
FASTSIM_SERVER_URL |
fastsim server status |
viewer.cache_root |
FASTSIM_VIEWER_CACHE_ROOT |
fastsim outputs open prepared-frame cache |
viewer.cache_limit_gb |
FASTSIM_VIEWER_CACHE_LIMIT_GB |
Viewer cache size limit |
credentials.registry_token_env |
— | name of an environment variable holding a Registry bearer token |
The file never stores a bearer token. Authorization is attached only to configured HTTPS Registry origins and is stripped if a redirect changes origin.
Local Registry values become absolute paths. A remote value must be immutable and pinned:
fastsim settings set registries.sources \
'https://registry.example/index.yaml#sha256=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'
fastsim settings set credentials.registry_token_env FASTSIM_PRIVATE_REGISTRY_TOKEN
For more than one environment-provided Registry, set FASTSIM_REGISTRIES to a JSON
array of strings. A single pinned HTTPS URL is accepted directly.
Simulation semantics such as backend, physics rate, seed, entities, cameras, plugins, recording streams and codecs do not belong here. Keep them in the Run, Scenario, component or plugin configuration so a lock remains reproducible.
Commands
fastsim settings path
fastsim settings list
fastsim settings list --effective
fastsim settings get outputs.root
fastsim settings describe
fastsim settings describe compute.gpu_ids
fastsim settings set outputs.root /data/fastsim/outputs
fastsim settings unset outputs.root
fastsim settings validate
fastsim settings export --to yaml --output fastsim-settings.yaml
fastsim settings import fastsim-settings.yaml
fastsim settings import fastsim-settings.yaml --replace
fastsim settings reset --yes
All commands accept --json after the subcommand. path, list, get,
describe, validate, and export are read-only. reset and output deletion
commands require --yes; FastSim does not hide a destructive confirmation in an
interactive prompt.
Writes use a same-directory temporary file, fsync, atomic replacement and mode
0600. FastSim gives a newly created settings directory mode 0700 but never
changes the permissions of an existing parent directory.