mcpField
V
vibeshare-live

vibeshare-live

ローカル
github.com/pooriaarab開発ツール02 週間前に更新

vibeshare-live について

vibeshare-liveはURLでターミナルセッションをリアルタイム共有し、読み取り専用の視聴とホスト承認制の参加申請に対応します。エージェントCLI、シェル、TUIのセッションを見せたい開発者向けで、共有はローカルで実行され、同意記録で管理されます。

主な機能

  1. 01URLによるターミナルセッション共有
  2. 02読み取り専用の視聴と参加申請
  3. 03ホストによるコラボレーター承認
  4. 04コマンド起動またはtmux経由の接続
  5. 05ローカルの同意記録とアクセス制御

活用シーン

  1. 01ライブのエージェントセッションを見せる
  2. 02視聴者からの共同作業申請を受け付ける
  3. 03実行中のコマンドをチームで共有する

MCP 対応

MCPサーバーは`vibeshare_create`、`vibeshare_viewers`、`vibeshare_stop`ツールを公開します。エージェントは共有を作成・管理できますが、参加申請の承認はCLIから人が行います。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"pooriaarab-vibeshare-live": {
"command": "npx",
"args": [
"-y",
"vibeshare-live"
]
}
}
}
起動コマンドnpx -y vibeshare-live

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmvibeshare-live0.2.5

ツール

3

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
namestringいいえ表示名の上書き値。
accessenumいいえデフォルトは spectate(読み取り専用)です。spectate | invite
expirystringいいえ1h、24h、7d、……または "stop"(デフォルト)。
sessionstringいいえ共有内容のラベル(例:エージェントやタスク)。
passphrasestringいいえ閲覧者が入力する必要のある任意のパスフレーズ。

詳細

vibeshare

ライブのエージェントコーディングセッションを URL で共有できます。traces.com のようなオープンソースの CLI ファーストツールです。閲覧者は読み取り専用で視聴でき、招待リンクでは参加リクエストを送って共同作業者になれます(ホストがその場で承認します)。

Vibe Suite の一部です。エージェント型コーディング CLI(Claude Code、Codex、Gemini、Grok/pi、Kimi)向けのコンパニオンツールです。@pooriaarab/vibe-core(同意台帳、フックバス、バッジ)を基盤とし、CLI + npm パッケージ + MCP サーバーとして提供されます。

ローカルファースト:共有セッションはお使いのマシン上で実行されます。 同意台帳がすべての共有を制御し(share:session スコープ)、ストリームはホストから直接配信されます。サーバーには何も保存されません。

あらゆるハーネスで動作

vibeshare はライブのターミナルセッションを共有します。PTY をラップするため、内部で動作するプログラムは問いません。エージェント CLI、シェル、TUI のいずれも、ブラウザー上の xterm.js で忠実に表示されます(色、カーソル、全画面表示)。

セッションを共有する 2 つの方法:

  • 起動時にラップ(tmux 不要): vibeshare --public -- <harness> — vibeshare が親プロセスとなり、PTY でキャプチャします。例:vibeshare --public -- claude、-- codex、-- gemini、-- aider、-- opencode、-- kimi、-- amp、または任意のシェル/コマンド。
  • 実行中のセッションに接続(tmux が必要): tmux 内でハーネスを実行し、vibeshare attach <pane> を実行するとライブで接続します。ハーネスに依存せず、アプリではなくターミナルをキャプチャします。

動作確認済みのハーネス(すべて実際の TUI をライブ表示します):Claude Code(claude)、OpenAI Codex(codex)、Gemini CLI(gemini)、aider(pip install aider-chat が必要)、opencode、Moonshot Kimi(kimi)、pi(grok/glm)、Sourcegraph amp(独自の PATH 設定が必要)。その他(Continue、Goose、Crush、Qwen、Cursor Agent、Warp、Zed、…)も同様にラップできます。これらは通常のターミナルプログラムです。

必要な操作コマンド
新しい claude セッションを共有vibeshare --public -- claude
実行中のセッションを共有tmux 内で実行 + vibeshare attach <pane>
ローカルのみで共有vibeshare -- <cmd>

モード: --public(getvibe.dev 経由の WebRTC P2P + エンドツーエンド)、--tunnel <provider>(12 プロバイダー、エンドツーエンド)、またはローカルループバック/LAN。プレゼンスと発言者が分かるチャットも含まれます。

デモ

▶ ローンチ動画を見る — claude がマルチプレイヤーになりました。

https://github.com/pooriaarab/vibeshare/raw/main/branding/launch-video.mp4

インストールとビルド

npm install
npm run build      # tsup → dist/ (cli.js, index.js, mcp.js + types)
npm run typecheck  # tsc --noEmit
npm test           # vitest

CLI

vibeshare                        # share your shell, spectate read-only
vibeshare --invite --expire 1h   # viewers may request to join; auto-expires
vibeshare --pass hunter2         # passphrase second factor
vibeshare -- npm test            # share a specific command
vibeshare --host 0.0.0.0         # share on your LAN (default: loopback only)

