GlobalConfigPatch
load()
save()
GlobalConfig
Resolved settings after layering. UseLocalBackend::config() to read the effective configuration for a backend.
LocalBackend
config()
Runtime paths
Inspect the active config and resolve runtime paths with the same precedence used by sandbox startup:Example
Example
Example
Example
LocalBackend has two plain constructors alongside the builder. LocalBackend::lazy()? is synchronous and defers opening (and migrating) the local sandbox database until the first operation; it is what backend resolution uses when no backend is set explicitly. LocalBackend::new().await? opens the database up front, so startup fails fast if the database is unusable. All constructors read, layer, and validate global configuration before returning a backend; only database setup is lazy. Proxy settings are validated after sandbox options and managed overrides are composed, before network use.
LocalBackendBuilder::build_lazy() now returns Result<LocalBackend>. It replaces try_build_lazy(), and LocalBackend no longer implements Default; use LocalBackend::lazy()? instead.
For a long-lived process, construct a new backend to pick up configuration changes. Installing it with set_default_backend affects future operations; existing sandbox and volume handles retain their original backend. Construct the replacement successfully before installing it.
LocalBackendBuilder
config_path()
MSB_CONFIG_PATH. Managed settings still apply. The builder’s home() selects data storage; it does not select the configuration file. Backend-selection helpers and synchronous constructors remain synchronous.
Example
Example
deployment_profile()
ssh_inactivity_timeout_secs()
Sandbox configuration patches
UseSandboxBuilder::overlay() to add sparse per-sandbox values. A concrete SandboxConfig with workdir: None is treated as omitted. To explicitly clear an inherited working directory, use a patch. See configuration layering for precedence and backend differences.