スマホから手早くターミナルコマンドを実行する方法(SSH に張り付かずに)
本物のターミナルはマシンに置いたまま、スマホで手早くシェルを確認する(git status、ログ、開発サーバー)ためのワークフローです。
- CLI
- 0.2.17
- プレビュー ref
- a2c45c8
注意: 機能一覧(英語)によると、埋め込みターミナルは実験的な機能です。セッション内からコマンドを手早く実行できますが、本格的なターミナル作業には SSH/tmux や Herdr のような専用のターミナルホストを検討してください。
スマホでは、たいてい「本格的なターミナル体験」は求めていません。
欲しいのはもっと小さなことです。
git statusを実行する- ログを tail する
- 開発サーバーが起動しているか確認する
- セッションが出力したローカル URL をコピーしたり開いたりする
たいていの場合、別の SSH アプリに切り替える手間だけで、その作業を後回しにしてしまいます。
役に立つのは、本物(リポジトリのあるマシンで動く)でありながら、小さな画面で SSH/tmux 一式に引き込まれない「ちょっとしたコマンド」のワークフローです。
多くのツールは、次の両極端のどちらかを強います。
- SSH/tmux にどっぷり浸かる
- ターミナルなし(スクリーンショット、ログ、エージェントの発言だけ)
コーディングエージェントをクロスデバイスで実行・オーケストレーションするためのオープンソースアプリ Happier では、セッションに紐づいた埋め込みターミナルが使えます。
要点
- 何が必要か決めます:
- いくつかのコマンドやログの行(よく合います)、または
- 本格的なターミナル作業(SSH/tmux のほうが向いています)
- コマンドを実行したいマシンで Happier をセットアップし(デーモンを接続し)、スマホを接続します。
- 任意のセッションを開き、セッションのヘッダーで ターミナル(Terminal) をタップします。
- ちょっとしたコマンドやログに使います。再接続し、セッションに追従します。
課題
スマホから Happier を使うとき、たいていは小さな判断をしているのであって、「一日中ターミナル作業」をしているわけではありません。
それでも、小さな判断には本物の状態が必要です。
- 今どのブランチにいる?
- あのコマンドは終わった?
- エラーの行は何?
埋め込みターミナルが役立つのは、コンテキストを切り替えるのではなく、セッション UI の一部だからです。
よくある方法とトレードオフ
- SSH アプリと tmux: 問題なく使えますが、スマホでは手間が大きいです。
- リモートデスクトップ: 使えますが、重くて扱いにくいです。
- エージェントのトランスクリプトを信じる: 本物のコマンド出力が1つ必要になるまでは問題ありません。
- Happier の埋め込みターミナル: 本物のシェルを、セッションに沿ったワークフローで使えます。
Happier を初めて使う場合(概要と入手方法)
Happier を初めて見る方へ。Happier は、Claude Code、Codex、OpenCode などの AI コーディングエージェント向けのオープンソースのコンパニオンアプリ(モバイル/Web/デスクトップ)です。
ここでのワークフローは、リポジトリ/ワークスペースは所有するマシンに置いたまま、スマホから Happier で確認して操作する、というものです。ときどきのシェルコマンドも含みます。
セットアップ:
- スマホから Happier を使う方法
- GitHub: https://github.com/happier-dev/happier
- インストール/ダウンロード: https://github.com/happier-dev/happier#how-it-works
- Discord(コミュニティとサポート): https://discord.gg/W6Pb8KuHfg
動くワークフロー(手順)
1) 埋め込みターミナル機能を有効にする
設定(Settings)→ 機能(Features) を開き、次を有効にします:
- 埋め込みターミナル(Embedded terminal)
デフォルトの表示位置も選びます:
- 下部パネル(Bottom panel)(大きな画面におすすめ)
- サイドバー(Sidebar)
- 詳細パネル(Details panel)
スマホでは、デスクトップ風のドッキングパネルを画面に並べようとせず、ターミナルに集中した表示になります。
2) セッションからターミナルを開く
- 任意のセッションを開きます。
- セッションのヘッダーで ターミナル(Terminal) をタップします。
接続済みのデーモンに支えられたライブのシェルが開きます。
3) 「セッションまわり」のコマンドに使う
よく使う例:
git statusgit difftail -f <logfile>pnpm dev/npm run dev(その後、検出された URL を開く)
大事な点: コマンドは、現在のセッションの接続済みマシンで実行されます。
4) シェルを失わずにターミナルを移動する
埋め込みターミナルは、セッションが持つ1つのターミナルとして感じられるように作られています。
そのため、別の位置(下部/サイドバー/詳細)にドッキングしても、Happier は同じターミナルセッションを保ちます。
5) プロバイダーのログインフローにも同じターミナル基盤を使う
一貫性のうれしい点です。プロバイダーが Happier 内からネイティブの CLI ログインフローに対応している場合、そのログイン画面は同じ埋め込みターミナルの通信経路を再利用します。
そのため、ターミナルの動き(再接続、クリア/再起動、検出された URL のバナー)を知っていれば、プロバイダーのログイン UI にもなじみやすくなります。
必要条件(満たすべきこと)
ターミナルが開かない場合、ドキュメントでは3つの条件にまとめられています。
- 埋め込みターミナル(Embedded terminal) 機能が有効になっている
- デーモンが動いていて接続されている
- セッションが到達可能なマシンに解決される
マシンがオフライン(またはデーモンが未接続)の場合、ライブのシェルではなくエラー状態が表示されます。
なぜ動くのか(そして何で壊れるのか)
Happier がターミナルをセッションの一部として扱う(別の壊れやすい「リモートターミナルのページ」としてではなく)ので動きます。
壊れるのは:
- デーモンが動いていない
- 別のサーバープロファイルにいる
- セッションが到達可能なマシンに解決できない
よくある間違い
- 機能を有効にしたのにデーモンを忘れる → ターミナルはデーモンに支えられています。
- スマホ上で動くと思い込む → 動くのは接続済みのマシンです。
- 長い対話型の作業に使う → 手早い確認やログに向いています。