
Sliver C2フレームワーク用のクロスプラットフォームElectron GUI。セッションおよびビーコンのダッシュボード、ペイロード生成、リスナー、ルート、クラウドデプロイ管理を提供します。
Sliver GUIは、Sliver向けのクロスプラットフォームElectronデスクトップアプリケーションです。バックエンド接続、ライブステータスビュー、専用ワークスペース、ネイティブSliverコンソールを、HeroUI、HeroUI Pro、Font Awesomeで構築されたReactインターフェースに統合しています。
GUIは上流のすべてのコマンドやオプションを実装しているわけではありません。オペレーター接続はmTLSを使用します。WireGuardオペレーター設定は認識されますが接続はできません。追跡されているカバレッジについてはオペレーターパリティレポートを、具体的な境界については以下の機能ドキュメントを参照してください。
サポートされるバージョンとロックされた依存関係は、package.jsonおよびpackage-lock.jsonに記録されています。アプリケーションコードは厳格なTypeScriptを使用し、ビルドヘルパーはNode.js ESモジュールを使用します。
npm ci --strict-allow-scripts
npx heroui-pro login
npx heroui-pro install --yes
npm run dev
HeroUIのログイン/インストール手順は初期のワークステーションセットアップに必要です。インストール用にHEROUI_AUTH_TOKENがすでに設定されている場合はスキップできます。認証情報は追跡対象ファイルに含めないでください。
npm run devは、本番のコンテンツセキュリティポリシーを使用して、静的アプリケーションをsliver://app/index.htmlでビルドおよび起動します。ソース変更後はコマンドを再起動してください。このワークフローではHMRは使用しません。
TypeScriptクライアントは、固定されたsliver-script npmパッケージからインストールされます。隣接するクライアントチェックアウトは不要です。通常のアプリケーション開発にはSliverソースのチェックアウトは必要ありませんが、ネイティブコンソールのビルドには必要です。
デフォルトのSliverクライアントルートは~/.sliver-clientです。SLIVER_CLIENT_ROOT_DIRで別のルートを選択できます。Overviewグラフオプションを含むアプリケーション設定はgui/application-settings.jsonに保存され、ワークスペースのズームはgui/workspace-zoom.jsonに、テキストエディタの設定はそのルート配下のgui/text-editor-settings.jsonに保存されます。GUIはconfigs/内の既存のオペレーター設定を検出し、有効な設定がそこに保存されると開いているセレクターを更新します。Importで選択された設定は、gui/operator-configs.json内のプライベートファイル参照として保存されます。ImportとForgetはソース設定をコピーまたは削除しません。
Ghostty互換のターミナルカラーはSettings → Terminalで設定され、gui/ghostty/configに保存されます。カスタムテーマはgui/ghostty/themes/に配置します。インストールされたネイティブGhosttyテーマは自動的に検出されます。設定の共有、Monacoエディタ、プラットフォームの透過サポート、実行時の制限については、ターミナルの外観とGhosttyテーマを参照してください。
| コマンド | 目的 |
|---|---|
npm run typecheck | main/preloadおよびrendererのTypeScriptプロジェクトをチェックします。 |
npm test | Vitestのユニットテストとコンポーネントテストを実行します。 |
npm run test:watch | Vitestを対話的に実行します。 |
npm run test:e2e:electron | renderer、preload、IPCを通じてElectronをビルドおよびテストします。 |
npm run protocol:check | 固定されたクライアント、上流ベースライン、パリティアーティファクトを検証します。 |
npm run build | 型チェックを行い、dist/にアプリケーション出力をビルドします。 |
npm run build:console | 固定されたネイティブSliverコンソールをビルドします。 |
npm run package | release/配下にアンパックされたアプリケーションを作成します。 |
npm run dist | release/配下にプラットフォームインストーラーを作成します。 |
npm run test:e2e:packaged | 既存のアンパックされたアプリケーションをローカルフィクスチャに対して検証およびテストします。 |
ユニットテストとコンポーネントテストはソースファイルの隣に配置され、Electronシナリオはsrc/e2e/にあります。実サーバーテストは別個のオプトインチェックであり、設定された使い捨てインフラストラクチャを必要とします。フィクスチャテストは、ライブサーバーやインストール済みパッケージとの互換性を確立するものではありません。
プロトコルチェックはGoを使用し、固定された上流ソースを一時ディレクトリに取得します。来歴チェックと、明示的に選択されたローカルベースラインの使用については、プロトコルドキュメントを参照してください。
コンソールおよびディストリビューションビルドには、Go 1.27.1と、コンソール来歴に記録されたコミットおよびツリーでのクリーンなSliverチェックアウトが必要です。これをsliver/に配置するか、SLIVER_SOURCE_DIRを設定してください。コンソールビルドはソースを検証しますが、そのチェックアウトを取得または変更しません。
ビルドは自動Goツールチェーンスイッチングを無効にします。必要なGoバイナリをPATHに配置するか、SLIVER_GO_BINARYにその絶対パスを設定してください。ユニバーサルmacOSコンソールビルドにはmacOSと/usr/bin/lipoが必要です。
npm run packageとnpm run distは、パッケージング前にネイティブランタイム、コンソール、ライセンスインベントリを準備します。dist/、release/、native/sliver-console/、.e2e-dist/配下の生成出力はGitによって無視されます。
CIパッケージングマトリクスは次のとおりです。
| プラットフォーム | パッケージ | 自動更新 |
|---|---|---|
| macOS universal | DMGおよびZIP | インストール済みアプリがZIP更新をダウンロードします。 |
| Windows x64 | NSISインストーラーおよびポータブルEXE | NSISインストールのみ。ポータブルビルドは手動で更新します。 |
| Linux x64 | AppImageおよびDEB | AppImageのみ。DEBパッケージは手動で更新します。 |
サポートされるパッケージは、GitHub Releasesを確認し、バックグラウンドで更新をダウンロードし、Restart to updateまたは通常のアプリケーション終了時にインストールするように設定されています。安定版ビルドはプレリリース更新を受け入れません。GitHubトークンはアプリケーションに埋め込まれていません。
最初のv0.0.1リリースは、永続的な自己署名コード署名証明書を使用します。macOSのCheck for Updatesは、最初の更新チェックの前にネイティブの証明書信頼ダイアログを表示します。アプリはまずGatekeeperを通じて起動を許可される必要があります。Windowsインストールでは、公開署名証明書が宛先マシンで信頼されている必要があります。信頼のブートストラップ、公開フィンガープリント、リリースキーポリシーについては、自己署名のインストールと更新を参照してください。
ビルドターゲットと最小ランタイム認定は別個です。ランタイム要件、認定状況、署名/更新ポリシーについては、プラットフォームサポートADRを参照してください。
ビルドワークフローは、プロトコルおよびパリティチェック、Electron E2E、ネイティブパッケージジョブを実行します。アプリケーションジョブにはHEROUI_AUTH_TOKEN Actionsシークレットが必要です。パブリックフォークのプルリクエストは、シークレットを必要としないプロトコル/パリティジョブのみを実行します。ネイティブジョブは、ループバックmTLSフィクスチャに対してアンパックされたアプリケーションをテストします。
安定版の公開は、現在のorigin/mainコミットにおける署名済み注釈付きvX.Y.Zタグから始まります。認証情報を必要としないタグワークフローがmain上のリリースワークフローをディスパッチします。リリース署名シークレットは、そのmain専用GitHub環境からのみ利用可能です。公開には、イミュータブルリリースが有効なパブリックリポジトリ、固定された公開証明書に一致する有効なmacOSおよびWindows署名、ドラフトリリースを通じて公開する前の検証済みアセットが必要です。この自己署名プロファイルはAppleの公証を明示的にスキップします。別個のDeveloper IDプロファイルは、そのApple署名要件を保持します。プルリクエスト、main、手動ディスパッチされた非リリースビルドはCIアーティファクトを生成します。署名入力と公開ゲートについてはワークフローを、別個の更新統合テストについてはプライベートアップデーターワークフローを参照してください。
Electron mainは、バックエンドクライアント、オペレーター設定シークレット、ネイティブプロセス、ファイルシステムアクセスを所有します。サンドボックス化されたrendererは、狭くスコープされた型付きpreload APIを使用します。IPCは呼び出し元ドキュメントと所有ウィンドウを検証します。
本番CSPはインラインスクリプトとrendererのネットワーク接続をブロックしつつ、バンドルされたワーカーとローカルWebAssemblyランタイムを許可します。アプリケーションドキュメントはsliver://appを通じて提供されます。外部ドキュメントとクラウドサインインはシステムブラウザで開きます。破壊的操作はmainプロセスの検証とレビューフローを保持します。開発のためにこれらの境界を弱めないでください。
Sliver GUIはGPL-3.0-or-laterの下でライセンスされています。HeroUI Proを含むサードパーティコンポーネントは、それぞれ独自の条件を保持します。帰属表示と配布制約については、ライセンスノートを参照してください。