ファイルとフォルダー
OAR は、自分が所有するものをすべて 1 つのフォルダー、つまり状態フォルダーに置きます。設定ファイル、会話を収めたデータベース、ログ、アップロードしたファイルです。このページでは、そのフォルダーの場所、中身、削除できる部分、シークレットを保持する部分、リレーが自動で削除するものを説明します。状態フォルダーにまったく入っていないデータもあります。各プロバイダーは、自分のセッションデータとサインイン情報を自分のフォルダーに保持します。
状態フォルダー #
| インストール | 状態フォルダー |
|---|---|
インストーラーまたは npm install -g、macOS、Linux、WSL |
~/. |
インストーラーまたは npm install -g、Windows |
%APPDATA%\ |
OAR_ を設定したグローバルインストール |
その変数が指すフォルダー |
| git チェックアウト | チェックアウト内:server/、server/、server/、server/ |
npm install -g と oar update はパッケージを置き換えますが、状態フォルダーには一切触れません。OAR_ は oar を実行するすべてのシェルで設定する必要があります。設定しないと、コマンドは既定のフォルダーを探します。環境変数を参照してください。oar doctor は、使用中のパス(状態フォルダー、設定ファイル、データベースとそのサイズ)を表示します。同じパスは、インストールの種類ごとにインストールにも記載しています。
3 つの環境変数で、個別の部分を移動できます。COPILOT_ は設定ファイル、COPILOT_ はデータフォルダー(データベース、ロック、アップロード)、COPILOT_ はログフォルダーを移動します。config. のキー data でもデータフォルダーを移動できますが、環境変数が優先されます。相対パスの data は、config. のあるフォルダーを基準にします。
0.9.14 で追加 アップロードもデータフォルダーに従い、<data に置かれます。以前のバージョンが server/ に残したアップロードや、移行で状態フォルダーの uploads/ にコピーされたアップロードも、その場所のまま読み込まれます。
0.9.14 で追加 グローバルインストールのリレーは、どの方法で起動しても状態フォルダーのデータフォルダーを使います。oar start、Linux のサービス、Windows の 2 つの自動起動モード、OAR の拡張機能を使った素の gh copilot のいずれでも同じです。以前の自動起動のリレーが使っていた config. の data からは 1 回だけコピーし、元のフォルダーはそのまま残します。
0.9.14 より前:Windows の自動起動と gh copilot
0.9.13 までは、Windows の 2 つの自動起動エントリと、素の gh copilot が起動したリレーは、設定ファイルしか指定していませんでした(gh copilot はそれさえ指定していませんでした)。それらが起動したリレーは、データベース、ロックファイル、アップロード、ログを、インストールされたパッケージフォルダー内の server\、server\、server\ に置いていました。このフォルダーは npm install -g と oar update が置き換えます。0.9.14 への更新では、npm が削除する前にそのデータをコピーします。アップグレードの注意点を参照してください。
macOS と Linux では、リレーはデータフォルダーを自分だけが読める状態(モード 700)にし、設定ファイルとデータベースのファイルをオーナーだけが使える状態(モード 600)にします。
古いインストールを移す #
プロジェクトの名前が変わる前は、状態は git チェックアウトの server/ フォルダーにあり、チェックアウトのランチャーの設定ファイルとログは ~/.(XDG の設定フォルダーが指定されていれば $XDG_、Windows では %LOCALAPPDATA%\)にありました。グローバルインストールは、最初の oar setup または oar copilot で、そのフォルダーの設定ファイルとログを状態フォルダーに 1 回だけコピーします。oar start は移行しません。データベースを含むチェックアウトの状態を取り込むには、次のようにします。
oar setup --migrate-from /home/dev/projects/old-oar
指定するのはチェックアウトそのもので、その server/ フォルダーではありません。処理の内容は次のとおりです。
- データベース(
-walと-shmのファイルを含む)、設定ファイル、data/にあった Cursor のエージェントストア(データベースがあった場合のみ)、uploadsフォルダー、そして 50 MB 以下の場合はlogsフォルダーをコピーします。 - コピー元は決して変更しません。結果に納得したら、古いフォルダーは自分で削除してください。
- コピー元からリレーがまだ動いている間は実行を拒否し、その旨を表示します。
- コピーを有効とみなす前に検証します。データベースは SQLite の整合性チェックに合格し、会話とメッセージの数が一致している必要があります。そうでない場合は、コピーしたものを削除し(0.9.14 で追加 状態フォルダー全体は削除しなくなりました)、メッセージを残します。
- 0.9.14 で追加 決して上書きしません。状態フォルダーにすでにある
config.は残します。インストーラーのリレーが作った空のデータベースはjson backups/に移します(先にリレーを止めてください:oar stop)。会話を含むデータベースがある場合は実行を拒否し、代わりにすべきことを表示します。データベースをコピーしている間はリレーのロックを保持するため、その間にそのデータベースでリレーが起動することはありません。 - 記録を
backups/に、マーカーファイルMIGRATION. md .を状態フォルダーに書き込みます。migrated
インストーラーの実行後 0.9.14 で追加
マーカーは、実際にコピーした後にだけ書き込まれます。また、--migrate- で指定したフォルダーは常に移行され、何をコピーしたか、または何もコピーしなかった理由を示す 1 行が表示されます。そのため、インストーラーが oar setup を実行した後でも、このオプションは機能します。同じフォルダーを 2 回目に指定すると、移行済みであることだけが表示されます。0.9.14 より前は、取り込むものがなくても最初の oar setup または oar copilot がマーカーを書き込み、その後の --migrate- は何も表示せずに何もしませんでした。
0.9.14 で追加 移行したアップロードは、リレーが読み込む data/ に入り、Cursor のエージェントストアは、リレーが既定で読み込む data/ に入ります。以前の移行が状態フォルダーの uploads/ に残したアップロードは、次のリレー起動時に data/ に統合されます。上書きや削除は一切されません。チェックアウト内のシンボリックリンクのフォルダーは、実際のフォルダーとしてコピーされます。
中身 #
パスは状態フォルダーからの相対パスです。「削除しても安全」とは、削除後もリレーが動作するという意味で、何を失うかについては何も述べていません。
| パス | 内容 | 削除しても安全か |
|---|---|---|
config. |
ポート、アクセス、アクセストークン、タイマー、任意のトンネルとプレビューです。config.json を参照してください | 先にリレーを止めてください。oar setup が新しいトークンで新しいファイルを書き込むため、すべてのデバイスがサインアウトされます。ファイル内のトンネルの設定は失われます |
data/ |
データベースです。会話と設定が入っています。データベースを参照してください | いいえ。これはあなたの履歴です。先にバックアップしてください |
data/、data/ |
データベースの先行書き込みログとそのインデックスで、リレーの動作中に存在します | 単独では決して削除しないでください。削除するのは copilot. と一緒のときだけです |
data/ |
アップロードまたは貼り付けた添付ファイル 1 つにつき 1 ファイルで、SHA-256 ハッシュが名前になるため、同じファイルは 1 回だけ保存されます。アップロードの書き込み中は <sha256>.<pid>.<number>. ファイルが存在します |
手では削除しないでください。データベースがこれらのファイルを参照しており、ファイルを使っていた会話には添付ファイルが見つからないと表示されます。使われていないものはリレーが削除します。保持期間を参照してください |
data/ |
1 つのフォルダーにつき 1 つのリレーとするためのロックです。データフォルダーごとに 1 つのリレーを参照してください | リレーが動いていないときだけ |
data/ |
0.9.14 で追加 Cursor の会話 1 つにつき 1 フォルダーで、そのエージェントの状態です。状態フォルダーの外を参照してください | Cursor を使っている間は削除しないでください。ストアを失った会話には新しいエージェントが割り当てられます |
data/ |
0.9.17 で追加 DeepSeek チャットの Claude Code の状態です。projects/ の下のトランスクリプトとセッションフォルダー、各 Claude Code プロセスが残すもの(sessions/、session-、shell-)、Claude Code 自身の設定、そして oar- が入っています。このファイルは Claude Code の起動ごとのリレーの記録で、削除時に正しいシェルスナップショットを見つけるために使います。Claude のサインイン情報は含みません。自分だけが読めます(macOS と Linux ではモード 700)。DeepSeek の会話を削除すると、その会話の部分も削除されます。保持期間を参照してください |
DeepSeek チャットを使っている間は削除しないでください。その Claude Code セッションがここにあります。ワーカーは起動時にフォルダーを作り直します |
data/ |
0.9.19 で追加 ヒープが上限に近づいたときにリレーが書き出すヒープスナップショット(*.)です。リレーのメモリ不足を参照してください。自分だけが読めます(macOS と Linux ではモード 700)。スナップショットにはアクセストークンと API キーが含まれます |
はい。リレーはスナップショットを削除しません。読み終えたら 1 つずつ削除してください |
data/ |
0.9.14 で追加 以前のバージョンがパッケージ内に置いていたデータで、npm が削除する前に更新処理がここにコピーしたものです。リレーは次の起動時にこれを引き継ぎます | リレーが引き継いだ後(relay- に [data] Brought over the database … と出た後) |
backups/<time>/ |
0.9.14 で追加 リレーが、引き継いだより新しいデータベースで置き換えた古いデータベースです。移行で脇に移した空のデータベースもここに入ります | 不要だと確信できたら |
data/ |
実行中のリレーが起動時に使ったポートとトークンです。それらを変更した oar setup から、変更を適用する再起動までの間保持されます。自動で削除されます |
はい |
logs/、logs/ |
oar start または oar copilot がリレーを自分で起動したときに出力した内容で、標準出力とエラーです。oar がリレーを自分で起動したときだけ書き込まれます。サービスやターミナルで実行したリレーは書き込みません |
はい。ローテーションされず、大きくなり続けます |
logs/ |
行ごとにタイムスタンプを付けたリレーのコンソールのコピーで、すべてのリレーが書き込みます | はい |
logs/ |
1 つのセッションワーカーの出力です。ログを参照してください | はい |
logs/ |
1 つのセッションのツール設定です。シークレットは含みません | はい。セッションのワーカーが起動すると、リレーが新しいファイルを書き込みます |
logs/、logs/ |
Copilot の拡張機能エンジンの拡張機能が書き込みます | はい |
npm/ |
npm のグローバルフォルダーに root 権限が必要だったため、インストーラーがここに置いた OAR パッケージです | このインストールを使っている間は削除しないでください。これがプログラム本体です |
runtime/ |
マシンに十分新しい Node.js がなかった場合の、OAR 専用の Node.js です | oar がこれで動いている間は削除しないでください |
logs/ |
0.9.15 で追加 oar uninstall 後の npm の結果と、npm が残した隠し . フォルダーです。--purge を付けた場合は、代わりにシステムの一時フォルダーに書き込まれます |
はい |
oar-、oar-(Windows) |
起動タスクが実行するランチャーと、OAR が登録するタスク定義です。自動起動を参照してください | リレーを起動時に開始する設定の間は削除しないでください。oar autostart off で両方削除されます |
*.、*.、<task>.(Windows) |
0.9.15 で追加 oar autostart --replace が置き換えた手作りの自動起動エントリのコピーと、切り替えに失敗したときに元に戻したタスクのコピーです。ランチャー、スタートアップのエントリ、タスクのエクスポートした XML(schtasks / で戻せます)があります。OAR が生成したエントリのコピーは、切り替えが成功すると削除されます |
はい。エントリを戻す必要がなくなったら |
backups/、. |
移行の記録とマーカーです | 記録:はい。マーカー:残してください。削除すると、以前の設定フォルダーからの自動移行が再び実行される可能性があります |
状態フォルダーの外では、インストーラーの oar ランチャーが ~/. にあり(~/. にインストールする場合のみ)、Linux のサービスは ~/. です。これらの削除方法は OAR の削除で説明しています。0.9.15 で追加 oar uninstall はサービスとパッケージを削除し、状態フォルダーはそのまま残します。oar uninstall --purge は、delete と入力した後に状態フォルダーを削除します。
git チェックアウトは、同じファイルを server/ に保持します。生成された画像は状態フォルダーにはありません。状態フォルダーの外を参照してください。
データベース #
データベースは 1 つの SQLite ファイル copilot. です。リレーが最初の起動時に作成します。あなたのデータと呼べるものは、ここに入っています。
- 会話とそのメッセージ(トランスクリプト、添付ファイルのインデックス、ピン留めしたメッセージを含む)
- メッセージキュー、キュー待ちのメッセージと待機中のメッセージ、エージェントがした質問
- Web UI で変更するリレーの設定(アプリ全体のスイッチ、プロバイダーの設定、保持期間の選択、更新の設定、モデルのリスト)
- OpenAI、Cursor、0.9.17 で追加 DeepSeek の API キー(入力した場合)
- ペアリングしたリレーとそのトークン、このリレーとペアリングしたリレーでセッションを監視する購読
- デバイスの Web Push の購読と、リレーのプッシュ用のキー
- 共有した会話のリンク
- 会話ごとのサブエージェントとワークフローの記録、アクティビティ、思考
- アップロードしたファイルのインデックスと、それを使うメッセージ
- Check Usage(使用状況の確認)のプランのメーター用の使用状況のスナップショット。0.9.17 で追加 DeepSeek カードが数えるもの:DeepSeek のターンのモデル別・日別のトークン数と検索数、各 DeepSeek セッションが最後に報告した合計、カードのバーの基準となる残高の読み取り値
- 画像チャット:その操作と、生成された画像同士のつながり
- プレビューのカード
マイグレーションは、リレーが起動するたびに自動で実行されます。足りないものを作成して列を追加するだけで、再実行しても何も変わりません。自分で実行することはなく、スキップすることもできません。
バックアップ #
OAR にはバックアップ用のコマンドはありません。データベースは SQLite の先行書き込みモードで動作するため、最近の変更がデータベースの隣の -wal ファイルに入っていることがあります。バックアップするには、次のようにします。
oar stopでリレーを止めます。copilot.と、存在する場合はdb copilot.とdb- wal copilot.を一緒にコピーします。db- shm - リレーを再び起動します。
復元するには、リレーを止め、コピーしたファイルを元どおりに戻します。リレーの動作中に copilot. だけをコピーしないでください。また、データベースのファイルと別のコピーの -wal ファイルを混ぜないでください。バックアップには API キーとトークンが含まれます(シークレットの保存場所を参照)。状態フォルダーと同じように、ほかの人が読めない場所に保管してください。
ログ #
| ファイル | 書き込むもの | ローテーション |
|---|---|---|
relay- |
リレー(常に) | 5 MB に達すると relay- になり、古いものは .、. へずれ、最も古いものは削除されます。行の中のアクセストークンは [token] と表示されます。OAR_ でファイルをオフにできます |
server.、server- |
oar start または oar copilot のシェル(リレーをバックグラウンドで起動するとき) |
なし |
worker-<session>. |
各 Node のセッションワーカー(Claude、Claude Cloud、Cursor、Grok、0.9.17 で追加 DeepSeek、Copilot SDK エンジン)で、ワーカーの再起動をまたいで追記されます | 起動のたびに、10 MB を超えたファイルは worker-<session>. になり、以前のものを置き換えます。削除した会話のファイルは残ります |
ext- |
Copilot の拡張機能エンジンの拡張機能 | なし |
Copilot の拡張機能エンジンには、ワーカーのログがありません。このエンジンは Copilot CLI 自身のターミナルだからです。systemd サービスとして実行したリレーは、ジャーナルにも書き込みます。リレーを自動で起動するを参照してください。
npm start で起動した git チェックアウトは、ログを server/ に置きます。oar start または oar copilot で起動したものは、COPILOT_ が別のフォルダーを指定していない限り、~/.(Windows では %LOCALAPPDATA%\)に置きます。
シークレットの保存場所 #
| シークレット | 保存場所 |
|---|---|
| アクセストークン | config. に平文で保存されます。このファイル、そのコピー、サインイン用のアドレス(?token=)はパスワードと同じように扱ってください。ブラウザーはこれをサインイン用の Cookie として 30 日間保持します。リレーのロックファイルには、そのハッシュだけが保存されます |
以前のアクセストークン(oar setup から再起動まで) |
data/ に平文で保存され、自分だけが読めます。自動で削除されます |
| Cloudflare のトンネルトークン(管理されたトンネル) | config. のキー cloudflared、または環境変数 COPILOT_ |
| OpenAI API キー | データベースです。パネルには二度と表示されず、ブラウザーにも送られません |
| Cursor API キー | データベースで、扱いは同じです |
| DeepSeek API キー | 0.9.17 で追加 データベースで、扱いは同じです(設定 deepseek_)。リレーはこのキーを DeepSeek のベース URL にだけ送り、DeepSeek チャットのワーカーにだけ渡します。DeepSeek を参照してください |
| ペアリングしたリレーのトークン | データベースです。ブラウザーやエージェントには決して送られません。このリレー自身のトークンを使うペアリングでは、何も保存しません |
| 共有リンクのトークン | データベース |
| Web Push のキーとデバイスの購読 | データベース |
| ヒープスナップショット | 0.9.19 で追加 data/:リレーのメモリにあったすべてのもので、アクセストークンと API キーも含まれます。そのまま共有しないでください。リレーのメモリ不足を参照してください |
| Claude のサインイン情報 | リレーのマシン上の Claude CLI 自身のフォルダー(~/.、または CLAUDE_ のフォルダー)です。リレーは何も保存しません。Claude Cloud は同じサインイン情報を読み込み、メモリ内に保持します。DeepSeek チャットはこれを使いません |
| Grok のサインイン情報 | Grok CLI 自身のフォルダー:~/. |
| GitHub Copilot のサインイン情報 | リレーのマシン上の Copilot CLI 自身のサインイン情報 |
ワーカーが tmux の下で起動する間、リレーはそのプロバイダーのキー(OpenAI、Cursor、0.9.17 で追加 DeepSeek のキー、または Claude Cloud ワーカーや 0.9.17 で追加 Claude ワーカー用の、リレーの環境にある CLAUDE_)を、システムの一時フォルダー内の自分だけが読める一時ファイルに書き込みます。ワーカーのシェルはそれを 1 回読み込んで削除します。各ワーカーが受け取るのは、自分のプロバイダーのキーだけです。
保持期間 #
リレーは次のものを自動で削除します。会話を削除しない限り、それ以外は何も削除されません。
| 対象 | ルール |
|---|---|
| 未使用のアップロード | どのメッセージや下書きからも参照されていないファイルは、24 時間を過ぎると削除されます。チェックはリレーの起動時と 6 時間ごとに実行されます。設定はありません。会話を削除すると、その会話だけが使っていたファイルも削除されます |
| サブエージェントの記録 | 終了したサブエージェントのツールの入力と結果は、Settings → General(設定 → 一般)の Keep sub-agent tool output(サブエージェントのツール出力を保持)の日数が過ぎると削除されます。日数は 7、14、30、90 日、または Always(無期限)です。既定は 90 です。思考、返信、メモ、各呼び出しの 1 行の要約は残ります。チェックは起動の 30 秒後、1 日に 1 回、設定を変更した 5 秒後に実行されます。データベースファイルは小さくなりません。SQLite が空いた領域を再利用します |
| セッション監視のリレーイベント | 監視側の会話に渡したイベントは 2 時間後に削除されます。終了した購読は 7 日後に削除されます。詳しくはセッションの監視を参照してください。この掃除は 10 分ごとに実行されます |
| ペアリングしたリレーがまだ取得していないイベント | 購読ごとに最新の 500 件を保持し、7 日より古いものは残しません。7 日間誰も取得しなかった購読は終了します。質問とエラーは最後に破棄されます。リモートリレーを参照してください |
relay- |
5 MB でローテーションし、古いファイルを 3 つ保持します。ログを参照してください |
worker-<session>. |
起動時に 10 MB を超えていれば . に移ります。削除した会話のログを削除するものはありません |
| 生成された画像 | 古くなっても削除されません。会話を削除すると、その画像も削除されます |
| ロックファイル | リレーの停止時に削除されます。クラッシュした後は、次の起動時に置き換えられます。データフォルダーごとに 1 つのリレーを参照してください |
会話を削除すると、データベースからそのメッセージ、キューのエントリ、質問、サブエージェントの記録が削除され、その会話に属する Claude のトランスクリプトと生成された画像も削除されます。0.9.17 で追加 DeepSeek の会話では、さらに data/ 内のトランスクリプト、セッションのフォルダー、停止した Claude Code が残したもの(その登録情報、フックの環境、シェルスナップショット)、ほかのセッションが使わなくなったプロジェクトフォルダーも削除し、データベースからはそのセッションが最後に報告した合計を削除します。DeepSeek カードの合計と日別の値に加算された分は残ります。各プロバイダーが自分で保持するものは、次のセクションで説明します。
状態フォルダーの外 #
| 対象 | 場所 |
|---|---|
| Claude のトランスクリプトとセッションフォルダー | Claude の設定フォルダー(~/.、または CLAUDE_)の projects の下です。会話を削除すると、そのトランスクリプトも削除されます。Claude を参照してください。0.9.17 で追加 DeepSeek チャットは、代わりにデータフォルダーに保持します(上記の data/) |
| GitHub Copilot のセッション状態 | ~/.、または COPILOT_ のフォルダー |
| OpenAI Image チャットの画像 | Copilot のセッション状態フォルダー内で、会話の下の <session>/ です。OpenAI を参照してください |
| Cursor のエージェントストア | 0.9.14 で追加 会話 1 つにつき 1 フォルダーで、リレーのデータフォルダーの cursor-(~/.、%APPDATA%\)、または CURSOR_ で指定したフォルダーにあります。グローバルインストールでは状態フォルダー内にありますが、以前のバージョンは別の場所に置いていたため、ここに載せています。Cursor を参照してください |
| Grok CLI とそのサインイン情報 | ~/. |
| Copilot 拡張機能のラッパー | ~/. で、oar copilot または oar copilot --install- が書き込みます。0.9.15 で追加 OAR がこのインストール用に書き込んだものであれば、oar uninstall が削除します |
| Claude Cloud | ディスクには何もありません。クラウドセッションは Anthropic で実行され、結果はプッシュされたブランチとして戻ってきます |
| 一時ファイル | 上記の短時間だけ存在するプロバイダーキーのファイルで、システムの一時フォルダー内にあります |
0.9.14 より前は、Cursor のストアは既定でパッケージフォルダー内の server/ にあり、更新でこのフォルダーが置き換えられるため、会話が保存済みのエージェントを失って新しいエージェントになることがありました(Cursor を参照)。ストアがまだその古い場所にある会話は、そこで使い続けます。両方の場所にストアがある会話は、最後に変更された方を使います。移動や削除は一切されません。
エージェントの作業、つまりプロジェクトフォルダー内のファイルは、OAR のストレージとはまったく別のところにあります。
データフォルダーごとに 1 つのリレー #
リレーは起動時にデータフォルダーに relay- を作り、停止時に削除します。このファイルには、リレーのプロセス番号、トークンのハッシュ、起動時刻が入っています。
最初のリレーの動作中に 2 つ目のリレーが同じデータフォルダーで起動すると、2 つ目は 1 行を表示して終了します。終了コードは 0.9.14 で追加 78(以前は 1)で、Linux のサービスはこれを再試行しません。
Relay already running (pid=4242, startedAt=2026-01-05T09:12:40.000Z; lock /home/dev/.oar/data/relay-server.lock). It is held by relay process 4242: oar stop, or end process 4242.
Relay already running の代わりに Relay appears to be owned by another live process と表示された場合は、実行中のリレーのトークンが異なります。ロックの保持者がリレーであると判断できない場合、ヒントは If no relay is running, end process 4242 or delete the lock. になります。oar start は The relay did not come up の後に同じヒントを表示します。最初のリレーには触れません。期待したリレーと実際に動いているリレーが違う場合、メッセージは保留のままになります。oar doctor で、使用中の設定とデータベースを確認できます。
クラッシュや電源断の後は、ロックファイルが残ります。0.9.14 で追加 最後の起動より前のロック、またはそのプロセス番号がロックより後に起動したプロセスのものになっているロックは、古いとみなされます。次の起動はそれを脇に移し、Recovered stale singleton lock とログに出してロックを引き継ぎます。この判断は時計に頼らなくなったため、時計が急に変わっても実行中のリレーが消えたように見えることはなく、同じロックを回収しようとする 2 つの起動が両方とも動くこともありません。読み取れないロック(電源断で空になったもの)は再度読み取られ、時刻が 10 秒以上ずれていない限り保持中とみなされます。oar start は、このバージョンが書き込んだロックを削除しなくなりました。以前のバージョンのロックは、リレーのポートで何も応答しない場合に引き続き削除します。
データフォルダーとポートが別々であれば、2 つのリレーを並べて実行できます。oar がリレーを見つける方法は oar コマンドを、再起動で保持されるものは再起動と再開を参照してください。