config.json
config. はリレー自身の設定ファイルです。ポート、リレーに接続できる範囲、アクセストークン、ターンが停滞したとみなされるタイミングを決めるタイマー、任意のトンネルとプレビューレーンを保持します。作成するのは oar setup です。セットアップが尋ねない項目は、すべて手で編集します。
Web UI で設定するもののほとんどは、このファイルにはありません。Web UI と環境での設定を参照してください。
ファイルの場所 #
| インストール | パス |
|---|---|
| macOS、Linux、WSL でのグローバルインストール | ~/. |
| Windows でのグローバルインストール | %APPDATA%\ |
OAR_ を設定したグローバルインストール |
そのフォルダーの config. |
| git チェックアウト | チェックアウト内の server/ |
OAR_ は、グローバルインストールの状態フォルダー全体(設定ファイル、データ、ログ)を移動します。OAR がファイルを置く場所を参照してください。
COPILOT_ は、場所に関係なくリレーを 1 つのファイルに向けます。ただし、oar 自身のランチャーを使わずにリレーを起動した場合に限ります。つまり node server/、または(ファイルが存在する場合の)oar copilot です。oar setup、oar start、oar restart とサービスは、この変数の値にかかわらず、常にインストール自身の config. を使います。server/ がないチェックアウトでは、oar copilot は代わりに ~/.(Windows では %LOCALAPPDATA%\)にファイルを作ります。環境変数を参照してください。
ファイルにはアクセストークンが平文で入っているため、リレーはファイルをオーナーだけが読める状態に保ちます(macOS と Linux ではモード 0600)。ファイルのコピーはパスワードと同じように扱ってください。
書き込むもの #
oar setupはトークン、localhost、Only portを書き込み、ほかのキーはすべて見つけたとおりに残します。作成したファイルや、これらのキーがないファイルには、poll、Interval Ms processing(Timeout Ms 600000)、conversationも書き込みます。Session Mode oar setupと初回起動を参照してください。- リレーは、Settings(設定)からプロバイダーの CLI をインストールまたは更新したときに
cliを書き込みます。変更するのはこのキーだけです。ファイルを JSON として読めない場合は書き込みを拒否し、その結び付けは実行中のプロセスの中だけで保持します。Binaries - リレーは、起動時にファイルがなければ作成します。内容は空の
auth、ポートToken 3333、localhost、Only: true poll、Interval Ms conversationです。古いリリースから残ったSession Mode featuresキーも削除します(非推奨、無視されるキー、内部用のキーを参照)。 - あなたが、任意のテキストエディターで書き込みます。
手で編集する #
ファイルは 1 つの JSON オブジェクトです。省いたキーは既定値になり、previews のような入れ子のブロックはまとめて 1 つとして読み込まれます。編集したら、リレーを再起動します。リレーがファイルを読み込むのは起動時の 1 回だけです。 ファイルを保存しても、実行中のリレーが保持している内容は何も変わりません。再起動は oar restart(グローバルインストール)か、会話の ⋯ メニューの 🌄 Restart web relay(Web リレーを再起動)で行います。
- 不明なキーは無視され、そのまま残ります。セットアップやリレー自身の書き込みでも残ります。
- 不正な JSON でもリレーは止まりません。
Failed to read config.とログに出し、既定値で動作します。つまりポート 3333、このマシンのみ、起動のたびに新しくなるランダムなトークン(ログに出力)です。ファイルを直すまで、保存したトークンは使えなくなります。もう 1 つの読み取り処理、つまりデータフォルダーを選ぶ処理は、既定のフォルダーに戻ります。リレーは壊れたファイルには触れません。json, using defaults. - 誤った値はキーごとに扱われます。下の既定値は、タイマーや上限の値がないか使えないときにリレーが使う値です。トンネルとプレビューレーンはオフのままになり、理由をログに出します。リレー自体は動作し続けます。
- 1 回の実行に限り、コマンドラインがファイルより優先されます。
node server/のserver. js --token <value>と--port <number>(oar copilotも渡しますが、oar startは渡しません)はauthとToken portを上書きし、ファイルには保存されません。1 ~ 65535 の数値でない--portは、警告を出して無視されます。
JSON として正しくないファイルに対して oar setup を実行しないでください
oar setup は、解析できないファイルをないものとして読みます。その上で新しいトークンを入れた新しい config. で上書きするので、古いファイルのほかのキーはすべて失われます。先に JSON を直してください。手で編集するファイルは、コピーを取っておいてください。
ネットワークとアクセス #
| キー | 型 | 既定値 | 動作 |
|---|---|---|---|
auth |
文字列 | なし:起動ごとにランダムなトークン | すべてのブラウザー、ワーカー、API クライアントがサインインに使うトークンです。空の場合、リレーは起動のたびにランダムなトークンを作り、ログに出力しますが、保存はしません。oar setup は固定のトークンを書き込みます。 |
port |
数値 | 3333 |
HTTP と WebSocket のポートです。1 ~ 65535 の整数です。 |
localhost |
真偽値 | true |
true にするとリレーを 127. にバインドし、このマシンからだけ接続できるようにします。それ以外の値(false、null、1、"yes" を含む)では、すべてのインターフェース(0.)にバインドし、LAN から接続できるようにします。オンとみなされるのは true とテキストの "true"(大文字小文字は問わない)だけです。既定値が使われるのは、キーがない場合だけです。下のトンネルには影響しません。 |
remote |
文字列 | "" |
リバースプロキシがリレーをサブパスで提供するときのパスのプレフィックスです(例:/)。先頭のスラッシュは補われ、末尾のスラッシュは取り除かれます。リレーは受け取ったリクエストからプレフィックスを外し、サインインの Cookie のパス、ソケットのパス、ファイルと共有リンクのアドレスにプレフィックスを付けます。 |
trust |
Express の trust proxy の値 |
"loopback" |
リレーが信頼する X- ヘッダーを設定できるプロキシです。クライアントのアドレス(レート制限、サインインのロックアウト、共有のアクセスログ)と、新しい共有リンクのホストとスキームは、この設定を通して読み取られるので、直接接続したクライアントはこれらを偽装できません。既定値は、同じマシン上のプロキシやトンネルに適しています。別のホストのプロキシがリレーに転送する場合は、ホップ数(1)、アドレスやサブネット("10.)、またはそれらのリストを使います(リバースプロキシ)。 |
allowed |
文字列の配列 | [] |
0.9.11 で追加 リレー自身のオリジンに加えて、ライブの Socket.IO 接続が受け付けるブラウザーのオリジン(スキーム、ホスト、既定以外のポート。例:"https://)です。Host ヘッダーを書き換えるプロキシで必要です。リバースプロキシを参照してください。 |
public |
文字列の配列 | [] |
リレー自体に到達するホスト名です。プレビューレーンは、これらのいずれか(および localhost と 127.)を使う previews. を拒否します。これにより、プレビューしたアプリがリレーとサインインの Cookie を共有することはありません。 |
tunnel |
文字列の配列 | [] |
トンネルのエッジがトラフィックに付け加える追加のヘッダー名です。cf- かこれらのヘッダーのいずれかを含むリクエストは、セッションワーカーのパス(自分のエージェントのワーカーが使うソケットで、このマシン上でだけ動作します)に到達できません。cf- は常にリストに入っています。カンマ区切りの文字列も使えます。環境変数 COPILOT_(カンマ区切り)の名前はこれらに追加されます。ここを空のリストにしても、それらは無効になりません。 |
push |
文字列 | mailto: |
リレーが Web Push のリクエストとともにプッシュサービスに送る連絡先アドレスです(通知)。自分の mailto: アドレスに設定してください。 |
shared |
数値 | 200 |
1 つの共有した会話のリンクで数えるライブの閲覧者の最大数です。1 以上です。上限に達すると、最も長くアイドル状態の閲覧者が外され、空きが作られます。 |
shared |
数値 | 5000 |
数えるライブの共有リンク閲覧者の合計の最大数です。ルールは同じです。会話ごとの上限より低くなることはありません。 |
最初の接続、トークン、LAN アクセスについては、初回起動を参照してください。
ターンとタイマー #
| キー | 型 | 既定値 | 動作 |
|---|---|---|---|
processing |
数値(ミリ秒) | 600000 |
ワーカーから動作の兆候がないまま、リレーがターンをキューに戻すまでの時間です。ターンの長さの上限ではありません。0 以下の値では既定値が使われます。ターンが停滞したときを参照してください。 |
max |
数値 | 5 |
1 つのメッセージを試行できる回数です。これを超えると最終的に失敗します。1 以上です。キューへの戻しを参照してください。 |
context |
"default" または "bar" |
"default" |
入力欄がコンテキストの埋まり具合を、上端に沿った線でどう表示するかです。default は全幅の線で、コンテキストが埋まるにつれて色が緑から赤に変わります。bar は同じ線が、使用したコンテキストの割合まで左から伸びます。それ以外の値は、大文字小文字にかかわらず default になります。 |
ターンの最大時間、バックグラウンドタスクのタイムアウト、停滞の監視はここにはありません。ターンが停滞したときを参照してください。
再起動とシャットダウン #
これらのキーは、計画的なリレーの再起動(🌄 Restart web relay)の動作を決めます。再起動と再開を参照してください。各タイマーはミリ秒で指定します。0 以下の値や数値でない値では、既定値が使われます。
| キー | 型 | 既定値 | 動作 |
|---|---|---|---|
restart |
数値(ミリ秒) | 45000 |
再起動が、実行中のターンの終了を待つ時間です。これを過ぎると shutdown- の失敗で中止します。 |
restart |
数値(ミリ秒) | 8000 |
リレーが正常な停止を待つ時間です。これを過ぎると再起動を強制します。 |
restart |
数値(ミリ秒) | 18000 |
1 回の試行が再起動または再開の段階を待つ時間です。これを過ぎると失敗とみなされます(spawn-)。 |
restart |
数値(ミリ秒) | 20000 |
1 回の試行が、再起動後にセッションが再接続するのを待つ時間です(rebind-)。 |
restart |
数値(ミリ秒) | 1000 |
再起動が準備完了を報告した直後に、キューが一時停止したままになる時間です。 |
restart |
数値 | 3 |
再起動が確定するまでに行える試行の回数です。1 以上です。 |
restart |
数値の配列(ミリ秒) | [1000, 3000, 7000] |
2 回目、3 回目以降の試行の前の待ち時間です。試行の回数が要素の数より多い場合は、最後の要素が繰り返されます。正の数でない要素は除かれ、結果が空なら既定値が使われます。 |
メモリ 0.9.19 で追加 #
| キー | 型 | 既定値 | 動作 |
|---|---|---|---|
heap |
数値(MB) | RAM の 60%、2,048〜8,192 | リレーのヒープ上限です。512 以上の整数で指定します。リレーのどの起動方法でも読み込まれます:oar start、systemd サービス、Windows の自動起動、CLI 拡張機能。次回の起動から有効です。512 以上の整数でない値はログに 1 行残して無視され、マシンの RAM、またはコンテナーのメモリ制限を超える値は、その大きさまで下げられます。NODE_ の --max-、または server. を起動する node のコマンドラインにあるものが優先されます。リレーのメモリ不足を参照してください。 |
ワークスペースとデータ #
| キー | 型 | 既定値 | 動作 |
|---|---|---|---|
workspace |
文字列の配列 | 未設定 | 会話を開始できる絶対パスのフォルダーです。その中にあるものもすべて含みます。未設定または空の場合は、存在する任意のフォルダーを許可します。存在するフォルダーでない要素は、ログに出して除外します。環境変数 COPILOT_ が設定されていれば、そちらが優先されます。チャットを開始できる場所の制限を参照してください。 |
data |
文字列 | サーバーの隣の data/ |
データベースとリレーのロックファイル、0.9.17 で追加 DeepSeek のチャットの Claude Code の状態である deepseek- を置く場所です。相対パスは config. を含むフォルダーを基準にします。アップロードもこれに従い、その中の uploads/ に置かれます。アップロードをサーバーの隣の uploads/ に置くのは、COPILOT_ を使わず、既定のサーバーの隣の data/ を使うリレーだけです。COPILOT_ が設定されていれば、そちらが優先されます。oar start、oar restart、Linux の systemd サービスは常にこの変数を設定する(~/.、%APPDATA%\、または自分で設定した値)ので、そのように起動したリレーではこのキーは効果がありません。このキーは、直接起動するチェックアウト向けです。Windows の起動時のランチャーが固定するのは設定ファイルだけで、この変数は固定しません。 |
プロバイダーの CLI #
| キー | 型 | 既定値 | 動作 |
|---|---|---|---|
cli |
オブジェクト | リレーが書き込む | プロバイダーごとの CLI のパスです(claude と grok)。Settings からのインストールでパスが確定したときにリレーが書き込み、次の起動時にこれを使って同じプログラムを再び見つけます。パスを手で設定することもできます。実行可能ファイルでない要素は、ログに出して無視されます。それ以外の名前は、copilot も含めて使われません。 |
sdk |
文字列 | 自動検出 | Copilot SDK の index. へのパスです。インストール済みの Copilot CLI の検索が省かれるのは、sdk と cli の両方が設定されているときだけです。単独で設定した場合は、拡張機能エンジンの起動ファイルをその隣で探す場所としても使われます。 |
cli |
文字列 | 自動検出 | Copilot CLI のランタイムのエントリ(app.)へのパスです。sdk と一緒に使います。環境ですでに CLI のプログラムが指定されていない限り、リレーは起動する Copilot のワーカーにもこれを CLI のプログラムとして渡します。 |
sdk |
文字列 | 見つかった最新のもの | 1. のような正確なバージョンです。インストール済みの Copilot CLI の検索で、そのバージョンだけを受け付けます。sdk と cli の両方が設定されている場合は無視されます。 |
これらのキーが関係するのは、リレーがインストール済みの Copilot CLI と直接やり取りする場合です。たとえば既存の Copilot セッションの取り込みやモデルの一覧の取得です。検索では Copilot CLI のパッケージキャッシュを探します(COPILOT_ で、最初に探すフォルダーを 1 つ追加できます)。GitHub Copilot を参照してください。
プレビュー #
previews ブロックはプレビューレーンを有効にします。プレビューレーンは専用のポートとホスト名を持つ 2 つ目のリスナーで、ローカルの開発サーバーとフォルダーを公開します。セットアップ、ホスト名、前段のプロキシについては、preview ツールのページにあります。
| キー | 型 | 既定値 | 動作 |
|---|---|---|---|
previews. |
真偽値 | false |
レーンを有効にします。有効とみなされるのは true だけです。 |
previews. |
数値 | リレーの port + 1 |
プレビューのリスナーのポートです。1024 以上で、リレーのポート以外にします。0 にすると、起動のたびに空いているポートを選びます。 |
previews. |
文字列 | 127. |
リスナーがバインドするアドレスです。ループバック以外のアドレスには previews. が必要です。 |
previews. |
真偽値 | false |
ループバック以外の previews. を許可します。その場合、すべてのプレビューに、前段のプロキシを通さずにネットワークから到達できるようになります。 |
previews. |
文字列 | なし | レーンの公開 http(s) アドレスです。プレビューが有効なときは必須です。ホスト名はリレーのものと異なる必要があります(public を参照)。末尾のスラッシュは取り除かれます。 |
previews. |
文字列の配列 | [] |
このマシン以外に、ポートのプレビューが向けられるホストです。たとえばコンテナーや VM のアドレスです。 |
previews. |
数値 | 8 |
リレー全体で同時に存在できるプレビューの最大数です。正の整数でない値では 8 が使われます。 |
プレビューが有効なときにこれらのルールのいずれかを満たさないと、リレーは理由とともに PREVIEW LANE disabled とログに出し、レーンをオフのままにして動作を続けます。
次の環境変数は、対応するキーを上書きします。COPILOT_(1、true、0、false)、COPILOT_、COPILOT_、COPILOT_、COPILOT_(カンマ区切り)です。
トンネル #
ネットワークの外からリレーに到達するためのトンネルは 2 種類あります。互いに独立していて、同時に動かせます。どちらも既定ではオフで、必須の値が欠けている管理対象のトンネルはオフのままになり、理由をログに出します。
sshTunnel #
自分のサーバーへのリバース SSH トンネルです。SSH トンネルを参照してください。
| キー | 型 | 既定値 | 動作 |
|---|---|---|---|
ssh |
"disabled" または "managed" |
"disabled" |
managed にすると、リレーがトンネルを実行し、再起動します。 |
ssh |
真偽値 | false |
管理対象のトンネルが接続されていない間(最初に接続する前や、必須の値が欠けている場合を含む)、リレーはキューからメッセージを取り出すのを一時停止します。 |
ssh |
文字列 | なし | サーバー上の SSH ユーザーです。管理対象の場合は必須です。 |
ssh |
文字列 | なし | サーバーのホスト名またはアドレスです。管理対象の場合は必須です。 |
ssh |
数値 | なし | サーバー上で開くポートです(1 ~ 65535)。管理対象の場合は必須です。 |
ssh |
"loopback" または "public" |
"loopback" |
リモートのポートをサーバー自身でだけ開くか、サーバーのすべてのインターフェースで開くかです。localhost とは独立しています。 |
ssh |
文字列 | ssh |
SSH のプログラムです。PATH 上の名前か絶対パスを使います。相対パスは、リレーのプログラムのフォルダーを基準にします。 |
ssh |
文字列 | なし | 使用する秘密鍵です。~ は展開されます。指定しない場合、SSH はエージェントか既定の鍵を使います。 |
ssh |
真偽値 | true |
リモートのポートがすでに使われているとき、サーバー上でクリーンアップを実行して再試行します。オフになるのは false のときだけです。 |
ssh |
真偽値 | false |
そのクリーンアップの一部として、サーバー上で何も実行していない自分の SSH セッションも終了します。 |
ssh |
文字列 | 組み込み | 組み込みのものの代わりにサーバー上で実行する、自分のクリーンアップコマンドです。 |
cloudflaredTunnel #
Cloudflare の cloudflared を実行します。これは自分でインストールするもので、OAR には同梱されていません。Cloudflare Tunnel を参照してください。
| キー | 型 | 既定値 | 動作 |
|---|---|---|---|
cloudflared |
"disabled" または "managed" |
"disabled" |
managed にすると、リレーが cloudflared を実行します。COPILOT_ で上書きされます。 |
cloudflared |
真偽値 | false |
管理対象のトンネルが接続されていない間(必須の値が欠けている場合を含む)、リレーはキューからメッセージを取り出すのを一時停止します。 |
cloudflared |
文字列 | なし | 自分の Cloudflare トンネルのトークンです。管理対象の場合は必須です。COPILOT_ で上書きされます。 |
cloudflared |
文字列 | cloudflared |
プログラムです。絶対パスか、PATH 上で探す名前で指定します。COPILOT_ で上書きされます。 |
cloudflared |
文字列の配列 | [] |
cloudflared tunnel run --token <token> の後に追加する引数です。 |
Web UI と環境での設定 #
Web UI での設定はこのファイルにはありません。 プロバイダーのスイッチとキー、モデルの一覧、ターンの最大時間、バックグラウンドタスクのタイムアウト、機能フラグは、データフォルダーにあるリレーのデータベースに保存されます。ファイルが保持するのは、データベースを開く前にリレーが必要とするもの(データフォルダー、ポート、トークン)と、マシンに関する事実(CLI のパス、トンネル)です。UI がファイルに書き込むのは cli だけです。0.9.17 で追加 DeepSeek のキーもここにはありません。DeepSeek の API キー、ベース URL、予算は、Settings → Providers → DeepSeek(設定 → プロバイダー → DeepSeek)からデータベースに保存されます。
環境変数。 完全な一覧は環境変数にあります。キーに対応する変数がある場合、変数がファイルより優先されます。該当するのは COPILOT_(data)、COPILOT_、COPILOT_、COPILOT_(それぞれのセクションに記載)です。COPILOT_ は例外で、その名前は tunnel に追加されます。1 回の実行に限り、--token と --port のオプションがその両方より優先されます。COPILOT_ 自体については、ファイルの場所で説明しています。
例 #
値はすべて架空のものです。使わないブロックは削除してください。
{
"authToken": "0f3c1a9e-example-token-do-not-copy",
"port": 3333,
"localhostOnly": false,
"remotePath": "",
"trustProxy": "loopback",
"allowedOrigins": [],
"publicHostnames": ["relay.example.com"],
"tunnelMarkerHeaders": ["x-edge-request-id"],
"processingTimeoutMs": 600000,
"maxRequeueRetries": 5,
"contextIndicatorMode": "bar",
"workspaceRootAllowList": ["/home/dev/projects", "/srv/sites"],
"dataDir": "data",
"cliBinaries": {
"claude": "/home/dev/.local/bin/claude",
"grok": "/home/dev/.grok/bin/grok"
},
"restartShutdownTimeoutMs": 45000,
"restartGracefulTimeoutMs": 8000,
"restartSpawnTimeoutMs": 18000,
"restartRebindTimeoutMs": 20000,
"restartReadyCooldownMs": 1000,
"restartMaxAttempts": 3,
"restartRetryBackoffMs": [1000, 3000, 7000],
"previews": {
"enabled": true,
"port": 3334,
"bindHost": "127.0.0.1",
"allowPublicBind": false,
"publicBaseUrl": "https://preview.example.com",
"allowedTargetHosts": [],
"maxLive": 8
},
"sshTunnel": {
"mode": "managed",
"required": false,
"user": "ubuntu",
"host": "vps.example.com",
"remotePort": 4444,
"remoteBind": "loopback",
"identityFile": "~/.ssh/id_ed25519"
},
"cloudflaredTunnel": {
"mode": "disabled",
"token": "",
"binary": "cloudflared",
"extraArgs": []
}
}
非推奨、無視されるキー、内部用のキー #
ファイルにこれらのキーがあっても、残しておいても削除してもかまいません。
| キー | 内容 |
|---|---|
features |
廃止されました。機能フラグは現在リレーのデータベースに保存され、Settings → Features(設定 → 機能)にあります。起動時にリレーはここにある値をデータベースにコピーし(データベースにすでに値が保存されている場合を除く)、ファイルからキーを削除します。 |
ssh、cloudflared |
mode の古い形式です。true は managed を意味し、mode が disabled でも managed でもない場合にだけ読み込まれます。 |
poll |
新しいファイルに書き込まれますが、リレーは読み込みません。効果はありません。 |
conversation |
isolated または shared です。新しいファイルに書き込まれます。リレーは値を各セッションのレコードに保存し、ステータスで報告しますが、OAR のどの部分もどちらの値でも動作は変わりません。あなたにとって効果はありません。 |
cli、model |
手で起動するスタンドアロンモード(開発者向けの抜け道で、これを起動する oar コマンドはありません)だけが使います。oar start で起動するリレーは model を無視します。cli は 1 つの目的にだけ読み込みます。プレビューレーンがそのポートを選ばないようにするためです。 |
host |
リレーに接続するプログラム(セッションワーカーと Copilot 拡張機能)だけが、使用するアドレスを組み立てるために読み込みます。リレー自身のリスナーは無視します(localhost を参照)。省いてください。 |