行き止まりの道の奥の家には、通り抜ける人が来ない

行き止まりの道の奥の家には、通り抜ける人が来ない

行き止まりの私道の、いちばん奥の家。窓は開いていて、自転車が出したままになっています。

用のない人が通りません。その道は、そこに行く人しか入らない道だからです。鍵を強くしたのではなく、たどり着くまでに理由が必要な場所に建っています。

同じ家が表通りに面していたら、まったく違う暮らしになります。門を閉めて、鍵を増やして、夜は雨戸を引く。守る量が変わるのは、家が変わったからではなく道が変わったからです。

守りの要る量は、どういう道の先にあるかで決まります。

カフェの窓際で

土曜の午後、カフェの窓際の席。ノートパソコンを開いて、ブラウザのアドレス欄に localhost:34567 と打ち込みます。

画面に九つのマスが並んだ格子が出てきて、そのうち三つで AI がコードを書いています。一つは考え中。一つはこのファイルを消していいですかで止まっていて、枠が琥珀色に光っている。

そのとき、二つ隣のテーブルの人も同じ店の Wi-Fi につながっています。その人が自分のノートを開いて、こちらのパソコンのアドレスを打ち込んだら、画面に何が出るでしょうか。

MulmoTerminal は AI を何枚ものマスに並べて見張るための画面で、npx の一行で立ち上げてブラウザで開きます。無料で、オープンソースとして公開されています。

結論から言うと、見えません。繋がりもしません。ただ、その理由がたまたまではないことを知っておく価値があります。

この不安は、ブラウザで動くことから来ている

ターミナルだけで作業しているうちは、あまり気にしません。黒い画面はそのパソコンの中の話なので。

ブラウザで開く道具に変えた瞬間に、これが気になり始めます。ブラウザで開くということは、どこかがポートを開けているということなので。

しかも AI が入っている画面です。自分のプロジェクトのファイル名、会話の中身、直しかけのコード。それが同じ店の Wi-Fi から見えていたら、かなりいやです。

届いてしまったら、隣の席の人に何ができたか

もし繋がったとしたら、その人はまず九つのマスを眺めることになります。どのプロジェクトを開いているか、枝の名前、AI とのやりとり。

それだけでも十分いやですが、本題はその先です。

空いているマスに、その人は新しいターミナルを開けます。そこで打つコマンドは、こちらのパソコンで、こちらの権限で動きます。鍵のファイルを読むのでも、外へ送るのでも、消すのでもかまいません。

ガイドは、ソケットを開ければ、会話の閲覧も、その作業フォルダの下のファイルの閲覧も、ターミナルの起動もできてしまうと書いています。

三つ目が決定的です。ポートに届くことが、そのパソコンのシェルを手に入れることと同じになっています。

ログイン画面があれば話は違います。でもこのアプリにログインはありません。入口そのものが無いので、届かせないことが唯一の守りになっています。表通りに面していない家に建てる、という選択です。

いまどうなっているか

      あなたのパソコン                   同じ Wi-Fi の他の人
  ┌──────────────────────┐
  │  MulmoTerminal       │
  │  127.0.0.1:34567 ←───┼── あなたのブラウザ  ○ 見える
  │                      │
  │                  ✕───┼── 隣の席のノート    ✕ 届かない
  └──────────────────────┘
        待ち受けているのは「このパソコンの中」だけ

localhost は、このパソコン自身を指す住所です。127.0.0.1 とも書きます。外からは届きません。

届いてしまう設定にすると、こうなります。

  ┌──────────────────────┐
  │  MulmoTerminal       │
  │  0.0.0.0:34567 ←─────┼── あなたのブラウザ  ○
  │                  ←───┼── 隣の席のノート    ○ ← ここで新しい
  └──────────────────────┘        ターミナルを開ける

右下が、この記事の全部です。

一番狭いところで待っている

サーバーは自分のパソコンの中からしか応答しません。隣の席どころか、同じ家の別の部屋からも繋がりません。

これで盗られる経路が一本消えます。Wi-Fi に何人いても、ポートを探して回るプログラムが動いていても、届きません。

冒頭の不安に対する答えは、何かを設定したから安全なのではなく、何も設定しなかったから安全です。触っていないなら、そのままで正しい。

どうしても外から開けたいなら、二か所

意図して外に出すこともできます。

一つ目は、どこで待ち受けるかを変えることです。

設定する値 誰が届くか
127.0.0.1(既定) このパソコンだけ
0.0.0.0 全部のネットワークから
特定のアドレス そのネットワークだけ

二つ目は、どのページから繋いでよいかを足すことです。

MULMOTERMINAL_ALLOWED_ORIGINS=http://192.168.1.10:34567

