リモートリンク
マシンリンクは 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 であること。
- リンクを開始するダッシュボードは、そのコンピューター上で直接開いたもの(スタンドアロン環境のブラウザーまたはデスクトップアプリ)か、ペアリング済みの Hub セッションであること。
パスワード SSH と Windows は現在のフローに含まれません。リンクはどちら側からでも開始できます。次の手順のように Home から開始するか、後述の「このコンピューターを Child として接続する」のように Child から開始します。
#remote から Child を追加する
Section titled “#remote から Child を追加する”- ダッシュボードで
#remoteを開き、Remote Link をオンにします。 - Home を選び、Continue を押します。SSH ホストの一覧が開きます。
- SSH の候補からホストを選ぶか、SSH 設定のエイリアスを入力します。
- 接続テストを実行し、表示されたホストフィンガープリントを接続先コンピューターのものと比較します。比較すると、SSH がホストを信頼する前に、別のコンピューターや変更されたホストキーを検出できます。
- フィンガープリントを確認して Child を接続します。
ダッシュボードはトークンの入力を求めません。先にホストをプローブし、フィンガープリントを明示的に確認するまでリンクを適用しません。
このコンピューターを 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 の役割は、OpenCodex が設定されたポートで動作している間だけ選択できます。Child はまさにそのポートで再起動するためです。設定されたポートで動作していないとダッシュボードに表示された場合は、先にそのポートで OpenCodex を再起動してください。
リンクの状態
Section titled “リンクの状態”- Connected は SSH トンネルが準備でき、Child が Home のリンクを使える状態です。
- Reconnecting はトンネルを再試行している状態です。再試行中はリクエストが
Retry-After付きの503を一時的に返すことがあります。自分のダッシュボードから接続した Child では、リクエストはまずトンネルの復帰を最大 15 秒待ちます。 - Failed は対応が必要な状態です。SSH 認証、確認済みのホストキー、転送、タイムアウトの理由を確認してください。自分のダッシュボードから接続した Child は、スリープ、障害、再起動の後も自動で再試行します。タイムアウトや転送エラーの後は約 1 分ごと、認証エラーの後は 5 分ごとです。ホストキーが変わった場合は再試行しません。
リンクが失敗しても、ローカルプロバイダーへ自動的に切り替わることはありません。
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 port [--json]ocx link issue --alias <alias> --tunnel-port <port> [--json]ocx link status [--json]ocx link revoke --link-id <id> [--json]
