AIエージェントのリモートコントロールのすすめ
update:2026/09/20
Category : AI, command line tool
TL;DR
- codexの場合
リモートサーバでcodexを起動して以下を実行。
codex app-server daemon start
codex app-server daemon enable-remote-control
codex remote-control pair
出てきた数字をスマホにコピペしたらスマホからsshしなくてもcodexを操作できます。
- claudeの場合
claude
を実行したら
/rc
と入力すればスマホアプリから操作できます。
はじめに
皆さんはAIエージェントを用いた開発をしていますか。 私はどっぷり使っています。AIエージェントは我々が明示的に指示をしなくてもローカル上のファイルを自律的に見て、必要な操作を勝手にやってくれます。こんなに便利なものはないでしょう。
PCからSSHして使うことが多いと思うのですが、これでは電車の中やお布団の中、散歩の途中などではなかなか使えません。せっかくいいアイデアが思いついたのに!となったことも多いのではないでしょうか?
そこで、今回はスマホアプリからsshサーバ先のcodexやclaudeに支持を投げる方法、remote-controlを皆さんに共有したいと思います。
なお、AIエージェントをホスト上で実行するのが怖いという方向けに、最後にdockerコンテナ上でAIエージェントを動かすための構成例も紹介します。
codexの場合
codexはOpenAIが提供するツールですね。 cli上で
codex # 通常起動
codex --sandbox danger-full-access # サンドボックスの制限を外して起動
を実行することで使用できます。なお、codexは権限回りがかなり厳しめに作られているので、私は--sandbox danger-full-accessをオプションでつけることをお勧めします。
私は普段研究していて、codexに機械学習の進捗などを監視させています。もちろんメールで送信するように命令しても良いのですが、私自身から「あれもしろ、これもしろ」と後から命令を変えたくなることも多々あります。しかしそれは電車の中かもしれないし、散歩の途中かもしれません。そういう時スマホから操作できたらな———できるんです!
まずはcodexを実行するマシン側で
codex app-server daemon start
codex app-server daemon enable-remote-control
codex remote-control pair
を実行してください。これは何をしているのかというと、
app-server daemonを常駐させる。codexがずっと動いている状態になるapp-server daemonにremote-control(外部端末からの操作)を可能にする- remote-controlをする端末とのペアリングをする
という三段階を実行しています。
実際にやってみるとこんな感じ。
$ codex app-server daemon start return = 1
{"status":"started","backend":"pid","pid":1061,"managedCodexPath":"/home/yukijya/.codex/packages/standalone/current/bin/codex","managedCodexVersion":"0.155.1","socketPath":"/home/yukijya/.codex/app-server-control/app-server-control.sock","cliVersion":"0.155.1","appServerVersion":"0.155.1"}
$ codex app-server daemon enable-remote-control
{"status":"alreadyEnabled","backend":"pid","remoteControlEnabled":true,"socketPath":"/home/yukijya/.codex/app-server-control/app-server-control.sock","cliVersion":"0.155.1","appServerVersion":"0.155.1"}
$ codex remote-control pair
Pairing code: ****-**** #実際は英数字のワンタイムパスワードが出る
出てきたPairing codeはスマホのアプリで使います。
次にスマホのchatGPTアプリを起動します。
上記の画像のように
- メニュー欄から
リモートを選択 - …ボタンから
接続を追加を選択 代わりに手動でペアリングを選択し、Pairing codeを入れる。(この時ハイフン-も入力すること)
これでスマホからも、リモートサーバのcliからも同一のセッションを開いて、codexを操作することができるようになります。
claude codeの場合
claude codeはとても簡単です。
claude code中で/rcを実行するだけ。あとはスマホからも操作できます。
上記の画像のように
- Claudeアプリのメニューから
コードを選択 セッションの一覧から、/rcを実行したセッションを選択
docker上で使用する方へ
codex,claude code, opencodeのサンドボックス環境を作るための方法をここでご提案します。 といっても大したことはやっていません。ただコンテナ上で実行すれば良いじゃんと言っているだけです。
まずはDockerfileでcodexなどのAIエージェントのバイナリを焼きます。例としてubuntuイメージを用いていますが、なんでも大丈夫です。作業できる環境のイメージに追加してくださればよろしいかと。 Dockerfileの例です。ベースイメージやユーザ名は各自の環境に合わせて調整してください。
FROM ubuntu:latest
ARG USER=developer
USER root
RUN rm -f /etc/apt/apt.conf.d/docker-clean \
&& echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
apt-get update && \
apt-get upgrade -y && \
apt-get install -y \
curl
RUN useradd --create-home --shell /bin/bash ${USER}
ENV PATH="/app/.venv/bin:/home/${USER}/.local/share/mise/shims:/home/${USER}/.local/bin:$PATH"
USER ${USER}
WORKDIR /home/${USER}
RUN curl --fail --location --silent --show-error https://mise.run | sh
RUN mise use -g uv codex claude opencode
RUN mkdir -p /home/${USER}/.claude \
/home/${USER}/.codex \
/home/${USER}/.local/share/opencode
CMD ["/bin/bash"]
なお、この構成ではmise経由でcodexを入れているので、ちょっとだるいかも。対応方法は後述のトラブルシューティングへ。
compose.ymlにはvolumeでセッション情報などを保持するのが楽です。コンテナはバンバン落とすので、毎回認証をやり直すのは面倒でしょう。
なお、使い終わったらdocker compose down -vをしてvolumeファイルごと消しましょう。
以下のcompose.ymlは一例です。使いたい既存のcomposeファイルに追加して書くとよろしいかと思います。
services:
app:
volumes:
- claude-config:/home/${USER:-developer}/.claude
- codex-config:/home/${USER:-developer}/.codex
- ./agent/skills:/opt/codex-skills #もしスキルが欲しければ、/opt/codex-skillsに配置すれば見てくれる。
- opencode-data:/home/${USER:-developer}/.local/share/opencode
volumes:
claude-config:
codex-config:
opencode-data:
トラブルシューティング
mise経由でcodexをインストールした場合
$ codex app-server daemon enable-remote-control
codex app-server daemon start
codex remote-control pair
{"status":"enabled","remoteControlEnabled":true,"socketPath":"/home/yukijya/.codex/app-server-control/app-server-control.sock","cliVersion":"0.155.1"}
Error: managed standalone Codex install not found at /home/yukijya/.codex/packages/standalone/current/codex
This command requires the standalone install managed by the Codex installer, because the daemon starts and updates app-server from that fixed path.
Install it with:
curl -fsSL https://chatgpt.com/codex/install.sh | sh
Then rerun the command you just tried.
Error: failed to connect to /home/yukijya/.codex/app-server-control/app-server-control.sock
Caused by:
No such file or directory (os error 2)
こんな感じのエラーが出るかもしれません。エラー文にあるとおり、daemonはapp-serverを~/.codex/packages/standalone/current/という固定パスから起動・更新する仕様になっています。miseでインストールすると~/.local/share/mise/shims/codexにバイナリが置かれるだけで、この固定パスには何も無いため、PATHが通っていてもdaemonは起動できません。
おすすめはおとなしく公式のインストール方法を用いることなのですが、それじゃ面白くない。
nohup codex app-server --remote-control --listen unix:// &
のようにnohupを用いることでdaemonによる常駐を回避することで
$ codex remote-control pair
Pairing code: ****-****
のように実行できます。