Settings
Settings is the dialog where you turn providers on, set the limits a relay works under, pair relays and choose how a device notifies you. This page is the lookup table: one row per control. How a feature works is explained on the page each row links to.
Opening it #
Open the ⋯ menu in the chat header and choose ⚙️ Settings. You do not
need an open conversation. On a fresh install the empty screen has an Open
Settings button, and New Chat shows Open Settings → Providers while no
provider is ready, so you can turn a provider on before the first chat.
The dialog has seven tabs, in this order: General, Providers, Relays, Previews, Sharing Added in 0.9.11, Notifications and Features. It reopens on the tab you used last, and Providers on the sub-tab you used last. Both are remembered by the browser. The read-only view of a shared conversation has no Settings.
Where a setting is kept #
| Stored | Meaning |
|---|---|
| Relay | Saved in the relay's database. It applies to every browser that connects to this relay. |
| This browser | Saved in the browser you are using. Another browser or device keeps its own value. |
| Relay, per device | Saved on the relay, but separately for each device that subscribed to notifications. |
Only five controls are kept in the browser: Theme, Text scaling, Show Suspend host action, Jump to the end when I send a message and Messages kept per conversation for switching back. Everything else is a relay setting.
How a change is saved #
- Switches, sliders, selects and options on General, Relays, Sharing, Notifications and Features save the moment you change them. A short notice or a line under the control confirms it.
- Text fields on General (Relay name, Default CWD for new sessions) and Public address on Relays save when you leave the field.
- On the Providers sub-tabs, text fields and selects need the sub-tab's own Save … button. The enable switches there save at once.
General #
| Control | Kind, stored | Default | Range or options | What it does |
|---|---|---|---|---|
| Theme | Select, this browser | Dark | Dark, Light | Colors of the web UI (Appearance). Also sets the installed app's icon and toolbar color. |
| Text scaling | Select, this browser | 100% | 50% to 150% in 10% steps | Scales all text. Ctrl (or Cmd) with the mouse wheel, or a two-finger pinch, change it too, in the same 50% to 150% range; then the select shows the in-between value. |
| Show Suspend host action | Switch, this browser | On | Shows or hides 💤 Suspend host (Suspending the host) in the ⋯ menu. The entry is shown by default whatever the relay runs on, and nothing hides it for you: the action works only when the relay runs on Windows, and on another system its window says "Host suspend is only available when the relay runs on Windows." with only a Close button. Switch this off on such a relay. |
|
| Jump to the end when I send a message | Switch, this browser | On | Added in 0.9.11 Sending a message takes you to the end of the conversation. Off, you stay where you are reading. The transcript never moves by itself while you read further up; see Scrolling. | |
| Messages kept per conversation for switching back | Slider, this browser | 200 messages | 100 to 1,000 in steps of 100, then No limit | Added in 0.9.12 How many loaded messages each of the last eight conversations keeps around the place you were reading, so that switching back returns there with the older messages you had loaded. No limit keeps them all, at the cost of the page's memory. |
| Max turn duration | Slider, relay | 60 min | 0 to 600 min, steps of 5; 0 shows No limit | The longest one turn may run before the relay puts it back in the queue. See Turns and the queue. |
| Background task timeout | Slider, relay | 4 h | 0 to 600 min, steps of 5; 0 shows No limit | How long background work alone may keep a session alive after its reply. Then the tasks are stopped. See Turns and the queue. |
| Mark a background task as quiet after | Slider, relay | 10 min | 1 to 120 min, steps of 1 | Added in 0.9.12 A running shell command or monitor that has written nothing for this long gets an amber no output for N min on its row and in its console. See Quiet tasks. |
| After a relay restart, tell interrupted sessions to carry on | Switch, relay | Off | Added in 0.9.13 A session whose turn a relay restart cut off for good gets one note from the relay once it is back, asking the agent to check what it was doing and carry on. Your message is never sent again; idle, archived and paused sessions get nothing. See Telling an interrupted session to carry on. | |
| Ask after a queued relay restart has waited | Select, relay | 30 min | 5 min, 10 min, 15 min, 30 min, 1 h, 2 h, 4 h, No limit | Added in 0.9.13 A queued relay restart waits for the running turns and holds new messages meanwhile. After this long the banner asks whether to restart now, keep waiting or cancel; it never restarts while turns run, and still restarts as soon as they end. No limit waits until the turns end. See When the wait is long. |
| Keep sub-agent tool output | Select, relay | 90 days | 7 days, 14 days, 30 days, 90 days, Always | After this many days the relay removes the tool inputs and results from finished sub-agents' records, once a day. Thoughts, replies, notes and the one-line summary of each call stay. |
| Autostart (Windows) | Three options, relay | Off | Off; At sign-in — visible terminal after you log on; At system startup — headless, no logon needed | Starts the relay by itself. Shown only when the relay runs on Windows (a radio group; it is hidden on other systems). Switching to or from At system startup asks for one admin confirmation on the PC itself; a declined one changes nothing. Added in 0.9.15 The same rules as oar autostart: an entry OAR did not make (a boot task or launcher edited by hand, a task someone else made, a hand-made Startup entry) is never deleted or replaced, and a switch it stands in is refused with the reason; oar autostart <mode> --replace replaces it, keeping a copy. See Autostart. |
| Relay name | Text, relay | empty (shown as OAR) |
up to 60 characters | The installed app's name on every device, and the name paired relays know this relay by; while it is empty they see the machine's host name. Reset by emptying it. |
| Check for updates automatically | Switch, relay | Off | When on, the relay asks oar.sh for the latest version about twice a day. With it off, OAR sends nothing. Locked when OAR_ is set in the relay's environment. |
|
| Check for updates | Button | Checks now, whatever the switch says. The line next to it shows when the last check ran. Disabled when OAR_ is set. |
||
| Update | Button | Appears when a newer version is found, with a release notes link. Installs it with npm and restarts the relay once no turn is running (Updating OAR). Shown only for a global npm install; a git checkout shows a hint to pull and restart instead. | ||
| Dismiss | Button | Hides the found version until a newer one appears. Not offered for a critical update. | ||
| Cancel update | Button | Appears while an update installs. Stops it. An Update log folds out below. | ||
| Default CWD for new sessions | Text, relay | empty (the relay's workspace root) | a folder path on the relay's machine | The working directory new sessions start in when you pick none. See Starting a conversation. |
After an update, a line says Updated to <version>. or that the update did not
apply; Dismiss clears it. The terminal twin of the update buttons is
oar update.
The auto-compact window is not here. It belongs to each conversation; see Compacting.
Providers #
One sub-tab per provider, in this order: Copilot, OpenAI, Claude, Claude API Added in 0.9.18, Claude Cloud, Grok, Cursor, DeepSeek Added in 0.9.17. Each provider's page explains its controls in depth. Providers shows how to switch them on.
All controls on these sub-tabs are stored on the relay.
Copilot #
| Control | Kind | Default | Range or options | What it does |
|---|---|---|---|---|
| GitHub Copilot CLI | Status row | Shows whether the CLI is found, its version and where it is. It has no buttons: you install and update it with npm on the relay's machine. | ||
| Copilot engine | Select | SDK — default | Extension; SDK — default | Which engine runs new Copilot conversations. A relay that cannot run the SDK engine uses Extension. |
| Save Copilot settings | Button | Saves the engine. |
See GitHub Copilot.
OpenAI #
| Control | Kind | Default | Range or options | What it does |
|---|---|---|---|---|
| OpenAI API key | Password field | empty | Your key. Leave it empty to keep the saved key. | |
| Enable OpenAI API key for New Chat model selection | Switch | on after the first save | unavailable until a key is saved | Offers OpenAI and OpenAI Image in New Chat. |
| OpenAI model ID | Text | gpt- |
The default model. | |
| Base URL | Text | https:// |
optional | Another OpenAI-compatible endpoint. |
| Save OpenAI settings | Button | Saves the fields and reads the endpoint's model list. | ||
| Remove saved key | Button | After a confirmation, deletes the key and switches OpenAI off. Refused while an OpenAI conversation has a message. |
See OpenAI.
Claude #
| Control | Kind | Default | Range or options | What it does |
|---|---|---|---|---|
| Claude Code CLI | Status row | Shows the CLI's state. Buttons Install, Update, Switch to native installer, Cancel and Dismiss appear as the state needs; an Install log folds out. | ||
| Relogin | Button | Starts a login to a Claude account from the browser: open the login page, paste the code into the field Paste the code from claude.ai, Submit code. Copy link and Cancel are in the same area. | ||
| Logout | Button | After a confirmation, logs the relay host out of Claude. | ||
| Enable Claude for New Chat model selection | Switch | Off | Offers Claude in New Chat. Applies at once. | |
| Claude model ID | Text | claude- |
The model a Claude conversation starts with. | |
| Commit attribution | Select | OAR | OAR — Co-authored-by: Open Agent Relay (model); Vanilla — Claude Code's own attribution; Off — no attribution | What commits and pull requests made by Claude say about their author. |
| Claude background command limit Added in 0.9.12 | Slider | 2 h | 30 min to 8 h, in 30-minute steps | How long a command Claude runs in the background may take before Claude Code stops it, when Claude gives it no timeout of its own. Added in 0.9.17 It applies to DeepSeek chats too, which run Claude Code as well, and Added in 0.9.18 to Claude API chats. See Background command limit. |
| Save Claude settings | Button | Saves the model ID, the attribution and the background command limit. |
Claude API Added in 0.9.18 #
| Control | Kind | Default | Range or options | What it does |
|---|---|---|---|---|
| Enable Claude API for New Chat and the billing switch | Switch | on after the first save | unavailable until a key is saved | Offers Claude API in New Chat and the billing toggle in Claude chats. Applies at once. |
| The key field under Claude API (Claude Console API key…) | Password field | empty | Your key. Stored on the relay and never sent to browsers. Once a key is saved the field reads Saved API key (enter to replace); leave it empty to keep the saved key. | |
| Default model | Select | the Claude tab's model if the key offers it, else the first Sonnet | the models the key may use | The model a Claude API conversation starts with. See Models. |
| Monthly cap in US dollars (optional) | Number | empty (No cap) | 0.01 to 1,000,000 | Refuses new turns on the key once this month's estimated spend reaches it. See Monthly cap. |
| Save Claude API settings | Button | Saves the fields. A new key reads the models the key may use. | ||
| Refresh models | Button | Asks Anthropic again which models the key may use. | ||
| Remove saved key | Button | After a confirmation, deletes the key and switches Claude API off. Refused while a Claude API conversation has a message or a queued one. | ||
| Claude tab | Button | Opens the Claude sub-tab. Commit attribution, the background command limit, the effort levels and the compaction window are shared with Claude and set there. |
See Claude API.
Claude Cloud #
| Control | Kind | Default | Range or options | What it does |
|---|---|---|---|---|
| Enable Claude Cloud for New Chat | Switch | Off | refused while the host has no Claude login | Offers Claude Cloud in New Chat and turns on the live account figures in Check Usage. |
| Claude login | Button | Jumps to the Claude sub-tab, where the login is changed. Shown, with the account line, once the settings loaded. | ||
| Cloud environment | Select | the account's first active environment, stored when you switch Claude Cloud on | the account's environments, shown as name and id | The environment new cloud sessions run in. |
| Default model | Select | claude- |
the Claude provider's models without their [1m] variants, plus the default |
The model a new cloud chat starts with. |
| Save Claude Cloud settings | Button | Saves the environment and the model. | ||
| Open claude.ai/code | Link | Opens claude.ai/code in a new tab. |
See Claude Cloud.
Grok #
| Control | Kind | Default | Range or options | What it does |
|---|---|---|---|---|
| Grok CLI | Status row | Shows the CLI's state, with Install, Update, Switch to native installer, Cancel and Dismiss as the state needs. | ||
| Sign in | Button | Starts a device-code sign-in on the relay host. The area shows a link, Copy link, the code to confirm and Cancel. | ||
| Sign out | Button | After a confirmation, signs the relay host out of Grok. | ||
| Enable Grok for New Chat model selection | Switch | Off | Offers Grok in New Chat. Applies at once. | |
| Grok model ID | Text | grok- |
The model a Grok conversation starts with. | |
| Save Grok settings | Button | Saves the model ID. | ||
| Monthly allowance (USD) | Number | empty | 0 or more, cents | Your monthly budget, for the estimated remaining meter in Check Usage. |
| Billing resets on day of month | Number | 1 | 1 to 31 | The day the billing cycle starts. |
| Save allowances | Button | Saves both fields. | ||
| Reset tracked spend | Button | After a confirmation, clears the spend counted for the cycle. Use it after a change of plan or account. |
Cursor #
| Control | Kind | Default | Range or options | What it does |
|---|---|---|---|---|
| Cursor API key | Password field | empty | Your key. Stored on the relay and never sent to browsers. Leave it empty to keep the saved key. | |
| Enable Cursor for New Chat model selection | Switch | on after the first save | unavailable until a key is saved | Offers Cursor in New Chat. |
| Cursor model ID | Text | composer- |
The model a Cursor conversation starts with. | |
| Save Cursor settings | Button | Saves the key and the model, and reads the models the key can use. | ||
| Remove saved key | Button | After a confirmation, deletes the key and switches Cursor off. Refused while a Cursor conversation has a message. | ||
| Cursor Models pool (USD) | Number | empty | 0 or more, cents | Monthly allowance of the Cursor Models pool. |
| Other Models pool (USD) | Number | empty | 0 or more, cents | Monthly allowance of the Other Models pool. |
| Billing resets on day of month | Number | 1 | 1 to 31 | The day the billing cycle starts. |
| Save allowances | Button | Saves the three fields. | ||
| Reset tracked spend | Button | After a confirmation, re-baselines the tracking. Use it after a change of plan or account. | ||
| Dashboard session token (live plan bars) | Password field | empty, or found on the host | The Workos cookie value. Unlocks the live Included in plan bars in Check Usage. |
|
| Save token / Remove | Buttons | Save the token, or delete it after a confirmation. |
DeepSeek Added in 0.9.17 #
| Control | Kind | Default | Range or options | What it does |
|---|---|---|---|---|
| Enable DeepSeek for New Chat model selection | Switch | on after the first save | unavailable until a key is saved | Offers DeepSeek in New Chat. Applies at once. |
| The key field under DeepSeek (DeepSeek API key…) | Password field | empty | Your key. Stored on the relay and never sent to browsers. Once a key is saved the field reads Saved API key (enter to replace); leave it empty to keep that key. See API key. | |
| Default model | Select | deepseek- |
the models DeepSeek lists; deepseek- and deepseek- before the first list |
The model a DeepSeek conversation starts with. See Models. |
| Commit attribution | Select | OAR | OAR: Co-authored-by: Open Agent Relay (DeepSeek …); Off: no attribution | What commits made in DeepSeek chats say about their author. |
| Monthly budget (optional) | Number | empty | 0 or more, cents; empty or 0 for no budget | The budget the Check Usage card measures this calendar month's estimated spend (UTC) against. See Monthly budget. |
| Budget currency | Select | USD ($) for a new budget | USD ($); CNY (¥); The balance's currency (may change) | The currency of the monthly budget. |
| Starting balance (optional) | Number | empty | 0 or more, cents; empty or 0 to measure from the balance after the last top-up the relay has seen | The amount, in the balance's currency, the card's balance bar measures from, for example your first top-up. Saving it reads the balance. A later top-up replaces it; the tab then says it is no longer used until you type an amount in again. See Starting balance. |
| Advanced → Base URL | URL | empty: https:// |
https://, or http:// on this machine only; no user name, password, query or fragment |
Another address for DeepSeek's API, for example a proxy. The key is sent there and nowhere else. |
| Save DeepSeek settings | Button | Saves the fields. A new key or base URL reads the models DeepSeek lists. | ||
| Remove saved key | Button | After a confirmation, deletes the key and switches DeepSeek off. Refused while a DeepSeek conversation has a message or a queued one. | ||
| Import usage export | Two file fields (Amount file, Cost file) and a button | the two CSV files of DeepSeek's usage export | Imports DeepSeek's own figures for the usage card's days they cover. The line under it says what was imported. See Import usage export. |
See DeepSeek.
Relays #
Pairing with other OAR relays, and what agents may do across relays. All controls are stored on the relay.
| Control | Kind | Default | Range or options | What it does |
|---|---|---|---|---|
| This relay | Display | Shows the relay name. Change it under General → Relay name. | ||
| Public address | Text | empty; the field's placeholder shows the address of the page you have open, unless it is localhost |
an https:// address (plain http:// only on loopback and private networks) |
How other relays reach this one. Saved when you leave the field. Needed for Also add this relay there; if it is still empty when you add a relay, the address of the page you pair from is stored. See Remote relays. |
| Accept prompts from other relays' agents | Switch | On | When off, agents on paired relays can still read sessions here but cannot send prompts, start sessions, answer questions or stop turns. See Remote relays. | |
| Agents may start and use sessions on this relay | Switch | Off | Lets agents start and use other sessions on this relay with the relay_ tool. The first one in a conversation asks for your approval. Shown once the relay answers with its settings. See Agent sessions. |
|
| Longest wait per tool call | Slider | 10 min | 2 to 60 min, steps of 1 min | How long an agent may wait for a session in one call, on this relay or a paired one. Works whether or not the switch above is on. A note beside the switch states how many sessions may work at once per conversation. |
| Remote relays | List | empty | The paired relays. Each row has an Agents may menu (Read only, Read and prompt, Full) and the buttons Check and Remove, plus an Open link when the relay has a usable address. See Remote relays. | |
| Add a relay | Text | empty | The other relay's web address. Press Enter or Add. | |
| Token of the other relay | Password field | hidden | Shown after Use a different token. Only needed when the other relay's token differs from this relay's. | |
| Use a different token | Button | Shows the token field. | ||
| Also add this relay there | Checkbox | Checked | Pairs both ways: the other relay gets this relay's public address and, if it differs, its token. | |
| Add | Button | Pairs the relay. |
Previews #
| Control | Kind | Default | Range or options | What it does |
|---|---|---|---|---|
| Live previews | List | empty | Every preview published on this relay, across all conversations. Each row has Open, Copy link and Close, and Added in 0.9.11 says when the preview was published and last opened. A preview the relay could not check at its start is listed as not served. Previews do not expire by themselves and survive a relay restart; they live until you close them or delete their conversation. Every link is public. |
Sharing Added in 0.9.11 #
Your shared conversations and what their links show. All controls are stored on the relay and apply to every link.
| Control | Kind | Default | Range or options | What it does |
|---|---|---|---|---|
| Shared conversations | List | empty | Every conversation that has a link, with when it was shared and last opened, how often and by how many viewers. Per row: Copy link, Renew link, Stop sharing and Access log. See Your shared links. | |
| Store viewer IP addresses | Switch | On | Whether new access log entries keep the viewer's IP address. Switching it off offers to remove the addresses already stored. | |
| Paths and file names | Three options | Hide the path, show the file name | Show every path and file name; Hide the path, show the file name; Hide paths and file names | What shared links show of the relay host's paths. See Paths and file names. |
Previews need setup on the relay first; see preview.
Notifications #
Push notifications are set per device. The page must be opened over HTTPS (or
localhost) and the browser must support Web Push, or the section says why it
cannot be used. Notifications are sent only while no device has the app in the
foreground. All controls are stored on the relay, separately for each device.
| Control | Kind | Default | Range or options | What it does |
|---|---|---|---|---|
| Enable push notifications on this device | Switch | Off | Asks the browser for permission and subscribes this device. Switching it off keeps the subscription and stops sending. | |
| Include conversation title | Switch | Off | Adds the conversation's title to the notification. | |
| Message preview | Select | None (generic text) | None (generic text); Truncated; Full text | How much of the message the notification shows. |
| Preview length (characters) | Number | 80 | 20 to 500 | Length of a truncated preview. Active only with Truncated. |
| Questions from the agent | Switch | On | Notify when an agent asks you a question. Short choices (up to three) become buttons on the notification. | |
| Turn completed | Switch | On | Notify when a turn finishes. Not sent for a turn that another relay's agent started, or for a turn that answers a relay event. | |
| Turn failed | Switch | On | Notify when a turn fails. Same exceptions as Turn completed. | |
| Boards (plan reviews) | Switch | On | Notify when a plan board waits for review. | |
| CLI went offline | Switch | Off | Notify when the relay loses its connection to the CLI host. Always generic text. | |
| Host suspend fired or was dropped | Switch | On | Notify when a queued host suspend fires or is dropped. Its text is shown whatever Message preview says. | |
| Queued relay restart waited its maximum time | Switch | On | Added in 0.9.13 Notify when a queued relay restart has waited Ask after a queued relay restart has waited and asks what to do. Its text is shown whatever Message preview says. | |
| Devices | List | empty | Every subscribed device with its last delivery. Per row: Rename and Revoke. |
The event switches and the content controls are disabled until this device is enabled.
Features #
Feature flags are read once, when the relay starts. A change is saved at once but takes effect only after a relay restart. When a saved value differs from the running relay, a notice appears with a Restart relay button; the restart waits until the running turns finish. Added in 0.9.11 It works from any signed-in browser, and shows the relay's reason when the restart is refused.
A flag can also be pinned by an environment variable of the relay,
COPILOT_, for example COPILOT_.
The row then says so and its switch is locked while the variable is set. All
flags are stored on the relay.
| Label | Kind | Default | Name | With it off |
|---|---|---|---|---|
| Session worker routing | Switch | On | SESSION_ |
Conversations no longer get a worker process each; all share the older polling pipeline. A stuck conversation can then stall the others. The Copilot SDK engine cannot be used. |
| Continuation answer routing | Switch | On | SESSION_ |
Answers to a question are no longer checked strictly against the question's conversation, continuation and owning worker, so a stale or cross-wired answer is not rejected. |
| Worker fallback restart (reserved) | Switch | Off | SESSION_ |
Reserved. It changes nothing either way. |
| Generated-image continuity | Switch | On | IMAGE_ |
Follow-ups on generated images lose the link to the image you mean, and Edit this image disappears. See OpenAI. |
What needs a restart #
| Change | Takes effect |
|---|---|
| Any flag on Features | After a relay restart. |
| Copilot engine | For conversations started afterwards. A running session keeps its engine until its worker restarts. |
| Relogin, Logout, Sign in, Sign out | For new sessions. Running Claude or Grok sessions keep the previous account until their workers restart. |
| Max turn duration, Background task timeout | At once, without a restart. A running worker picks the new timeout up with its next message. |
| Commit attribution | With the next message of a running Claude, Claude API or DeepSeek session. |
| A new DeepSeek API key Added in 0.9.17 | Running DeepSeek workers are stopped, also in the middle of a turn, and their next message starts them with the new key. |
| A new Claude API key Added in 0.9.18 | Running Claude API workers are stopped, also in the middle of a turn, and their next message starts them with the new key. |
| Enable … for New Chat, model IDs, keys | For new conversations. What happens to conversations that have not sent a message yet is on each provider's page. |
| Update | The relay restarts itself once no turn is running. |
| Everything else | At once. |