Which files does microManager read, and in what order?
It merges up to seven sources. When two set the same key, the one higher in this list wins, and keys a source does not mention fall through to the next one. Run scripts merge by their id across the files, while run scripts set in the app replace the files’ list.
| Precedence | Source | Notes |
|---|---|---|
| 1 | Overrides made in microManager’s repository settings | Stored in microManager, never written to your repository. |
| 2 | .micromanager/settings.local.toml | Personal overrides; keep it out of git. |
| 3 | .micromanager/settings.toml | Shared, committed settings for microManager. |
| 4 | .conductor/settings.local.toml | Conductor’s personal overrides file, read as is. |
| 5 | .conductor/settings.toml | Conductor’s shared settings file, read as is. |
| 6 | conductor.json | Conductor’s older JSON format: scripts.setup, scripts.run (a string), scripts.archive and runScriptMode. Ignored when .conductor/settings.toml exists, as in Conductor. |
| 7 | Built-in defaults | No scripts; files to copy default to .env*. |
microManager never writes to any of these files. Changes you make in a repository’s settings in the app are stored in microManager’s own database, on your computer.
Which keys can a settings file contain?
| Key | Type | What it does |
|---|---|---|
scripts.setup | string | Shell command run in a new workspace right after its worktree exists (and again when you restore an archived workspace). Agents can start while it runs. |
scripts.archive | string | Shell command run before a workspace is archived, while its folder still exists. It gets up to 2 minutes, and a failure does not stop the archive. |
scripts.run_mode | "concurrent" | "nonconcurrent" | With "nonconcurrent", starting a run script stops the same script in the repository’s other workspaces first. Useful when every workspace wants the same fixed port. |
scripts.run.<id>.command | string | The command of one run script. The Run button in the workspace header starts the default script, and its menu lists every script. |
scripts.run.<id>.default | boolean | Makes this the script the Run button starts. With none marked, the first script is the default. |
scripts.run.<id>.args | string[] | Arguments added after the command, each quoted for the shell the script runs in. |
scripts.run.<id>.options.cwd | string | The folder the script runs in, relative to the workspace. The workspace folder when absent. |
scripts.run.<id>.icon | string | Accepted for compatibility with Conductor’s format; microManager does not show it. |
scripts.run.<id>.available_in | string | string[] | Where the script may run. A script limited to "cloud" is left out, because every microManager workspace is local. |
scripts.run.<id>.hide | boolean | Leaves the script out. Run scripts merge by id across the files, field by field, so a local file can hide a shared script with just this line. |
scripts.run | string (legacy) | A single command string is still accepted and becomes one script named default, marked as the default. |
file_include_globs | string[], or a string with one pattern per line | Patterns, written like .gitignore lines, for untracked or ignored files to copy into new workspaces. Used when the repository has no .worktreeinclude file. |
environment_variables.<name> | string | A variable for the scripts, terminals and agents of every workspace of the repository. Variables merge by name across the files, and never replace the workspace’s own MICROMANAGER_* and CONDUCTOR_* variables. |
environment_variables.local.<name> | string | Wins over the same file’s environment_variables for local workspaces, which every microManager workspace is. The .cloud table is left out. |
prompts.general | string | Instructions added to every chat in the repository’s workspaces, after your own general prompt, once you trust the repository. |
prompts.create_pr | string | Replaces the prompt the Create PR button sends to the agent in this repository, once you trust it. The same goes for each prompt below. |
prompts.code_review | string | Replaces the prompt Ask for a review sends to a new Review chat. |
prompts.fix_errors | string | Replaces the prompt that asks the agent to fix the checks failing on the pull request. |
prompts.resolve_merge_conflicts | string | Replaces the prompt that asks the agent to merge the target branch and resolve conflicts. |
prompts.rename_branch | string | Replaces the prompt that asks the agent to give the branch a descriptive name. |
run_from_root | boolean | Run from repository root, for a project that only runs from the repository’s own folder: a workspace’s Run from root button then shows its changes there, kept in sync, so a dev server running there picks them up, and turning it off puts the folder back as it was. Off by default. Conductor’s key for the same setting, spotlight_testing, is read too. |
What does a complete settings file look like?
# .micromanager/settings.toml (or .conductor/settings.toml)
file_include_globs = [".env", ".env.local", "config/secrets.json"]
[scripts]
setup = "pnpm install --frozen-lockfile"
archive = "docker compose -p \"$MICROMANAGER_WORKSPACE_NAME\" down -v"
run_mode = "concurrent"
[scripts.run.dev]
command = "pnpm dev --port $MICROMANAGER_PORT"
default = true
[scripts.run.tests]
command = "pnpm test --watch"
The same file works as .conductor/settings.toml, so a repository that already has one needs no
changes.
How do I keep personal settings out of git?
Put them in settings.local.toml next to the shared file and add it to .gitignore. It
takes precedence over the shared file, so you can change one run script without touching what your team uses:
# .micromanager/settings.local.toml (personal, keep it out of git)
[scripts.run.dev]
command = "pnpm dev --port $MICROMANAGER_PORT --inspect"
default = true Is the older conductor.json still read?
Yes, at the lowest precedence of the files, unless the repository has .conductor/settings.toml, as in
Conductor. It understands scripts.setup, a single scripts.run string,
scripts.archive and runScriptMode:
{
"scripts": {
"setup": "npm install",
"run": "npm run dev",
"archive": "npm run clean"
},
"runScriptMode": "nonconcurrent"
} Where do I see which file a setting came from?
Open the repository in Settings → Repositories. Under Scripts, Where these come from lists the files in effect, highest precedence first. The setup, run and archive scripts, the run mode, the files to copy and Run from repository root can each be overridden there for this computer only, and the repository can have its own prompts.