Skip to main content
Orchestra reads settings the way Claude Code does: a file for you, a file checked into the repository, and a file in the repository that is yours alone. Like Codex, any setting can also be set for one run on the command line. The repository files are found at the root of the git repository you run orchestra in, from any folder inside it. Outside a repository, they are read from the current folder.

Which one wins

When the same key is set in more than one place, the first of these wins:
  1. A flag: orchestra -c diffs.maxLines=80
  2. The environment: ORCHESTRA_DIFFS_MAX_LINES=80
  3. .orchestra/settings.local.json
  4. .orchestra/settings.json
  5. ~/.orchestra/settings.json
  6. The default
Each key is decided on its own, so a project file can set one key and your own file another. Flags. -c key=value (or --config key=value) goes anywhere on the command line before a --, and can be given more than once. The value is read as JSON when it is valid JSON, and as plain text when it is not, so -c diffs.show=false is the boolean and -c marks=plain is the text. The environment. Every key has a variable: ORCHESTRA_, then the key in capitals with each dot and each new word marked by an underscore. diffs.maxLines is ORCHESTRA_DIFFS_MAX_LINES, and marks is ORCHESTRA_MARKS. Values are read as flags’ are. An empty variable counts as unset.

The keys

Why 40 rows: in a sample of 1,116 real Claude Code edits, 40 rows shows 88% of them whole (the median edit is 11 rows), and 40 rows still fits on one screen of a 50-row terminal with the input below it. A new file written whole is usually longer than that, and is cut; ctrl+o shows the rest. Once you press ctrl+o, an edit shows up to 400 rows, and the web app’s Changes view has the whole diff.

Mistakes in a settings file

Settings files are edited by hand, so a mistake never stops Orchestra:
  • An unknown key is ignored, with a warning that names the key and the file, and the closest key when there is one: unknown setting diffs.maxLine in ~/.orchestra/settings.json, ignored (did you mean diffs.maxLines?).
  • A value a key does not take ("maxLines": "lots") is ignored with a warning, and the key’s next place in the list above decides it.
  • A file that is not valid JSON is ignored whole, with a warning naming the file and the parse error. The other files and the defaults still apply.
The terminal client shows the warning when it opens, and orchestra doctor lists every one.

Which files were read

orchestra doctor ends with the files it read, highest first, and where each key’s value came from:

Nothing secret

A settings file is the thing you paste into an issue, so nothing secret goes in one. orchestra login keeps credentials in ~/.orchestra/credentials.json, and settings have no key for one. A key that looks like a credential is ignored like any unknown key, and its warning says where credentials go, without repeating the value.