04/Documentation
Windows 上の Collie
Herdr を使用する Windows 11: サポート範囲、install.ps1 によるインストール、未署名バイナリ、アップデート、長いパス、テスト対象外の事項
Windows 11にCollieをインストールし、スマートフォンで開き、問題が発生した場合に対処する方法です。Collieは設計上マシンへのリモートシェルアクセスを提供するため、最初にセキュリティをお読みください。
LinuxとmacOSでは、collie startがTailscale Serveを使ってCollieをスマートフォンに自動公開できます。Tailscaleは、所有するデバイス同士をtailnetと呼ばれるプライベートネットワークに接続するサービスです。
Windowsでは、Collie自身による自動公開は行われません。Tailscale Serveを使うとtailnet上でCollieにHTTPSアドレスが割り当てられます。Windowsではこの手順を手動で実行します。手順はスマートフォンからのアクセスに記載されています。
実験的。 実験的とは、メンテナーがWindowsコードを管理およびテストしており、以下の項目がすべて実証されているわけではない状態を意味します。現状のステータスは以下のとおりです。 検証済み - Windows 11仮想マシン上での、リリースファイルのローカルコピーを用いた25ステップのインストール、アップデート、ロールバックのリハーサル。 - Windows 11仮想マシン上での、公開v1.16.0リリースからの実際のインストール:install.ps1がリリースを検出し、sha256が一致してcollie.exeが実行されました。その後、collie start、collie status、collie doctor、collie stopが動作しました。 - Headscale tailnet上でTailscale Serveを介したHTTPによるスマートフォンアクセス: Hostチェック、collie url、ペアリング、書き込みゲート。 未検証 - Windows上での2つの実リリース間でのアップデート。 - Windows上でのTailscale ServeのHTTPS利用、およびそれに伴うホーム画面へのインストール、Web Push、マイク。 - Windows 10、Windows Server、Windows on ARM、およびテストされていない項目内のその他の項目。 今後のリリース確認にはWindows用zipが必須になります。メンテナーのみがLinuxのホットフィックスのためにこれを上書きできます(詳細)。
提供される機能
Collieはターミナル内のエージェントをスマートフォンに表示します。どのエージェントが応答を求めているかを確認し、返答できます。
エージェントはHerdrのペインで実行されます。ペインはHerdr内の1つのターミナルウィンドウです。Herdrはターミナルマルチプレクサであり、各ペインでエージェントを実行し続けるプログラムです。WindowsでサポートされているマルチプレクサはHerdrのみです。
CollieはClaude Code、Codex、OpenCode、pi、ompなどのエージェントを読み取ります。エージェント自体がWindows上で動作する必要があります。どのエージェントが動作するかはエージェント側の問題であり、Collieの問題ではありません。
始める前に
必要なものは以下のとおりです:
- PowerShell。 Windows 11に標準搭載されているWindows PowerShell 5.1で十分です。
- Windows用Herdr 0.9.3以降。 以下のステップ1でインストールされます。HerdrプロジェクトがWindowsビルドを作成しており、Collieはそれに依存しています。
- スマートフォン(ブラウザを搭載したiPhoneまたはAndroidスマートフォン)。
- 無料のTailscaleアカウント。 Tailscaleアプリに初めてサインインするときに作成します。PCとスマートフォンの両方で同じアカウントにサインインする必要があります。スマートフォンはこのアカウント経由でPCにアクセスします。ステップ6で設定します。
スマート アプリ コントロールが有効になっているか確認してください。collie.exeがブロックされる可能性があります。Windows セキュリティを開き、アプリとブラウザーのコントロール、スマート アプリ コントロールの設定の順に選択します。設定には3つの状態があります:
| 状態 | 今回のインストールにおける意味 |
|---|---|
| 無効 | 何もブロックされません。 |
| 評価中 | Windows が有効にするかどうかを判定している段階です。テスト用 VM では Collie はブロックされませんでした。 |
| 有効 | ファイルが署名されておらず、ファイル単位の許可もないため、collie.exe がブロックされる可能性があります。 |
有効になっている場合は、まず 未署名のバイナリ を確認してください。選択肢が記載されています。
セットアップからスマートフォンでの利用まで
次の手順を順番に実行してください。手順一覧の後に、各ステップの実行結果として表示される内容を記載しています。実行前にインストーラースクリプトを確認するには、インストール を参照してください。
- Herdr を専用インストーラーでインストールし、バージョンを確認します:
irm https://herdr.dev/install.ps1 | iex herdr --version
- Collie をインストーラーでインストールします:
irm https://colliepwa.dev/install.ps1 | iex
- 新しいターミナルを開き、そこで Herdr を起動して開いたままにします:
herdr
- 2 つ目のターミナル、または新しい Herdr ペインを開き、Collie を起動してそのアドレスを表示します:
collie start collie url
- Herdr ペインで、Claude Code などのエージェントを起動します:
claude
- スマートフォンからのアクセス でスマートフォンからのアクセス経路を設定します。このプロジェクトは Windows 上では HTTP 経由でのみ実行されます。
tailscale serveコマンドを実行する前はこの PC からのみ Collie にアクセス可能で、実行後はペアリングするまで tailnet 上のすべてのデバイスからアクセスできるようになります。
- PC で以下を実行してスマートフォンをペアリングします:
collie pair
各ステップで表示される内容:
- Herdr のインストーラー出力が表示されます。
herdr --versionで 0.9.3 以降が表示されます。インストーラーは Herdr プロジェクトが管理しているため、このページには独自の Herdr コマンドはありません。失敗した場合は、herdr.dev を開いて Windows 向けの手順に従ってください。 - スクリプトが各ステップを出力します。末尾には
OK Collieで始まる行と次のステップの一覧が表示され、まずNext steps. This script does not take them for you:、続いて1. Open a NEW terminal window.、3. Start Collie, then print its address:の順に並びます。スクリプトを事前に確認したい場合は、インストール を参照してください。サービスは起動せず、バックグラウンドで残り続けるプロセスもありません。スクリプトは、Windows が実行を許可するか確認するために
collie.exe versionを 1 回実行するだけです。 - Herdr が起動し、そのターミナルを占有します。インストール後に追加された新しい PATH はそれ以降に開いたウィンドウにのみ適用されるため、新しいターミナルが必要です。
- Herdr が最初のターミナルを使用しているため、2 つ目のターミナルが必要です。
collie startを実行すると、Collie は実行中です バナーと、Collie がここでは front door を公開していない旨のメッセージが表示されます。front door とは、スマートフォンがアクセスする Collie 手前の HTTPS アドレスです。このメッセージは Windows では想定内であり、ステップ 6 でその設定を手動で行います。Tailscale のインストール前は、標準エラー出力にerror: 'tailscale status' named no host for this nodeも表示されます。この行も現時点では想定内であり、ステップ 6 の完了後に表示されなくなります。 - ペイン内でエージェントが起動します。Collie のダッシュボードにそのエージェントが表示されます。
tailscale serve statusに tailnet アドレスが表示され、collie urlがそれを出力します。このステップを実行する前は、collie urlにこの PC からのみアクセス可能なループバックアドレス(127.0.0.1)が表示されることがあります。この PC のブラウザでそのアドレスを開いてダッシュボードを確認できます。- スマートフォンに Collie のダッシュボードが表示されます。ユーザーの操作待ちのペインが先頭に表示されます。
collie pairは 8 文字のコードを出力し、続いてsingle-use · expires <time> (10 minutes)のような行、最後に QR コードを表示します。スマートフォンのホーム画面から開いたアプリ内の Collie にそのコードを入力します。これでスマートフォンのペアリングが完了します。
インストール
install.ps1 の動作内容と変更可能な項目。
irm https://colliepwa.dev/install.ps1 | iexスクリプトを実行前に確認するには、保存して開き、ファイルとして実行します。
Invoke-WebRequest -OutFile install.ps1 https://colliepwa.dev/install.ps1
notepad install.ps1
powershell -ExecutionPolicy Bypass -File .\install.ps1install.ps1 には Bun も Git も bash も不要です。最新の5つのリリースを確認し、Windows用のzipを含む最初のリリースを取得してsha256を検証し、不一致があれば停止します。sha256はファイルのフィンガープリントです。スクリプトは各手順を出力し、管理者権限を要求しません。zipを含むリリースがない場合、後述 で停止します。
Windowsでスクリプトの実行可否を決める既定の実行ポリシー(Restricted)は、ダウンロードしたスクリプトファイルを拒否します。「事前に確認する」手順の最後の行は、その1回の実行のみ Bypass を設定します。Unblock-File .\install.ps1 はもう1つの方法です。irm ... | iex の形式はスクリプトのテキストを直接実行するため、この設定は不要です。
このスクリプトはリリースを %LOCALAPPDATA%\collie\versions\<version> に配置し、ジャンクション current をそこへ向け、ユーザーの PATH に current\bin を追加します。ジャンクションはWindowsのフォルダーリンクであり、current は常に実行中のバージョンを指します。スクリプトはWindowsによる実行許可を確認するため、collie.exe version を1回実行します。それ以外は何も起動しません。2回目の実行では何も変更されず、collie update を指したままになります。
| 変数 | 効果 |
|---|---|
COLLIE_DIR | インストール先。デフォルトは %LOCALAPPDATA%\collie です。短いパスにしてください。 |
COLLIE_TAG | 特定のリリース(例: v1.16.0)をインストールします。 |
COLLIE_UPDATE_REPO | ダウンロード元の GitHub リポジトリ。デフォルトは AltanS/collie です。 |
COLLIE_NO_PATH_EDIT=1 | PATH を変更しません。<COLLIE_DIR>\current\bin\collie.exe を実行してください。 |
このzipはGitHubの各リリースベージにも、対応する .sha256 ファイルと並んで配置されています。zipの手動インストールではなく、スクリプトを使用してください。
collie start は herdr.collie という名前のタスクスケジューラタスクを登録します。タスクスケジューラは、指定した時刻やイベントでジョブを実行するWindowsのプログラムです。このタスクは、管理者権限を持たない制限付きトークンを使用して、ログオン時にCollieを起動します。
タスクはランチャーを実行します。これはブリッジがエラーで終了した場合に再起動する小さなプログラムです。ブリッジはPC上で動作し、スマートフォンへウェブページを配信するCollieのプログラムです。
スマートフォンからのアクセス
「ゼロからスマートフォンまで」の手順6の完全版です。LinuxやmacOSでの手順を手動で実行する形になります。このプロジェクトでは、Windows上でHTTPを使用し、Headscale tailnet(Headscaleはセルフホスト型のTailscaleサーバー)環境にて、デスクトップブラウザをスマートフォンサイズにして一度実行確認を行いました。後述のHTTPS形式は実行しておらず、実機のスマートフォンやエージェントも使用していません。手順でエラーが発生した場合は報告してください(場所)。
注意。 (後述のステップ3の)tailscale serveコマンドの実行からデバイスをペアリングするまでの間、Collieはtailnet上の全デバイスに公開され、ペインの閲覧や入力が可能な状態になります。このコマンドを実行する前は、このPCのみがCollieにアクセスできます。直後にスマートフォンの手順とcollie pairを実行してください。tailnetを他のユーザーと共有している場合は、直ちにペアリングを行い、Collieへのアクセス制限方法について セキュリティ を確認してください。
- PC上で新しいターミナルを開き、Collieのローカルポート(既定では8787)をtailnet上に公開します。
tailscale serve --bg --set-path=/ 8787
- Collieの設定フォルダーが存在しない場合は作成し、その
.envファイルを開きます。New-Item -ItemType Directory -Force "$env:APPDATA\herdr\plugins\config\herdr.collie" notepad "$env:APPDATA\herdr\plugins\config\herdr.collie\.env"
- ファイルの末尾に、ステップ3で確認した独自の名前を含む以下の2行を追加して保存します。
COLLIE_PUBLIC_HOSTS=myhost.tail1234.ts.net COLLIE_PUBLIC_URL=https://myhost.tail1234.ts.net
- ブリッジを再起動し、アドレスを表示します。
collie restart collie url
CollieはこのPC上でのみリッスンし、このPCからしかアクセスできないループバックアドレスを使用します。LinuxおよびmacOSでは、collie start が自動的にTailscale Serveを実行します。「マネージドフロントドア」とは、Collieが自身でアドレスを公開することを意味します。Windowsでは collie start はそれを行わないため、Tailscale Serveを手動で実行します。
ステップ3で、Tailscaleは https://myhost.tail1234.ts.net のようなアドレスを含む行を出力します。名前は https:// の後の部分です。これをコピーしてください。tailscale serve status でも同じアドレスが表示されます。
https://myhost.tail1234.ts.net (tailnet only)
|-- / proxy http://127.0.0.1:8787このコマンドは、LinuxおよびmacOSで collie start が自動実行するものと同じです。--set-path=/ は、このPCがtailnet上の / で既に提供しているすべての内容を置き換えます。
注。 Headscale tailnetでは、HeadscaleがHTTPS証明書を発行しないため、ステップ3のHTTPSコマンドはerror enabling https feature: error 501 Not Implementedで失敗します。公開するまで、collie doctorはfront-door行で警告を出力します:this tailnet has no HTTPS certificates, so an https front door cannot be published。その環境では、プロジェクトがWindowsで検証した形式であるHTTP経由で公開します:tailscale serve --bg --http=80 --set-path=/ 8787。tailnetのポート80で公開されるため、アドレスはポート番号のないhttp://<name>になります。COLLIE_PUBLIC_URLではそのhttp://アドレスを使用してください。このコマンドの実行後、front-door行は成功します。1.16.0では警告が出たままになります。Tailscaleがtailnetデバイス間の通信を暗号化(WireGuard)し、HTTPホップがtailnet内に留まるため、ここではプレーンHTTPでも問題ありません。tailscale funnelは絶対に使用しないでください。HTTP経由では、ホーム画面へのインストール、Web Push、マイクは無効のままになります。LinuxおよびmacOSでは、Collie固有のHTTPモードが代わりにブリッジポートで公開します(COLLIE_SERVE_MODE)。CollieはWindowsではServeを実行しないため、ここでの公開設定はこの変数によって変更されません。
HTTPSが有効なtailnetでは、Tailscaleがスマートフォンによって信頼される証明書をアドレスに付与します。Headscaleについては上記のNoteを参照してください。ホーム画面への追加、Web Push(スマートフォンへの通知)、マイクの使用にはHTTPSが必要です。プレーンHTTPではこれらは無効のままになります(音声入力とWeb Push)。
ステップ4で、ファイルが存在しない場合はメモ帳が新規作成するかどうかを尋ねます。はい をクリックしてください。このフォルダーは herdr.collie 用のHerdrプラグイン設定フォルダーで、既定値は %APPDATA%\herdr\plugins\config\herdr.collie です。CollieはHerdrからこのパスを取得するため、herdr plugin config-dir herdr.collie で出力できます。
COLLIE_PUBLIC_HOSTS はHost検証です。Collieは各リクエストのウェブサイト名を確認し、このリストにない名前を拒否して、DNSリバインディング経由のアクセスを防ぎます。COLLIE_PUBLIC_URL は、collie url および collie pair のQRコードが出力するアドレスです。完全な名前でCollieを開いてください。Host検証により、tailnetのIPアドレスや短縮名は拒否されます。また、Collieは起動時に自身でtailnet名の検出も試みます。この2行を追加することで確実になります。
CollieはWindows上でこのマッピングを管理しません。collie stop と collie uninstall を実行してもマッピングは維持されます。tailscale serve status は現在の状態を表示し、tailscale serve reset はPC上のすべてのServeマッピングを消去します。tailscale funnel は絶対に使用しないでください。FunnelはCollieをパブリックなインターネット上に公開します。
Collieへのウェブ要求を転送するプログラムであるリバースプロキシや、他のトンネルを使用したい場合、デプロイ にバリエーションが記載されています。それは バリアント C であり、スマートフォンで開く名前に COLLIE_PUBLIC_HOSTS を設定します。Collieはこのマシン上でのみリッスンするため、最初の collie start でファイアウォールの確認メッセージが表示されることはありません。
スマートフォンで開く
collie urlからスマートフォンへアドレスを渡します。直接入力するか、自分宛てに送信してください。iPhoneではSafariで、AndroidスマートフォンではChromeで開きます。スマートフォンにはTailscaleアプリがインストールされ、お使いのtailnetにサインインしている必要があります。- アプリのように全画面で開くように、Collieをホーム画面に追加します: - iPhone: Safariでは、共有 をタップし、ホーム画面に追加 をタップして、追加 をタップします。 - Android: Chromeでは、Collie 設定 を開き、先頭のカードにある インストール をタップします。
- 新しく追加されたアイコンからCollieを開きます。
- アプリで 設定、System、ペアリング済みデバイス の順に開きます。
- PCで
collie pairを実行し、コードと名前を入力してこのデバイスをペアリングをタップします。
アイコンから開いたアプリにコードを入力してください。collie pairが表示するQRコードはスキャンしないでください。カメラでスキャンするとブラウザタブで開かれますが、iPhoneのホーム画面アプリはSafariとは独立したストレージを持つため、タブで行ったペアリングは引き継がれません。
コードの有効期限は10分間で、1回のみ使用できます。期限が切れた場合は再度collie pairを実行してください。ペアリングが完了すると、上記の注意(デバイスをペアリングする)にあるオープンアクセス状態は終了します。
日常的に使うコマンド
任意のターミナルで実行してください。後述のWindows向け注意事項を除き、LinuxやmacOSと同様に動作します。
| コマンド | Windowsでの動作 |
|---|---|
collie start | 必要に応じてherdr.collieタスクを登録し、bridgeを起動します。 |
collie stop | タスクを無効化し、実行中のbridgeとそのランチャーを終了してbridge stoppedを出力します。collie startを実行するまで、次回ログオン時も含めてCollieは停止したままになります。 |
collie restart | bridgeのみを再起動します。 |
collie status | タスク名とその状態を表示し、Collie は実行中ですバナーを出力します。 |
collie doctor | インストール状態、Herdr、長いパス、シークレットファイルを検査し、問題ごとに修正方法を出力します。 |
collie url | スマートフォンで開くアドレスを出力します。 |
collie logs | ログファイルの末尾の行を出力します。 |
collie update | 最新リリースに更新します(アップデート)。 |
collie update --rollback | 以前のバージョンに戻します(アップデート)。 |
collie uninstall | タスクを削除します(アンインストール)。 |
アップデート
Linux や macOS と同様に、ターミナルまたはスマートフォンから更新できます。
collie update更新処理はリリースを取得し、collie.exeを置き換えてbridgeを再起動し、応答を確認します。応答がない場合、Collieは約1分15秒で正常に動作していたバージョンにロールバックします。スマートフォンの「Update」ボタンも同じ一連の処理を実行します。
手動で戻すにはこれを実行します。ネットワークは不要です。ディスク上に残っている最も新しい過去のバージョンをcurrentに指定し、bridgeを再起動します。そのバージョンが起動しない場合、Collieは元の状態に戻し、何も変更しません:
collie update --rollback実行中のプログラムが保持しているフォルダーを Windows が削除できないため、古いバージョンのフォルダーがランチャーの再起動まで versions\ に残ることがあります。次のアップデートで削除されます。
注意。 Windowsでは、ソースからチェックアウトした環境は自動更新されません。collie updateやスマートフォンのボタンはその旨を1文で表示し、何も変更しません。最初のzip提供前に行われたWindowsへのインストールは、すべてソースからのチェックアウトです。zipによるインストールへの移行は1回限りの手動手順です。collie uninstallを実行して古いタスクを削除し、install.ps1を実行してください。その後はcollie updateが機能します。
CollieはWindowsマシン1台につき1つのインストールのみを許可し、collie startは別のインストールを実行するタスクを拒否します。古いタスクを先に削除するのはそのためです。ソースチェックアウトのまま手動で更新することも可能です。新しいタグを取得し、bun run buildを実行してからcollie restartを実行してください。ビルドにはGit for Windowsのbashが必要です。
v1.15.0 までのリリースでは実行中の collie.exe を切り替えることができず、EPERM で失敗します。この修正(PR 309)は v1.15.1 で初めて導入されました。Windows でのスマートフォンの Update ボタンなど、その後の Windows 向けアップデート機能は v1.16.0 で初めて導入されます。
アンインストール
collie uninstallcollie uninstallはbridgeを停止し、タスクスケジューラのタスクを削除します。他のインストール環境と同様にファイルは保持されるため、インストールフォルダ、.env、ユーザーのPATHエントリはそのまま残ります。その後、PowerShell用のコマンドが2行出力されます。1行目はインストールフォルダを削除し、2行目はレジストリを通じてユーザーPATHからcurrent\binのみを削除します。Collieはこれら2行を、実際のフォルダパスを含めて1行ずつ出力します。画面に収めるために折り返した例を以下に示します:
cmd /c rmdir /s /q "<install folder>"
$k = [Microsoft.Win32.Registry]::CurrentUser.OpenSubKey('Environment', $true)
$k.SetValue('Path', (($k.GetValue('Path', '', 'DoNotExpandEnvironmentNames') -split ';' |
Where-Object { $_.TrimEnd('\') -ne '<install folder>\current\bin' }) -join ';'),
$k.GetValueKind('Path'))
$k.Close()可能な限り、Collie自身が出力した行をコピーしてください。手動で作成したtailscale serveマッピング(スマートフォンからのアクセス)はCollieによって削除されません。
トラブルシューティング
まずcollie doctorを実行し、該当する問題を以下から探してください。
collie doctorはインストールを検査し、検出された問題ごとに修正方法を出力します。次に、画面の表示と一致する以下のセクションを確認してください。一致するものがない場合は、ログに記載されているログを確認してください。
問題を報告するには、github.com/AltanS/collie/issuesでissueを作成してください。Windowsを使用している旨を記載し、collie versionで確認したCollieのバージョン、collie doctorの出力、およびログの末尾の行を貼り付けてください。個人情報は事前に削除してください。ログにはペインのテキストが含まれる場合があります。
未署名バイナリ: SmartScreenとSmart App Control
collie.exeは署名されていないため、Windowsは発行元を認識できません。インストーラーを実行する前にこれをお読みください。
未署名のプログラムを停止させる可能性があるWindowsの機能は2つあります:
- SmartScreenは、インターネットから取得したプログラムを実行する前に確認を求めます。ブラウザでダウンロードしたファイルの場合は、詳細情報をクリックし、次に実行をクリックします。
- Smart App Controlにはファイル単位の許可設定がありません。有効になっていてCollieがブロックされた場合、そのファイル単体を許可することはできません。
install.ps1はcollie.exe versionの実行時にブロックされたことを示し、成功行を出力しません。
Smart App ControlがCollieをブロックした場合は、次の順序で対処法を検討してください:
- 有効になっているか確認します。「Windows セキュリティ」を開き、アプリとブラウザーのコントロール、スマート アプリ コントロールの設定の順に開きます。
- Smart App Controlが無効なPCを使用するか、ブロックされた旨をissueで報告してください。
- 最後に、Smart App Controlを無効化する方法があります。この操作を元に戻すのは困難です。再度有効にするにはWindowsの初期化が必要になる場合があるとMicrosoftのドキュメントに記載されているため、事前にMicrosoftの最新ページを確認してください。
install.ps1でのsha256チェックは、破損または改ざんされたダウンロードを検出します。ハッシュはzipファイルの横に置かれており、一方を置き換えられる者はもう一方も置き換えられるため、誰がファイルを公開したかは証明できません。バイナリの署名は将来のステップとして考えられますが、予定日はありません。
長いパス
表示される内容: ペインが開かず、Herdr が The directory name is invalid (os error 267) と出力します。collie doctor が先に警告を出します: LongPathsEnabled is 0 on this machine。
Windows の長いパスが有効になっていない場合、パスが260文字を超えるフォルダーでは Herdr はペインを起動できません。インストール フォルダー自体が非常に長い場合も、collie doctor が警告を出します。
管理者として実行した PowerShell で以下を実行します:
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' `
-Name LongPathsEnabled -Value 1すでに実行中のプログラムに反映するには、Windows の再起動が必要になる場合があります。いずれにしても作業フォルダーのパスは短く保ってください。
タスク スケジューラが標準ユーザーを拒否する
表示される内容: collie start が error: schtasks /Create /TN herdr.collie failed で失敗し、Windows が 0x80070569 を報告し、Collie はアカウントに「バッチ ジョブとしてログオン」の権利がないと出力します。
これは、その権利を持たない標準ユーザー アカウントで発生します。管理者アカウントは通常、この権利を持っています。
管理者が権利を付与します:
secpol.mscを実行します。- 「ローカル ポリシー」を開き、「ユーザー権利の割り当て」を開きます。
- バッチ ジョブとしてログオン を開き、アカウントを追加します。
collie startを再度実行してください。
Windows Homeにはsecpol.mscが同梱されていません。
シークレットファイル
表示される内容: collie doctor は修正方法とともに secrets-private 行(例: can be read by other accounts)を出力します。
Collie は、シークレットファイルを読み取れる対象を制限します(自身のアカウント、SYSTEM、Administrators のみ)。Windows には 0600 モードがないため、Collie は state フォルダおよび config フォルダのアクセスリスト(ACL)を設定します。
collie doctorsecrets-private 行のステータスは 3 種類あります。
| ステータス | 意味 |
|---|---|
| Private | フォルダは自身のアカウント、SYSTEM、Administrators のみアクセス可能です。 |
| Loose | 別のアカウントがフォルダまたはシークレットを読み取れる状態です。これはエラーであり、doctor に修正方法が出力されます。 |
| Not checked | Collie がリストを読み取れないため、cannot confirm と表示されます。これは警告です。 |
ネットワーク共有、あるいは FAT や exFAT ボリューム上のフォルダは、読み取るリストが存在しないため「not checked」になります。state フォルダと config フォルダは、この PC 内の NTFS ドライブに配置してください。
bridge は起動時に loose 状態のフォルダを修復しますが、対象となるのは Collie が新規作成したフォルダ、ユーザープロファイル内のデフォルトフォルダ、あるいは空か Collie 自身のファイルのみを含むフォルダに限られます。それ以外のフォルダはチェックおよび警告の対象となり、修正するための icacls コマンドが表示されます。collie doctor などの他のコマンドは何も変更しません。
修復を元に戻すには: 修復前に、bridge は state フォルダ内の acl-backups に以前のリストを保存し、取り消し用のコマンドを出力します。管理者として実行したターミナルで実行してください。
icacls <folder> /restore <backup file>COLLIE_NO_ACL_REPAIR=1 はすべての変更を無効化します。Collie は引き続きチェックと警告を行います。ルールの詳細については Windows でのシークレットファイル を参照してください。
ログ
bridgeのログは、プラグイン設定フォルダー内のcollie.log(デフォルトは%APPDATA%\herdr\plugins\config\herdr.collie\collie.log)です。collie logsで末尾の行を表示します。Collieは追記のみを行いログローテーションを行わないため、bridgeが動作している間ファイルは肥大化します。ログを空にするには、collie stopを実行し、ファイルを削除してからcollie startを実行してください。
ソースからビルド
リリース版のzipにツールチェーンは不要です。ソースからビルドする場合は、PATH上にBun、Git、およびGit for Windowsのbashが必要です。bun run buildがbashを呼び出すためです。bashを使用しないビルドは予定されていますが、まだ実装されていません。
サポート環境
対応ホスト: Windows 11 (x64)。マルチプレクサとして Herdr を使用。
crewとは、それぞれでCollieを実行している複数のマシンを単一のURL(crew)の背後にまとめたものです。
| サポート対象 | サポート外、動作する可能性あり、未テスト | |
|---|---|---|
| Windows | Windows 11 (x64) | Windows 10、Windows Server、Windows on ARM |
| マルチプレクサ | Windows 用 Herdr 0.9.3 以降 | tmux、zellij、tuios: いずれもネイティブ Windows ビルドがありません |
| サービス | タスク スケジューラ(マシンごとに1つの Collie) | Windows サービス、winget、MSI |
| Crew | 1台のマシンでのCollie | crewに参加するWindowsマシン |
| フロントドア | 手動で自ら公開する | Collieが管理するフロントドア |
| バイナリ | collie.exe(未署名、sha256付き) | 署名済みバイナリ |
以下の制限も適用されます:
- CollieはWindowsマシン1台につき1つのインストールのみを許可します。タスク名は常に
herdr.collieです。 herdr plugin installはWindowsのインストールパスではありません。install.ps1を使用し、その後にcollie startを使用してください。bashが必要なため、HerdrのアクションボタンはWindowsには存在しません。- HerdrのWindowsビルドはHerdrプロジェクトによって作成されています。Collieはそれに依存しており、制御していません。
crew
このリリースでは、Windowsマシンはcrewに参加できません。collie crew invite、crew join、crew add、crew deputy、crew approve-promote、collie promoteはWindows上では拒絶され、その旨が1行表示されて何も変更されません。単一のWindowsマシン上のCollieは単体で動作します。
コミュニティ製スクリプトからの移行
コミュニティスクリプトを実行した場合の変更点と、引き継がれない項目。
このリリース以前は、Windows はコミュニティが作成したスクリプト contrib/windows/collie-ctl.ps1 上で動作していました。現在は Collie 自身がタスクを実行し、スクリプトの各コマンドは同じ名前の collie コマンドになっています。アップデート後、collie restart を 1 回実行してください。スクリプトが herdr.collie という名前のタスクを実行していた場合、Collie は同じ名前でそのタスクを引き継ぎます。再起動するまでは、タスクが依然として古いスクリプトを実行していると collie status および collie doctor で表示されます。
以下の 2 点は引き継がれません。
- カスタムタスク名。 スクリプトでは
COLLIE_TASK_NAMEを設定できましたが、Collie はこれを読み込まず、タスク名は常にherdr.collieになります。別の名前で登録したタスクはそのまま残り、Collie が停止または削除することはありません。collie startを実行する前に削除してください。削除しない場合、2 つのスーパーバイザーが bridge を起動することになります。PowerShell での削除コマンド:schtasks /Delete /TN "<your task name>" /F。 - クラッシュログのコピー。 スクリプトは bridge がクラッシュした際にログのコピーを保持していましたが、Collie は保持しません。古いコピーは手動で削除するまでディスク上に残ります。
テストの実施方法と、experimentalステータスが終了する条件
Collieにexperimentalと表示される理由(根拠を確認したい読者向け)。Collieを使用するにあたって読む必要はありません。
このページにおいて、以下の 2 つの用語は定義された特定の意味を持ちます:
- サポート対象は、メンテナがWindowsコードを所有しテストしていることを意味します。プッシュごとのCI実行と、各リリースタグ前のWindows 11仮想マシンでのリハーサル(ADR 0075)です。CIはGitHub上での自動テスト実行です。ADRはリポジトリ内に保持される短い決定記録です。
- 実験的機能は、2つの実リリース間でのアップデートと、HTTPS経由のスマートフォンアクセスの動作がまだ実証されていないことを意味します。
サポートの前提条件:
- CIワークフローである
windows.ymlワークフローは、すべてのプルリクエストおよびmainへのプッシュごとに、windows-latest上でbridge、cli、scriptsのテストを実行します。これはまだ必須のチェックではありません。メンテナは、約10回連続でグリーンになった後に必須化する予定です。 - 各リリースでは、
.sha256ファイルとともにcollie-<version>-windows-x64.zipがビルドされます。 - 各リリースタグの前に、メンテナはリハーサル(
make win-rehearse)を実行します。クリーンなWindows 11 VMにリリースをインストールし、ターミナルおよびスマートフォンのエンドポイントからアップデートし、強制的にヘルスチェックを失敗させてロールバックを検証します。アップデートにはリリースファイルのローカルコピーを使用します。VMが利用できない場合、タグ付けは保留されます。 - CIランナーはWindows Serverであるため、CIに次ぐ2つ目の検証環境としてWindows 11を使用します。
- 公開されたv1.16.0リリースからの実際のインストールは、Windows 11 VM上で実行されました。
install.ps1がリリースを検出し、zipをダウンロードし、sha256が一致して、collie.exeが1.16.0として実行されました。collie startがタスクを登録してbridgeを開始しました。collie statusはrunningと表示され、collie doctorは終了コード0で終了し、collie stopが停止しました。https://colliepwa.dev/install.ps1のスクリプトは公開されており、v1.16.0リリースのスクリプトとバイト単位で一致しています。 - スマートフォンアクセスは、Headscale tailnet上のWindows 11 VMにおいてHTTP経由で実行されました。
tailscale serve --bg --http=80 --set-path=/ <port>がCollieを公開しました。2つの.env行とcollie restartにより、collie urlとcollie startバナーにtailnet名が出力されました。別のtailnetマシンからは、ページ、/api/health、/api/snapshotが完全な名前で応答し、tailnet IPアドレスまたは短い名前によるリクエストは拒絶されました。スマートフォンインターフェースでのペアリングは正常に動作し、ペアリング後に認証情報なしで書き込みを行うと403 "device not paired"が返されました。スマートフォンサイズのデスクトップブラウザをスマートフォンの代替として使用しました。 - テスト用VMのSmart App Controlは評価モードになっており、そこではSmart App ControlもSmartScreenもCollieをブロックしていません。このページでは、実際に発生したブロックではなく、Windowsのドキュメントに記載されている内容を説明しています。
experimentalという表記は、以下のすべてが同時に満たされた場合にのみ外されます:
- リリースにWindows用のzipが含まれ、
install.ps1がcolliepwa.devに配置され、実リリースに対するインストールとアップデートが1回ずつ実行されること。最初の3点は完了しています。v1.16.0にはzipが含まれ、アドレスは公開されており、インストールは実行されました。実リリース間でのアップデートは、zipを含む2回目のリリースが必要なため、まだ行われていません。 - Windows向けのチェックは、ブランチ保護における必須チェックです。ブランチ保護は、指定されたチェックをパスするまでマージをブロックするGitHubの設定です。
- リリースのゲート処理はWindowsワークフローを読み取ります。このゲートはリリースワークフローの最初のステップであり、公開前にテストの完了を待ちます。
- Windows用zipが存在しない場合の許容設定は無効化されています。次のセクションで説明するとおり、現在はオフになっています。
Windows用zipのないリリース
今後はリリースチェックでWindows用zipが必須になります。メンテナーのみが、Linuxのホットフィックスを目的としてこれを上書きできます。リリースジョブはscripts/windows-asset.tsでこのチェックを実行します。このジョブはzipを含む過去の安定版リリース(ドラフトやプレリリースを除く)を検索し、v1.16.0がそれに該当します。2026-11-15以降はいかなる場合でもzipが必須となり、GitHubのリリース一覧が応答しない場合も必須として扱われます。唯一の例外は、Windowsビルドが破損している際にメンテナーがLinuxホットフィックス用に設定できるスイッチである、リポジトリ変数COLLIE_WINDOWS_ASSET_OVERRIDEです。このスイッチのもとで作成されたリリースにはWindows用zipが含まれません。
v1.16.0より前のリリースにはWindows用zipがありません。最新リリースにzipが含まれていない場合の表示は以下のとおりです。
install.ps1は最新の5つのリリースを確認します。各リリースについて<tag> has no Windows build. Trying the next older release.を出力します。続いてcollie install: none of the newest 5 releases of AltanS/collie carries a Windows build yet. Nothing was installed.を出力し、Install failed.と、zipを含むリリースに固定するよう案内する行で終了します。マシン上の変更は一切行われません。リリースを固定するには、COLLIE_TAGを設定してください。- Windows で
collie updateを実行するとerror: release <version> has no Windows build; try again after the next release. Nothing was changed.と出力されます
確認するには、GitHub のリリースベージを開いて collie-<version>-windows-x64.zip という名前のファイルを探してください。
テストされていない項目
保証と解釈されないよう、単純な箇条書きで記載します:
- Windows環境における2つの実リリース間のアップデート。リハーサルにはリリースファイルのローカルコピーを使用しました。
- WindowsにおけるTailscale ServeのHTTPS形式(Headscaleは
501 Not Implementedを返却)、およびそれに伴うホーム画面への追加、Web Push、マイク。さらに、実機のスマートフォン、Herdrペインで実行されるエージェント、およびTailscale Serveの代用となるリバースプロキシ。 - Windows環境での手動による
collie update --rollback。アップデート失敗後の自動ロールバックをリハーサルしました。 - ソースチェックアウトからzipインストールへの移行、およびソースチェックアウトの手動更新。
install.ps1を使用しない手動でのzipインストール。- Windows 10、Windows Server、Windows on ARM、Windows上のtmux、zellij、tuios。
- 実際のSmart App Controlによるブロック、および
install.ps1用PowerShell 7。 - Smart App Controlが有効なマシンでのソースからのビルド。
- Windows Homeにおけるタスクスケジューラの修正。名前に空白と非ASCII文字を含む標準ユーザーを使用してルートを確認しました。
- 実ハードウェア上のFATボリューム。「未確認」の判定はユニットテストでカバーされています。
- 2つ目のCollieのタスクが拒否される挙動(ユニットテストでのみ確認)。
- サインアウトせずにエクスプローラーが新しいPATHを認識するかどうか、および標準ユーザーによるPATHの編集。
- 実際のエージェントを使用した
local-cli音声プロバイダ。クリーンアップはテスト用コマンドで確認されています。Collieはそのコマンドのプロセストリーを終了しますが、終了済みのヘルパーが起動したプロセスは残る可能性があります(音声入力とWeb Push)。