harnsy

harnsy Max0.9.0 から

メインのマシンは NAT の内側に置けます。ポートは誰も開けません。

harnsy 0.9.0 から利用できます。ホスト型リレーはベータ版です。

NAT の内側にあるノート PC、自宅のコンピューター、サーバーを、クラスターのメインのマシンにできます。メインのマシンと、リレー経由で参加する各メンバーが、リレーへ外向きに接続し、リレーは両者のあいだでバイトを渡すだけです。NAT の内側のメンバーにリレーは要りません。到達できるメインのマシンへ直接参加します。

あなたのマシン間の TLS

メインのマシンkestrelbill-officeポート開放なし
外へ接続
リレーバイトをコピー · 誰が・いつ・どれだけかが見える
外へ接続
メンバーhome-laptopポート開放なし
NAT の内側のマシンが、リレー経由でクラスターに参加します。サンプルデータです。

双方が外へ接続する。

メインのマシンとメンバーが、それぞれリレーへの接続を開きます。ポートの転送は不要で、どちらのマシンにも公開アドレスは要りません。

リレーはバイトをコピーするだけ。

メンバーのストリームを、メインのマシンがそのために開いたストリームにつなぎ、以後は双方向にバイトをコピーします。読むことも、解析することも、保存することもありません。

TLS は、あなたのマシン同士で通る。

ストリームの中では、クラスター自身の TLS がエンドツーエンドで使われます。メンバーは、参加トークンに入っているピンでメインのマシンの証明書を確認するため、リレーがメインのマシンになりすますことはできません。ピンのないリレー経由の参加は拒否されます。

リレーに見えるものを、正確に。

見えるのは、誰が(メインのマシンのリレー上の ID のハッシュ。当社のホスト型リレーでは、ライセンス ID のハッシュも)、いつ、どれだけ通信したか、です。接続を切ることはできますが、中身を読むことも変更することもできません。ログには1ストリームにつき1行が残ります。ハッシュ化された ID、ネットワーク単位に丸めたクライアントのアドレス(IPv4 は /24、IPv6 は /48)、送受信のバイト数、継続時間、終了した理由です。名前も、メッセージも、トークンも残りません。

要点だけ。

メインのマシンで、マスターにして、リレーをオンにし、harnsy を再起動して、参加用の行を発行します。もう一方のマシンでは、その行を貼り付けます。手順のすべてと、そのとき見えるものは、ガイドにあります。

直接のメンバーとリレー経由のメンバーを同時に。

1台のメインのマシンに、同じネットワークのメンバーとリレー経由のメンバーを同時に持たせられます。

当社のホスト型(ベータ)。

harnsy Max

当社のホスト型リレーはベータ版で、harnsy Max に含まれます。メインのマシンは、ライセンスサービスから、利用のための 1日分の許可であるチケットを受け取ります。専用のキーで使う自前のリレーは計画中で、まだ利用できません。

リレーを使う場面

  • メインのマシンが自宅にある

    家庭用ルーターの内側にあるノート PC や Mac で、公開アドレスはありません。サーバーやほかのマシンはリレー経由で参加し、ポートを開ける必要はなく、ノート PC が別のネットワークへ移っても、メンバーが使うアドレスは変わりません。

    リレーに見えるのは、どのマシンが(ハッシュとして)、いつ、どれだけ通信したかです。メッセージ、トークン、キーは見えません。

    このケースの手順 →

  • 同僚が自分のログインで参加する

    同僚のマシンは、自分の Claude、Codex、OpenCode のログインのまま、リレー経由であなたのメインのマシンに参加します。ログインは同僚のマシンに残り、harnsy Max は同僚自身のキーを使うか、メインのマシンの席を借ります。

    メインのマシンには、エージェント名、ハーネス、状態、フォルダー、メッセージが見えます。ログインとキーは見えません。

    このケースの手順 →

  • 公開アドレスのないサーバー

    サーバー自身がメインのマシンで、ほかから到達できないなら、メンバーはリレー経由で参加します。ポート転送も VPN も要りません。

    メンバーでしかないサーバーにリレーは要りません。到達できるメインのマシンへ直接参加します。

    このケースの手順 →

  • 同じネットワークのメンバーと、そうでないメンバーがいる

    1台のメインのマシンが両方を受け持ちます。同じネットワークのメンバーは直接、それ以外はリレー経由で参加します。

    Nodes の各メンバーの行に経路が出ます:“via relay …” または “direct, port 7789”。

    このケースの手順 →

ステップごとのガイド:リレーでクラスターをつくる

ご自分のケースを選んでください。各ケースに、手順、その後に見えるもの、元に戻す方法をまとめています。ダッシュボードにボタンがあるところはボタンが先で、ターミナルの行は代わりの方法です。リレーは、ほかのマシンから到達できないメインのマシン、たとえば自宅の NAT の内側にあるマシンのためのものです。NAT の内側のメンバーにリレーは要りません。

