Vibeshare Live

io.github.pooriaarab由 GitHub 帳號 pooriaarab 發布v0.2.5更新於 Oct 24, 2026

Share a live agent coding session by URL. Spectate or invite in.

發布方自己的服務:AI Benchmark Index

已驗證STDIO僅桌面開發者工具溝通與協作

概覽

AI 產生的概覽

一個本機 MCP 伺服器,讓助理可以提議用 URL 分享其實時終端機編碼工作階段,觀眾唯讀觀看,協作者需主機核准。

可以做什麼
為目前工作階段建立分享,回傳一個 URL,觀眾可在瀏覽器中即時唯讀觀看終端機,邀請連結下可申請加入。列出目前觀眾與待處理的加入申請,並停止進行中的分享。分享由本機同意紀錄把關,資料流直接從使用者自己的機器提供。
適用情境
適合需要讓同事或觀眾即時觀看代理編碼工作階段,或邀請他們申請協作者權限,同時不錄影、不上傳到託管服務的情境。
執行需求
以本機 npm 套件形式透過 stdio 執行,用 npx 啟動,需要 Node.js。首次執行會要求同意,記錄在本機,可用參數略過。公網點對點分享可能需要透過 ICE 伺服器參數、環境變數或設定檔設定 TURN 中繼。附加到已在執行的工作階段需要 tmux。
安裝前請注意
分享會向持有連結的任何人暴露即時終端機,其中可能包含原始碼、金鑰或其他敏感輸出。公網模式使用點對點傳輸與信令服務,主機設定的 TURN 憑證會傳給觀眾。核准加入申請只能由人透過 CLI 完成,而助理可以建立與停止分享,因此每次分享前都應確認。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Vibeshare Live,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

vibeshare

Share your live agent coding session by URL — traces.com-style, open source, CLI-first. Spectators watch read-only; invite links let viewers request to join as collaborators (host approves, live).

Part of the Vibe Suite — companion tools for agentic coding CLIs (Claude Code, Codex, Gemini, Grok/pi, Kimi). Ships as CLI + npm package + MCP server, built on @pooriaarab/vibe-core (consent ledger, hooks bus, badges).

Local-first: the share runs on your machine. The consent ledger gates every share (share:session scope), the stream is served straight from your host, and nothing is stored on a server.

Works with any harness

vibeshare shares a LIVE TERMINAL SESSION. It wraps a PTY, so the program inside is irrelevant — any agent CLI, shell, or TUI renders faithfully (colors, cursor, full-screen) via xterm.js in the browser.

Two ways to share a session:

  • Wrap at launch (no tmux): vibeshare --public -- <harness> — vibeshare is the parent, PTY-captures. Examples: vibeshare --public -- claude, -- codex, -- gemini, -- aider, -- opencode, -- kimi, -- amp, or any shell/command.
  • Attach to an already-running session (needs tmux): run the harness inside tmux, then vibeshare attach <pane> taps it live. Harness-agnostic — it captures the terminal, not the app.

Verified harnesses (all render the real TUI live): Claude Code (claude), OpenAI Codex (codex), Gemini CLI (gemini), aider (requires pip install aider-chat), opencode, Moonshot Kimi (kimi), pi (grok/glm), Sourcegraph amp (requires its own PATH setup). Others (Continue, Goose, Crush, Qwen, Cursor Agent, Warp, Zed, …) wrap identically — they're just terminal programs.

NeedCommand
Share a new claude sessionvibeshare --public -- claude
Share a running sessionRun it in tmux + vibeshare attach <pane>
Local-only sharingvibeshare -- <cmd>

Modes: --public (WebRTC P2P + e2e via getvibe.dev), --tunnel <provider> (12 providers, e2e), or local loopback/LAN. Presence + attributed chat included.

Demo

▶ Watch the launch video — claude is multiplayer now.

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

Install & build

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

CLI

sh
vibeshare                        # share your shell, spectate read-onlyvibeshare --invite --expire 1h   # viewers may request to join; auto-expiresvibeshare --pass hunter2         # passphrase second factorvibeshare -- npm test            # share a specific commandvibeshare --host 0.0.0.0         # share on your LAN (default: loopback only)
vibeshare viewers                # who's watching, pending join requestsvibeshare viewers --approve <id> # promote a viewer to collaboratorvibeshare viewers --kick <id>    # remove a viewer, livevibeshare stop                   # end the share (works from another terminal)

Running vibeshare prints the link:

● 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

Opening the URL shows a self-contained spectator page (no install for viewers) streaming the session live over SSE, with a "Request to join" button on invite links. First run asks for consent (--yes to skip); the grant is recorded locally in ~/.vibeshare/consent.json and can be revoked any time.

Read-only is real: there is no route that lets a viewer write — the host is the server of record, and promotion to collaborator goes only through a host-approved request (ViewerRegistry.canWrite() is the single gate).

Reliable connectivity (TURN)

--public shares are peer-to-peer with STUN only by default (free, no infra) — that works across most NATs. If viewers sit behind symmetric NATs or isolated networks and get stuck on "waiting for host", add a TURN relay: ICE config is set on the host and automatically propagated to viewers over signaling, so both ends use it.

Precedence, highest first:

  1. --ice-servers '<json>' CLI flag — a JSON array of RTCIceServer objects
  2. VIBESHARE_ICE_SERVERS env var (same JSON)
  3. ~/.vibeshare/config.json → "iceServers" key
  4. default: [{ "urls": "stun:stun.l.google.com:19302" }] (STUN only)
jsonc
// ~/.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"    }  ]}

The credentials are the host's own (short-lived tokens by convention); they travel over the signaling channel to viewers so the browser can reach the relay. Malformed flag/env JSON is reported and skipped — resolution falls through to the next source, never breaking the share.

npm library

ts
import { createShare, grantConsent } from 'vibeshare';
grantConsent('share from my tool');              // once; local ledgerconst { 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();

createShare throws ConsentRequiredError without a share:session grant. Bring your own plumbing with ShareManager, LocalHttpTransport, and FileConsentStore.

MCP server

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

Tools: vibeshare_create, vibeshare_viewers, vibeshare_stop — so an agent can offer "share this session?". Your MCP client's tool-approval prompt is the consent act (recorded with that note). Approving join requests stays human-only, via the CLI.

Architecture & the vibelive seam

vibeshare owns the link + gate; session content is an ordered feed served to spectators. The one deliberate seam is transport (src/transport.ts):

  • LocalHttpTransport (implemented, default): spectator page + SSE stream + loopback host-control API, served from your machine. Nothing stored on a server.
  • RelayTransport (lands with vibelive): a dumb e2e relay / p2p mesh handing out public vibeshare.io URLs — same ShareTransport interface, swap-in only. Collaborator input routing is part of that seam and must pass ViewerRegistry.canWrite().

Everything else — consent, access policy, passphrase gate, expiry teardown, viewer registry, revocation — is fully implemented and tested.

Prototype

The original UX prototype (no build, no network): open docs/prototype.html. Spec: docs/spec.md.

來源:README.md,提交 529f0a7

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.2.5最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Aibenchmarkindex 整合