サーバのエージェントに、
Macから応答。
エージェントはサーバで動き、あなたはMacの前にいる。サーバを一度接続すれば、そのセッションにもローカルのものと並んでノッチに行ができます。リクエストもコストも表示され、クリックすれば目的のタブへ。このガイドでは、セットアップの方法、Gnistaがサーバに置くもの、できないことを説明します。
更新:
手短に言うと
Gnistaの設定 ▸ リモートで「接続」をクリックし、ssh設定にあるホストを選びます。Gnistaはヘルパーをそこにコピーし、見つかったエージェントをすべて接続して、自分のsshで接続を1本開いたままにします。そのセッションは、マシン名つきでノッチに表示されます。
はじめる前に
- Mac上のGnista(macOS 15以降)。
- x86_64かarm64のLinuxサーバ、または「リモートログイン」をオンにしたMac。
- ログインするユーザで、そこにインストールしたエージェント。Claude Code、Codex、Gemini CLI、OpenCode、Copilot CLIなど、GnistaがMac上で接続するものならどれでも。
~/.ssh/configにそのマシンがあること。何も入力せずに使える鍵がいちばん簡単です。ログインにパスワードやコード、鍵の承認が必要なら、GnistaがTerminalで一度だけ求めます。
ssh設定
このようなエントリがあれば十分です。Gnistaはssh設定の内容をすべて使うので、ポート、ユーザ、鍵、ProxyJump、そしてCoder、Codespaces、DevPodが追加するホストも、Terminalと同じように動作します。
Host devbox
HostName devbox.example.com
User dev
IdentityFile ~/.ssh/id_ed25519接続を確認する
ssh devbox uname -smLinux x86_64、Linux aarch64、Darwin arm64のいずれかが表示されれば問題ありません。ホスト鍵を信頼するか聞かれたら、そこで一度答えてください。
サーバを接続する
- Gnistaの設定 ▸ リモートを開きます。「接続」をクリックし、ホスト(ここでは
devbox)を選びます。ssh設定にないホストなら、「その他のホスト…」を選んで入力します。 - Gnistaは
unameでシステムを確認し、そのシステム用のヘルパーをそこの~/.gnistaにコピーして、変更されずに届いたかを確認します。続いて、見つかったエージェントそれぞれに自分のフックを追加します。 - マシンの行に、接続した数が「接続済み、エージェント 2 個」のように表示されます。ポインタを合わせると、その名前がわかります。
- 行に「ログインが必要です。」と表示されたら、「ログイン」をクリックします。Terminalが開くので一度ログインすれば、Gnistaの接続はそのログインを通ります。
- サーバでセッションを始めます。ノッチに行が現れ、プロジェクトの横にサーバ名が表示されます。
できること
- セッションごとに1行。ローカルの行ならアプリが表示される位置に、マシン名が表示されます。ポインタを合わせると「devbox上(SSH経由)」。
- リクエストはノッチに。エージェントが確認を求めると、ローカルのセッションと同じく、ノッチがリクエストとともに開きます。設定 ▸ 一般で「Gnistaでリクエストに応答」をオンにしていれば、そこで応答できます。この設定は、Gnistaがサーバ側にも合わせます。
- 詳細。タイトル、最新のメッセージ、そしてトークンとコスト。それを記録するエージェントについて、サーバ上で読み取ります。
- 目的のタブへ。クリックすると、エージェントが通ってきたssh、mosh、Eternal Terminalを開いているMac上のターミナルのタブが前面に出て、そこのtmuxのペインも表示します。VS Code、Cursor、Windsurf、Zedのリモートウインドウならそのウインドウへ。Claude DesktopがSSH越しに始めたセッションなら、そのチャットへ。
- ログインは一度だけ。セットアップも、接続も、クリックも、1本のssh接続を共有します。Duoのプッシュや鍵の承認は、毎回ではなく一度だけです。
- 途切れても戻る接続。接続が切れても、スリープやネットワークの変更のあとでも、Gnistaは自動で再接続します。そのあいだ行は残り、マシンには「現在接続できません。」と表示されます。
セキュリティツールがトンネルを警告するなら
各マシンの⋯メニューに「接続」の設定があります。たいていのサーバには「自動」が合います。「転送なし」は、フックのメッセージをフォワードではなく通常のsshコマンドで送ります。「自分の ssh 経由」では、Gnistaは自分の接続を持ちません。「設定」でヘルパーを一度インストールし、ssh設定に加えるRemoteForwardの行を表示するので、自分のsshセッションがエージェントのイベントを運びます。IT部門の方へ:セキュリティとプライバシー。
複数のMacから
同じサーバを、それぞれのMacから接続します。そこにはMacごとに専用のソケットができ、どのMacにもそのセッションが表示されます。リクエストには、最初に届いた応答が採用されます。1台のMacで「接続解除」しても、ほかのMacのためにGnistaはサーバに残ります。
Gnistaがサーバに置くもの
| サーバ上 | 内容 |
|---|---|
~/.gnista/bin/gnista | フックが実行する、Gnistaのヘルパー。依存関係のない単一のファイルで、エージェントとモデルのファイルは~/.gnista/Resourcesにあります。 |
~/.gnista/settings.json | ノッチからの応答を待つかどうか。Macの「Gnistaでリクエストに応答」の設定です。 |
~/.gnista/sockets/ | サーバ側の接続の端。Macごとに1つで、アクセスできるのは自分のユーザだけです。 |
Each agent’s settings | Mac上と同じく、そのフック。Claude Codeなら~/.claude/settings.json、Codexなら~/.codex/hooks.json、といった具合です。 |
接続が始まるたびに、Gnistaはこれらを最新にします。Gnistaのアップデート後は新しいヘルパーを、あとからインストールしたエージェントにはフックを。フックを追加する前にエージェントの設定をバックアップし、既存のフックはそのまま残します。
仕組み
Gnistaはマシンごとに、Mac上にソケットを開き、そこへのリバースフォワードをつけて自分のsshを実行します。そこのフックは、この接続を通してMac上のGnistaとやり取りします。要するに、次のとおりです。
ssh -N -o ControlMaster=yes -R /home/dev/.gnista/sockets/<this Mac>.sock:<a socket on your Mac> -- devboxサーバがソケットをフォワードしない場合は、代わりにサーバのループバックのポートをフォワードします。その接続はどれも、そこであなたのアカウントだけが読めるパスワードで始める必要があります。何もフォワードしない場合は、ヘルパーがフックのメッセージを通常のsshコマンドで運びます。
行に表示されるサーバ名は、サーバの申告ではなく、イベントがどの接続を通って届いたかで決まります。そのため、あるサーバが別のサーバになりすますことはできません。接続が切れているときは、フックはGnistaを見つけられずにすぐ戻り、エージェントはいつもどおりターミナルで確認を求めます。
Linux用のヘルパーは、Gnistaのバージョンとプロセッサごとに一度、GitHub上のGnistaの公開ダウンロードから取得します。そのバージョン用にGnistaの鍵で署名されている場合だけ、Gnistaはそれを使います。Macには、署名と公証を済ませたヘルパーを手元のGnistaから送ります。
トラブルシューティング
- 「sshのメッセージ:…」ssh自身が最後に出したメッセージです。同じホストで上の確認を実行してから、もう一度「接続」をクリックしてください。
- 「ログインが必要です。」「ログイン」をクリックし、Terminalでログインしてください。1Passwordの場合、その確認がほかのウインドウの後ろで待っていることがあります。行にポインタを合わせると、sshのメッセージがわかります。
- 「現在接続できません。」行にポインタを合わせると、sshのメッセージがわかります。Gnistaは間隔を少しずつ空けながら、試し続けます。
- 「Gnista が接続できるのは Linux マシンと Mac です。このマシンは「…」です。」ホストがほかのシステムで動いていて、Gnistaは接続できません。
- 「GnistaはLinux用のヘルパーをダウンロードできませんでした。Macがオンラインか確認して、もう一度お試しください。」このバージョン用のヘルパーをサーバが初めて必要とするとき、Macからgithub.comに接続できる必要があります。
- 「ヘルパーが途中で変更されて届いたため、Gnistaは使用しませんでした。」もう一度「接続」をクリックしてください。
- 「接続済みですが、Gnistaが接続するエージェントはありません。」同じユーザで、サーバにエージェントをインストールしてください。次に接続が始まったとき、または「接続解除」してから「接続」すればすぐに、Gnistaが接続します。
- 「すでに接続している … と同じアカウントです。」ssh設定の2つの名前が、同じアカウントにつながっています。どちらか1つにしてください。
- セッションが表示されない。マシンの行が「接続済み」になっているか確認し、新しいセッションを始めてください。すでに実行中だったセッションには、Gnistaのフックがないことがあります。
- 「組織によってオフにされています。」Macが管理されていて、
RemoteMachinesAllowedがオフになっています。IT部門に問い合わせてください。
Gnistaを使わない
- ターミナルの通知:Claude Code自身の通知はターミナルのエスケープコードなので、ssh越しにiTerm2など、それを表示できるターミナルまで届きます。わかるのは何かが起きたことだけで、どのサーバのどのセッションかはわからず、応答はタブで行います。
- tmuxのベル:
monitor-bellと、ベルを通知に変えるターミナルを使います。無料で、制限は同じです。 - ntfyなど、スマートフォン向けの通知サービスに送るフック。どこにいても届きますが、書くのも保守するのも自分で、応答するにはやはりターミナルに行く必要があります。
制限
- サーバのroot権限を持つ人は誰でもソケットに届くので、あなたの承認に応答できます。信頼できるサーバだけを接続してください。
- ノッチからの返信とプランの上限は、Mac上のセッションのためのものです。サーバの行にはありません。
- 「接続解除」すると、ほかのMacがまだ使っていない限り、Gnistaのフックと
~/.gnistaがサーバから削除されます。そのときサーバに接続できなければフックは残りますが、Gnistaがなければ何もしません。 - コンテナやKubernetesのポッドの中のエージェント:コンテナのエージェント。
- 組織は、管理するMacでリモートマシンをオフにできます:MDMでの設定。Gnistaが何をどこへ送るか:プライバシー。
- 7日間無料、その後は€19の買い切り。詳しくはClaude Code、Codex、Gemini CLI、OpenCodeへ。
ほかのガイド。
Claude Codeの通知を、
Macで。Claude Codeが終わったか、対応待ちかが、Macのどこにいてもわかります。
Codexの通知を、
Macで。Codexが終わったか、コマンドを実行したがっているかが、ターミナルを見張らなくてもわかります。
Claude Codeのリクエストを、
切り替えずに承認。コマンドや編集を、ノッチから許可または拒否。そのまま元の作業へ。
Claude CodeとCodexの上限を、
ひと目で。Claude CodeとCodexの5時間ごとと週ごとの上限を、セッションの下に。
Xcodeのエージェントを、
ノッチの中に。XcodeのClaude、Codex、Antigravityの出番が、Xcodeを前面に出しておかなくてもわかる。
コンテナのエージェントも、
すぐ手の届く所に。devcontainerやKubernetesのポッドの中のClaude CodeやCodexも、リクエストはノッチに届きます。