自宅のマシンがメインのマシン

メインのマシンが自宅のノート PC や Mac、または公開アドレスのないマシンの場合です。サーバーやほかのマシンは、リレー経由でそのマシンに参加します。

  1. メインのマシンにする。

    メインのマシンにするマシンで、ターミナルから一度だけ実行します。ダッシュボードにはこのためのボタンがありません。home は自分で決める名前です。最初にこれを行ってください。下のリレーのコマンドは、メインのマシンでしか動きません。

    harnsy debug cluster init home --master
  2. リレーをオンにする。

    マシンに harnsy Max のキー(ライセンスのページ)が必要です。このコマンドは、当社のホスト型リレー(ベータ版)を使います。

    harnsy debug cluster relay on
  3. このマシンで harnsy を再起動する。

    動作中のメインのマシンは、リレーの設定を起動時にしか読みません。反映するには harnsy を再起動してください。Linux:systemctl --user restart harnsy.service。macOS:launchctl kickstart -k gui/$(id -u)/com.github.butschster.harnsy。Windows:schtasks /End /TN harnsy、続けて schtasks /Run /TN harnsy。

  4. 相手のマシン用に参加用の行を発行する。

    ダッシュボードで Nodes を開き、“Add to the cluster” を選びます。“Node” を選び、マシンに名前を付け(例:server)、権限を設定して、“Master address” は空のままにします。そうすると、行にリレーのアドレスが入ります。“Issue token” を押します。“manage” はメインのマシンのシェルへのアクセスです。自分のマシンにだけ与えてください。

    harnsy debug cluster issue server

    見えるもの “Shown once. Copy it now.” と “Run this on server.” が表示され、その下に harnsy debug cluster init server --join harnsy-relay://… --token <token> の行が出ます。

  5. リレーがつながっているか確認する。

    メインのマシンで Nodes を開きます。リレーのパネルは、参加トークンができ、ライセンスがほかのマシンを許可するまで “waiting” と表示します。ターミナルでは、コマンドがリレーと、メンバーが参加するアドレスを表示します。

    harnsy debug cluster relay

    見えるもの “connected since …”、“address for members”(harnsy-relay://…)、そして “relay access: renews automatically” が見えます。

  6. もう一方のマシンで参加する。

    もう一方のマシンのダッシュボードで Nodes を開き、“Join a master” を選び、行を貼り付けて “Join” を押します。ターミナルで行を実行しても構いません。行は全部貼り付けてください。ピンのない、リレー経由の参加は拒否されます。

    harnsy debug cluster init server --join harnsy-relay://… --token <token>

    見えるもの “Joined … connecting…” と表示されます。メインのマシンでは、メンバーが Nodes の一覧に現れ、その行に “route: via relay …” と出ます。

元に戻すには メンバーを外すには、取り消します(ケース5)。リレーを使うのをやめるには、harnsy debug cluster relay off を実行して harnsy を再起動します。そのあとメンバーには、また直接つながるアドレスが必要です。

↑ ケース

同僚のマシン(その人自身のログイン)

同僚が、自分の Claude、Codex、OpenCode のログインで、あなたのメインのマシンに参加します。ログインは同僚のマシンに残ります。

  1. メインのマシンを用意する。

    ケース1と同じように設定するか、同僚が到達できるアドレスを持つメインのマシンを使います。

  2. 同僚がどの harnsy Max を使うか決める。

    自分の harnsy Max のキーを持つマシンは、席を使いません。持たないマシンは、空きの席があるあいだ、メインのマシンから harnsy Max を借ります。席の数はあなたのキーで決まります。

    見えるもの License の “Seats for connected machines” パネルに、“Taken: 1 of 3.” と出ます。

  3. 同僚のトークンを発行する。

    ダッシュボードで:Nodes → “Add to the cluster”、“Node”、相手のマシンの名前、権限、“Issue token”。必要なものだけ渡してください。read と send です。“manage” はあなたのシェルへのアクセスです。

    harnsy debug cluster issue anna-laptop --scope read,send

    見えるもの トークンは一度だけ表示されます:“Shown once. Copy it now.”

  4. 行を、非公開で渡す。

    その行には秘密であるトークンが入っています。メインのマシンのピンも入っているので、相手のマシンは、話している相手があなたのマシンだと確認できます。

  5. 同僚が参加する。

    相手のマシンで:Nodes → “Join a master”、行を貼り付けて、“Join”。ターミナルで行を実行しても構いません。

    harnsy debug cluster init anna-laptop --join https://<main machine address>:7789 --token <token>

    見えるもの “Connected.” 自分のキーがなく、メインのマシンにも空きの席がない場合は:“Connected. The master has not lent harnsy Max yet: its license may have no free seat.”

  6. 確認する。

    メインのマシンの Nodes の一覧に、同僚のマシンが出ます。席を借りていれば、License で使用中として表示されます。メインのマシンには、相手のエージェント名、ハーネス、状態、フォルダーが見えます。ログインは相手のマシンに残ります。

元に戻すには 同僚のトークンを取り消します(ケース5)。席はすぐ空きます。相手のマシンは、最後の付与が切れるまで、最長3日間 harnsy Max を使えます。

↑ ケース

公開アドレスのないサーバー

何をするかは、サーバーの役割によります。

  1. サーバーがメンバーの場合:直接参加させる。

    メンバーは常に自分から接続し、ポートを開けません。そのため、NAT やファイアウォールの内側のサーバーも、到達できるメインのマシンに直接参加できます。トークンを発行し、ケース2と同じように参加します。

  2. サーバーがメインのマシンの場合:リレーを使う。

    サーバー自身がメインのマシンで、ほかから到達できないなら、ケース1と同じように設定します。メンバーはリレーのアドレス経由でそれに参加し、ポートは開きません。

元に戻すには ケース1またはケース5と同じです。

↑ ケース

直接のメンバーとリレー経由のメンバーを1台のメインのマシンに

同じネットワークにいるメンバーと、いないメンバーがいます。1台のメインのマシンが、両方を同時に受け持ちます。

  1. ケース1と同じようにリレーを設定する。

    ケース1の手順1と2です。再起動はこの次です。

  2. 直接のメンバーのためにクラスターのポートを開く。

    これが必要なのは同じネットワークのマシンだけです。リレー経由のメンバーしかいないメインのマシンには、開いたポートは要りません。クラスターのアドレスを付けて、インストーラーをもう一度実行します。サービスが書き換えられて harnsy が再起動します。これはリレーの設定に必要な再起動も兼ねます。0.0.0.0 はこのマシンのすべてのアドレスを意味します。自分のネットワークだけにポートを開くには、そこでのマシンのアドレス(例:192.168.1.10:7789)を指定します。このポートは、それ自身で TLS を提供します。

    harnsy install --cluster-addr 0.0.0.0:7789
  3. リレー経由のメンバーのトークンを発行する。

    “Master address” は空のままにします。行にリレーのアドレスが入ります。

    harnsy debug cluster issue far-laptop
  4. 直接のメンバーのトークンを発行する。

    “Master address” に、自分のネットワーク上でのメインのマシンのアドレスを入れます。

    harnsy debug cluster issue office-pc --url https://<main machine address>:7789
  5. 各マシンに、それぞれの行で参加させる。

    ケース1の手順6と同じです。それぞれのマシンで行います。

    見えるもの Nodes の各行に経路が出ます:“via relay …” または “direct, port 7789”。

元に戻すには メンバーを取り消します(ケース5)。

↑ ケース

メンバーを外す

マシンをクラスターから外したい場合、またはトークンが漏れたかもしれない場合です。

  1. そのトークンを探す。

    メインのマシンで:Nodes → メンバーのトークンの横の “revoke”。これで完了です。ターミナルでは、先にトークンの一覧を出します。

    harnsy debug cluster tokens
  2. ターミナルで、番号を指定して取り消す。

    番号は一覧から取ります。

    harnsy debug cluster revoke <id>

    見えるもの ダッシュボードで取り消すとメンバーの接続はすぐに閉じ、ターミナルからでは20秒以内に閉じます。そのメンバー宛てに溜まっていたものは破棄されます。席はその時点で空きます。License の使用中の数が1つ減ります。harnsy Max を借りていたメンバーは、最後の付与が切れるまで、最長3日間それを使えます。

元に戻すには 再度参加するには、メインのマシンで新しいトークンを発行し、メンバー側では Nodes タブで “Re-join” を選ぶか、表示された harnsy debug cluster init … --join … --token … --force を実行します。

↑ ケース

キーで有効になります。

ライセンスページで harnsy Max のキーを追加すると有効になります。

キーを申請 →

harnsy と harnsy Max の違いは? →

できないことも、正直に

  • メインのマシンがオフラインの間も、メンバーはローカルで作業を続け、戻るまでメッセージを保持します。
  • リレーは何も見えないわけではありません。誰が、いつ、どれだけ通信したかを知っていて、それをログに残します。接続を切ることはできますが、中身を読むことも変更することもできません。
  • ホスト型リレー(ベータ)には harnsy Max のキーが必要です。自前のリレーは計画中です。

最初のチームは、ひと言で始められます。

インストールはエージェントへのひと言で済みます。エージェントを代わりに開くため、harnsy は端末を操作します。Linux と macOS では tmux、Windows では独自の端末ホストです。

https://harnsy.dev/llms.txt の手順に従って harnsy をインストールして
site-3fリード · Claude Codeライブ閲覧のみ
❯ チームと #42 の計画を立てて。

analyst-7a の分析を待っています…

analyst-7a から harnsy 経由で❯ #42 の分析完了:24時間後のリトライを含む受け入れ基準3つ。

#42 を site-9a に渡します。

❯