Skip to main content
A workspace config describes one virtual terminal. Python and TypeScript use snake_case YAML keys. TypeScript constructor options use camelCase, such as commandLimits; provider and runtime guides show their SDK equivalents.

Start with RAM

mounts is the only required top-level key. This config creates a writable, in-memory mount without credentials:
workspace.yaml
Create a workspace, check it, and remove it:
The shell command prints ready. Replace RAM using a VFS setup guide. YAML defaults mode to write; direct Python and TypeScript Workspace constructors default to read.

Workspace settings

Unknown keys are errors. Provider fields belong under mounts.<prefix>.config, CLI fields under clis.<name>.config, and runtime fields under runtimes[].config.

Mount settings

Each mount key is an absolute virtual prefix, such as /data.

Environment and credential pointers

A string sets a literal exported variable. A pointer fetches a credential instead of storing its value in YAML:
Here API_TOKEN comes from the Mirage process environment. Managed entries default key to the variable’s name and are always exported. readonly prevents shell assignment and unset. Fetching is lazy on first reference; fetch: eager requests it before execution even when the line does not name it. Pointers inside mount or registered CLI configs require an explicit key and are resolved before the provider is constructed. See Service credentials for from, ref and key examples.

Values and paths

${NAME} placeholders are substituted from the host process environment when the config loads. A missing variable is an error. Use a credential pointer when the value should be fetched through a source instead. Relative script paths and file-based code references resolve from the config file’s directory. Relative dotenv paths resolve from the Mirage process’s working directory.