vibeshare viewers                # who's watching, pending join requests
vibeshare viewers --approve <id> # promote a viewer to collaborator
vibeshare viewers --kick <id>    # remove a viewer, live
vibeshare stop                   # end the share (works from another terminal)

vibeshare を実行するとリンクが表示されます:

● local · no data out
  sharing:  npm test
  url:      http://127.0.0.1:50613/s/KKxzdjLpr_km
  access:   spectate (read-only)
  expires:  until you stop
  manage:   vibeshare viewers · vibeshare stop

URL を開くと、自己完結型の視聴者ページが表示されます(閲覧者はインストール不要)。セッションは SSE 経由でライブ配信され、招待リンクには「参加をリクエスト」ボタンが表示されます。初回実行時には同意を求められます(スキップするには --yes を指定)。許可内容は ~/.vibeshare/consent.json にローカル保存され、いつでも取り消せます。

読み取り専用は実際に徹底されています。閲覧者が書き込めるルートはありません。ホストが正式なサーバーであり、共同作業者への昇格は、ホストが承認したリクエストを通じてのみ行われます(ViewerRegistry.canWrite() が唯一のゲートです)。

安定した接続(TURN)

--public での共有は、デフォルトでは STUN のみを使ったピアツーピア接続です(無料、インフラ不要)。これはほとんどの NAT 環境で動作します。閲覧者が対称 NAT や隔離されたネットワークの背後にいて、「ホストを待機中」のままになる場合は、TURN リレーを追加してください。ICE 設定はホストで指定され、シグナリング経由で閲覧者に自動的に伝播されるため、両端でリレーを使用できます。

優先順位は上から順です:

  1. --ice-servers '<json>' CLI フラグ — RTCIceServer オブジェクトの JSON 配列
  2. VIBESHARE_ICE_SERVERS 環境変数(同じ JSON)
  3. ~/.vibeshare/config.json → "iceServers" キー
  4. デフォルト:[{ "urls": "stun:stun.l.google.com:19302" }](STUN のみ)
// ~/.vibeshare/config.json — self-hosted coturn, or a provider
// (metered.ca, Twilio, Cloudflare Calls TURN, …)
{
  "iceServers": [
    { "urls": "stun:stun.l.google.com:19302" },
    {
      "urls": "turn:turn.example.com:3478",
      "username": "vibeshare",
      "credential": "long-lived-or-temporary-secret"
    }
  ]
}

認証情報はホスト自身のものです(慣例として有効期間の短いトークンを使用します)。シグナリングチャネルを通じて閲覧者に送られ、ブラウザーがリレーに接続できるようになります。不正なフラグ/環境変数の JSON は報告されてスキップされ、次のソースへフォールバックします。共有が中断されることはありません。

npm ライブラリ

import { createShare, grantConsent } from 'vibeshare';

grantConsent('share from my tool');              // once; local ledger
const { url, feed, viewers, revoke } = await createShare({
  session: 'npm test',
  access: 'spectate',                            // or 'invite'
  expiry: '1h',                                  // or 'stop'
});

feed.publish('tests starting…');
viewers.on('request', (v) => viewers.approve(v.id));
await revoke();

share:session の許可がない場合、createShare は ConsentRequiredError をスローします。ShareManager、LocalHttpTransport、FileConsentStore を使って、必要な処理をご自身で用意してください。

MCP サーバー

{
  "mcpServers": {
    "vibeshare": { "command": "vibeshare-mcp" }
  }
}

ツール:vibeshare_create、vibeshare_viewers、vibeshare_stop — エージェントは「このセッションを共有しますか?」と提案できます。MCP クライアントのツール承認プロンプトが同意行為となり、その内容はメモとともに記録されます。参加リクエストの承認は引き続き人間のみが行い、CLI を使用します。

アーキテクチャと vibelive との接点

vibeshare が担うのはリンクとゲートです。セッションの内容は、順序付きフィードとして観覧者に配信されます。意図的に設けられた接点は、トランスポート(src/transport.ts)の 1 つだけです。

  • LocalHttpTransport(実装済み、デフォルト):観覧者ページ、SSE ストリーム、ループバックのホスト制御 API を、ユーザーのマシンから配信します。サーバーには何も保存されません。
  • RelayTransport(vibelive とともに導入予定):公開 vibeshare.io URL を提供する、単純な E2E リレー/P2P メッシュです。同じ ShareTransport インターフェースを使用し、差し替えのみで利用できます。共同作業者からの入力ルーティングもこの接点の一部であり、ViewerRegistry.canWrite() を通過する必要があります。

それ以外のすべて — 同意、アクセス制御、パスフレーズゲート、有効期限切れ時のティアダウン、観覧者レジストリ、アクセス取り消し — は実装済みで、テストも完了しています。

プロトタイプ

元の UX プロトタイプ(ビルドなし、ネットワークなし)は、docs/prototype.html を開いてください。仕様書:docs/spec.md。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。