一つ目だけ変えても動きません。両方を自分で書かないと外に出ないので、うっかり全開にはなりません。一か所間違えて全開になる、という作りにはなっていません。

localhost と書いたのに、で油断できない理由

MULMOTERMINAL_HOST=localhost と書くと、いかにも安全そうに見えます。

ところが localhost がどのアドレスを指すかは、パソコンの中の hosts というファイルで書き換えられます。そこで 0.0.0.0 に向けておけば、設定には localhost と書いてあるのに全開です。

MulmoTerminal はここを取り違えません。判定に使うのは設定に書かれた文字列ではなく、起動して実際に束縛されたアドレスです。それが 127.0.0.1 でなかったら、起動時に警告を出します。

警告を出す理由も、考えると当たり前です。ポートが外に開いていることは、誰も来ていないあいだは何の症状も出しません。動作は完全に正常です。気づけるのは、ネットワークを調べたときか、何かが起きたあと。後者では遅いので、起動のたびに言う。

自分の設定がいま安全かどうかどこで分かるのか、への答えがこれです。起動時のメッセージに何も出ていないなら、外には出ていません。

スマホから見たいなら、別の道がある

外から見たいの中身がスマホなら、ポートを開ける必要はありません。

MulmoTerminal には RemoteHost という別の経路があります。Google アカウントでサインインして、スマホ側は mulmoserver というサイトを開く形です。そちらには認証があります。

しかも、できることは通知を受けるだけではありません。AI がこのコマンドを実行していいですかで止まっているときに、外出先から yes と返して続行させられます。

選択肢はこうなります。スマホから見たいなら RemoteHost で、認証があります。同じ家の別のパソコンから見たいならポートを開けることになって、そこに認証はありません。

後者を選ぶなら前提が一つあります。そのネットワークにいる全員を信用できること。カフェの Wi-Fi では、選ばないほうがいいです。

使ってみる

MulmoTerminal は、次の一行で立ち上がります。ターミナル(Windows なら PowerShell、Mac ならターミナル)を開いて、そのまま貼り付けます。

npx mulmoterminal@latest

ブラウザが開いて http://localhost:34567 が表示されれば成功です。インストールという作業はなく、合わなければ閉じるだけで終わります。止めるときは、打ったターミナルで Ctrl + C を押します。

動かない場合、足りないものは次の二つのどちらかです。

確かめ方 無ければ
Node.js 22.12 以上 node -v nodejs.org/ja/download の LTS。入れたらターミナルを閉じて開き直す
Claude Code claude --version macOS は curl -fsSL https://claude.ai/install.sh | bash、Windows は irm https://claude.ai/install.ps1 | iex。そのあと claude でログイン

Claude Code は、AI をターミナルから使うためのコマンドです。使うには Claude の有料プラン(Pro / Max / Team / Enterprise)か API のアカウントが必要で、無料プランには含まれていません。MulmoTerminal 自体は無料で、AI の使用量はその契約から引かれます。

いまの状態を確かめるには、起動したターミナルの最初に出るメッセージを見ます。何も警告が出ていなければ、外には出ていません。それが既定です。外に出ている場合は、起動時に警告が出ます。他に気づく手段が無いためです。

意図して外に出すときは、環境変数を二つ付けて起動します。一つだけでは動きません。

MULMOTERMINAL_HOST=0.0.0.0 \
MULMOTERMINAL_ALLOWED_ORIGINS=http://192.168.1.10:34567 \
npx mulmoterminal@latest

192.168.1.10 は、自分のパソコンのアドレスに置き換えます。mac なら ipconfig getifaddr en0 で出ます。

繰り返しますが、そのネットワークにいる全員を信用できるときだけにしてください。

スマホから見たいだけなら、ポートを開ける必要はありません。ツールバーの RemoteHost を開いて、Connect で Google アカウントでサインインします。スマホ側は mulmoserver.web.app を開いて、同じアカウントでサインインします。こちらには認証があります。

元に戻すのは簡単です。外に出す設定は起動のときに環境変数を付けただけなので、付けずに起動し直せば戻ります。設定ファイルには何も書かれていないので、消すものもありません。

まとめ

行き止まりの道の奥の家は、鍵が強いから安全なのではなく、用のない人が通らない道の先にあります。守りの要る量は、どういう道の先にあるかで決まります。

MulmoTerminal にログイン画面が無いのは手抜きではありません。ポートに届くことがそのパソコンのシェルを取ることと同じなので、届かせないほうを守りにしています。

広げるには二か所を自分で書く必要があって、広げたら起動のたびに警告が出ます。スマホから見たいだけなら、認証のある別の経路があります。

この記事をシェア

関連記事

記事一覧に戻る