リモートリンク
マシンリンクは SSH で OpenCodex の Home コンピューターと Child コンピューターを接続します。Home は SSH トンネルを通じて Child にサービスを提供し、両方のコンピューターはローカルの OpenCodex サービスを 10100 ポートで維持します。ダッシュボードは Child 専用のリンクキーを SSH で渡すため、トークンを入力する必要はありません。
- Home から Child に OpenSSH キーでログインできること。
- Child から開始するリンクでは、Child から Home に OpenSSH キーでログインできる必要があります(パスワードログインには対応していません)。
- Child に OpenCodex 2.66.0 以降がインストールされていること(Child から開始するリンクでは Home にも)。
- 両方のコンピューターが macOS または Linux であること。
- Home から Child を追加するダッシュボードは Home 上で開くか、ペアリング済みの Hub セッションを使用します。現在のコンピューターを Child にするには、オペレーターがペアリングしたダッシュボードセッションが必要です。認証情報なしのローカルセッションでは、このルーティング変更を確定できません。
パスワード SSH と Windows は現在のフローに含まれません。リンクはどちら側からでも開始できます。次の手順のように Home から開始するか、後述の「このコンピューターを Child として接続する」のように Child から開始します。
#remote から Child を追加する
Section titled “#remote から Child を追加する”- ダッシュボードで
#remoteを開き、Remote Link をオンにします。 - Home を選び、Continue を押します。SSH ホストの一覧が開きます。
- SSH の候補からホストを選ぶか、SSH 設定のエイリアスを入力します。
- 接続テストを実行し、表示されたホストフィンガープリントを接続先コンピューターのものと比較します。比較すると、SSH がホストを信頼する前に、別のコンピューターや変更されたホストキーを検出できます。
- フィンガープリントを確認して Child を接続します。
ダッシュボードはトークンの入力を求めません。先にホストをプローブし、フィンガープリントを明示的に確認するまでリンクを適用しません。
Child 追加画面には、Child が SSH 経由でこの Home のプロバイダーを使用することと、上記の前提条件が表示されます。別名は OpenCodex を実行する Home の ~/.ssh/config から取得し、ブラウザーを表示するコンピューターとは限りません。検索が成功してもホストがない場合は、次のような Host エントリを追加して再検索してください。既存の別名の手入力も可能です。別名を選択または入力すると接続テストが有効になります。このガイドへのリンクもあります。
Host devbox HostName devbox.example.com User you IdentityFile ~/.ssh/id_ed25519検索に失敗した場合、空の一覧と表示せず、読み込み失敗、取得できた理由、再試行ボタンを表示します。接続テストの失敗理由とサニタイズ済み SSH ヒントは開いている画面だけに表示され、背後には重複しません。理由と下記の SSH 診断を確認して再試行してください。再検索では入力した別名を保持しますが、接続前にフィンガープリントの再確認が必要です。
このコンピューターを Child として接続する
Section titled “このコンピューターを Child として接続する”Home のプロバイダーを使うコンピューターで次の操作を行います。
- ダッシュボードで
#remoteを開き、Remote Link をオンにします。 - Child を選びます。SSH ホストの一覧が開きます。
- Home の SSH ホストを選び、接続テストを実行してから、ホストのフィンガープリントを比較して確認します。
- 注意事項を読み、Connect as Child を選びます。
接続すると、このコンピューターの OpenCodex が再起動します。すでに実行中の Codex ターンは先に完了し、再起動中の最大 1 分間は新しいリクエストが失敗することがあります。その後ダッシュボードは自動的に再読み込みされ、Child のリンクを表示します。Codex はこのコンピューターの http://127.0.0.1:<port>/v1 を使い続け、トークンや環境変数の設定は不要です。ローカルの OpenCodex が各リクエストを Home に中継し、Home が自身のプロバイダーとアカウントで応答します。
Child にこのコンピューターを先にペアリングするよう表示された場合は、このコンピューターに設定された HTTP ループバック IP アドレスのダッシュボード(例: http://127.0.0.1:<configured-port>)を開いてください。ローカルのペアリングフォームは、ペアリングが必要で、ダッシュボードと API が同じループバックオリジンを使う場合にのみ表示されます。フォームの ocx gui pair --origin "http://127.0.0.1:<configured-port>" コマンドをコピーしてこのコンピューターのターミナルで実行し、使い捨てコードをフォームに貼り付けてください。フォームに表示された正確なオリジンを使ってください。プロバイダーの API キーや管理者トークンはペアリングコードではありません。ペアリングの不足と設定されたポートの不一致は別の原因です。
Child の役割には、OpenCodex がスタンドアロンモードで設定されたポートで動作していることも必要です。Child はまさにそのポートで再起動するためです。設定されたポートで動作していないとダッシュボードに表示された場合は、先にそのポートで OpenCodex を再起動してください。
リンクの状態
Section titled “リンクの状態”- Connected は SSH トンネルが準備でき、Child が Home のリンクを使える状態です。
- Reconnecting はトンネルを再試行している状態です。再試行中はリクエストが
Retry-After付きの503を一時的に返すことがあります。自分のダッシュボードから接続した Child では、リクエストはまずトンネルの復帰を最大 15 秒待ちます。 - Failed は対応が必要な状態です。SSH 認証、確認済みのホストキー、転送、タイムアウトの理由を確認してください。SSH トンネルを張る側が、スリープ、障害、再起動の後も自動で再試行します。Home が追加した Child では Home が、自分のダッシュボードから接続した Child では Child が再試行します。タイムアウトや転送エラーの後は約 1 分ごと、認証エラーの後は 5 分ごとです。ホストキーが変わった場合は再試行しません。すぐに再接続するには、Home のダッシュボードで Retry を選ぶか、Home で
ocx link reconnect --link-id <id>を実行します。OpenCodex を再起動せずに、そのリンクのトンネルだけを張り直します。
リンクが失敗しても、ローカルプロバイダーへ自動的に切り替わることはありません。
Child を削除する
Section titled “Child を削除する”Child の Disconnect を選び、エイリアスを確認します。Home はトンネルを停止し、その Child のリンクキーを失効させ、保存されたリンク記録を削除します。
Home から Child に接続解除コマンドを実行できない場合は Remove here only を選びます。これでこのコンピューターのトンネル、キー、記録だけを削除します。その後 Child にログインして実行します。
ocx disconnectChild から開始したリンクを切断するには、Child で ocx disconnect を実行します。このコマンドはクライアントトンネルを切断し、SSH 経由で Home のリンクを失効させます。Home での失効に失敗すると、次のメッセージが表示されます: Home revoke failed; run ocx link revoke --link-id <linkId> on the home.
セキュリティ
Section titled “セキュリティ”Child はリンクを通じて Home コンピューターのプロバイダーとプロバイダー認証情報を使います。Home は Child ごとに別のリンクキーを作り、リンクを削除するとそのキーを失効させます。確認前にホストフィンガープリントを比較し、別のコンピューターや変更されたホストキーを誤って受け入れないようにしてください。Tailscale の ID から発行されたダッシュボードセッションはマシンリンクを管理できません。 Child ではキーは OpenCodex の中にとどまります。Codex や Claude Code が Child で送る認証情報は Home に転送されず、Child で 127.0.0.1:<port> に到達できるプログラムはキーなしで Home を使えます。これはスタンドアロン環境がローカルのプログラムに与えるのと同じ信頼です。他のサイトの Web ページは拒否されます。
CLI リファレンス
Section titled “CLI リファレンス”ocx link probe <alias> [--json]ocx link add <alias> [--expect-fingerprint SHA256:…] [--json]ocx link port [--json]ocx link issue --alias <alias> --tunnel-port <port> [--json]ocx link status [--json]ocx link revoke --link-id <id> [--json]ocx link reconnect --link-id <id> [--json]対話型端末(TTY)でない場合、--expect-fingerprint は必須です。対話型端末では省略できますが、提示されたフィンガープリントを明示的に承認する必要があります。
端末では ocx link probe <alias> --json で指紋とバージョンを確認し、ocx link add <alias> --expect-fingerprint SHA256:… --json で接続できます。指紋を省略すると対話端末で明示的な確認が必要です。Home は Child の再起動サポートと curl を事前確認し、接続後に再起動と実際のリレーを検証します。Child 設定が残った場合は Child で ocx disconnect と ocx restart を実行してください。詳細(英語)。

