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.jsonin 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.jsonon Windows. Owned by whoever administers the machine, and it beats a flag. - macOS managed preferences. An MDM payload for the
com.openrouter.oripreference domain. Beats everything, including the machine file.
Which source wins
Every setting resolves through the same list, and the first source that carries a valid value for it wins:- macOS managed preferences (
com.openrouter.ori) - The machine policy file,
/etc/ori/config.json - A command-line flag
- The process environment, meaning whatever your shell exports
.ori/config.jsonin the working directory~/.ori/config.jsonin your home directory- Ori’s own default
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 anenv 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 domaincom.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:
/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:
--auto-update against
ORI_NO_UPDATE_CHECK can argue with it.
Two recipes
Ship Ori through your own tooling. SetORI_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 anenv 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.