Skip to main content
Ori has one set of settings and several ways to supply them. A setting is named the same everywhere, so the same name works in your shell, in a config file, and in an MDM profile. Pick the mechanism that matches who owns the decision, then use the reference at the bottom of this page for the settings themselves.

Ways to configure Ori

  • Your shell. Export a variable for the current session, or put it in your shell profile or process manager. Good for one person on one machine.
  • ~/.ori/config.json. Your own defaults, applied to every project you work on.
  • .ori/config.json in a project. Settings that belong to a repository and should apply to everyone working in it.
  • Command-line flags. Six update settings also have flags, listed below.
  • A machine policy file. /etc/ori/config.json, or %ProgramData%\ori\config.json on Windows. Owned by whoever administers the machine, and it beats a flag.
  • macOS managed preferences. An MDM payload for the com.openrouter.ori preference domain. Beats everything, including the machine file.
If you administer a fleet, read Configuring managed machines.

Which source wins

Every setting resolves through the same list, and the first source that carries a valid value for it wins:
  1. macOS managed preferences (com.openrouter.ori)
  2. The machine policy file, /etc/ori/config.json
  3. A command-line flag
  4. The process environment, meaning whatever your shell exports
  5. .ori/config.json in the working directory
  6. ~/.ori/config.json in your home directory
  7. Ori’s own default
A project file beats your home file, matching how most tools treat local configuration. The two administrator sources sit above flags, so a policy set on the machine cannot be turned off from a shell, a project, or a flag. The one exception is ORI_NO_UPDATE_CHECK, which only suppresses the update check when no --auto-update flag is passed; ORI_DISABLE_AUTOUPDATER and ORI_DISABLE_UPDATES are the settings to use when a policy has to hold. A missing file is fine, and a malformed one contributes nothing. A value Ori cannot make sense of is skipped per setting, so one bad entry does not discard the rest of a file, and the next source down answers instead. Where a setting below is described as a switch, Ori reads an empty value, 0, and false as off, and any other value as on. 1 is the conventional way to turn one on.

Config file shape

A config file can carry an env object of plain strings, named fields, or both. The two spellings feed the same setting:

Command-line flags

Only --auto-update, --auto-update-restart, --update-interval, --drain-timeout, --alpha, and --stable name a setting that also has a variable, so those are the only flags that take part in the list above. Every other flag is an argument to its command.

Configuring managed machines

Two mechanisms are meant for administrators, and both outrank anything a user can set. Every setting in the reference works in either one.

macOS: managed preferences

Deliver a custom-settings payload for the preference domain com.openrouter.ori from Jamf, Kandji, Intune, or any MDM that writes managed preferences. Use the setting name as the key. Booleans, numbers, and strings all work; Ori converts them:
Ori reads the per-user profile at /Library/Managed Preferences/<username>/com.openrouter.ori.plist and the device-wide one at /Library/Managed Preferences/com.openrouter.ori.plist. Nothing else on the machine can override what lands there.

Any platform: the machine policy file

Write JSON to /etc/ori/config.json (or %ProgramData%\ori\config.json on Windows) with your settings in the env object:
Ship the file with the rest of your machine configuration, the same way you ship any other policy file. A user cannot remove it without administrator rights, and no flag other than --auto-update against ORI_NO_UPDATE_CHECK can argue with it.

Two recipes

Ship Ori through your own tooling. Set ORI_DISABLE_UPDATES to 1. Ori stops checking for releases, never prints an update notice, and answers ori update with a message saying the installation is managed by your organization. Use ORI_DISABLE_AUTOUPDATER instead to keep the background updater quiet while users can still update by hand, and add "channel": "stable" to hold the fleet on one channel even against an --alpha flag. Force browser sign-in. Set ORI_DISABLE_API_KEY_LOGIN and ORI_DISABLE_ENV_KEY_LOGIN to 1 so the only way in is browser sign-in, and ORI_REQUIRE_LOGIN to 1 so an OPENROUTER_API_KEY a developer happens to have exported is refused rather than spent. These settings decide how a credential may be obtained, not which OpenRouter account or organization it belongs to, so pair them with your own account provisioning if membership matters.

Settings reference

Every name below works as an environment variable, as an env entry in any config file, as a managed-preferences key, and in the machine policy file.
Ori 0.14 and earlier read less than that. Config files and the machine policy file carry the update and installation settings plus the sign-in method Ori remembers, every other name comes from the environment only, and macOS managed preferences are not read at all, so a profile you deploy to those versions has no effect. Export the setting in the environment until the fleet is on a newer build.

Updates and installation

Sign-in

Models and output

Terminal appearance

Files