ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที รีวิวและบัญชีผู้ใช้จะมาในขั้นถัดไป
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

Letterbox

โดย dovahkiin-vรุ่น 1.2.2i★ –iรันบนเครื่อง
ชื่อใน registryio.github.dovahkiin-v/letterbox

ติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

File-based comms protocol for AI-to-AI dialogue between terminal agents.

สามเสาของ PopNx MCP

สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: รันบนเครื่อง
  • ช่องทาง (transport): stdio
  • หมวด: เครื่องมือนักพัฒนา
  • ต้องใส่ค่าเหล่านี้: LETTERBOX_CHANNEL, LETTERBOX_SENDER, LETTERBOX_INSTANCE_ID

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ก่อนติดตั้ง

ต้องเตรียมก่อน

  • PyPIติดตั้ง uv ของ Python (มีคำสั่ง uvx) ในเครื่อง

คุณใช้แอปไหน

เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”

เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json

{
  "mcpServers": {
    "letterbox": {
      "command": "uvx",
      "args": [
        "letterbox"
      ],
      "env": {
        "LETTERBOX_CHANNEL": "ใส่ค่าของคุณ",
        "LETTERBOX_SENDER": "ใส่ค่าของคุณ",
        "LETTERBOX_INSTANCE_ID": "ใส่ค่าของคุณ"
      }
    }
  }
}

พิมพ์คำสั่งนี้ใน Terminal

claude mcp add letterbox --env LETTERBOX_CHANNEL='ใส่ค่าของคุณ' --env LETTERBOX_SENDER='ใส่ค่าของคุณ' --env LETTERBOX_INSTANCE_ID='ใส่ค่าของคุณ' -- uvx letterbox

เติมค่าที่เว้นว่างไว้ก่อนรัน

เปิดใน Cursor

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json

{
  "mcpServers": {
    "letterbox": {
      "command": "uvx",
      "args": [
        "letterbox"
      ],
      "env": {
        "LETTERBOX_CHANNEL": "ใส่ค่าของคุณ",
        "LETTERBOX_SENDER": "ใส่ค่าของคุณ",
        "LETTERBOX_INSTANCE_ID": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

เปิดใน VS Code

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .vscode/mcp.json ของโปรเจกต์

{
  "servers": {
    "letterbox": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "letterbox"
      ],
      "env": {
        "LETTERBOX_CHANNEL": "ใส่ค่าของคุณ",
        "LETTERBOX_SENDER": "ใส่ค่าของคุณ",
        "LETTERBOX_INSTANCE_ID": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น

ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี

ค่าที่ต้องใส่เอง

  • LETTERBOX_CHANNEL จำเป็น env
    Channel name to open. Normally set by the letterbox PTY-parent when it spawns this server; set it manually only when running the MCP server standalone.
  • LETTERBOX_SENDER จำเป็น env
    This endpoint's identity on the channel — the name the peer agent sees on every message.
  • LETTERBOX_INSTANCE_ID จำเป็น env
    Per-launch instance id, the watcher/own-write join key that stops an agent seeing its own messages as incoming. Must be unique per launch.

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

ทำอะไรได้บ้าง

รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 9 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub dovahkiin-v ซึ่งเป็นเจ้าของ repo

  • … ยังไม่ตรวจ

    ยังมีคนดูแล

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • … ยังไม่ตรวจ

    มีสัญญาอนุญาต (license)

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • – ไม่เกี่ยว

    endpoint ตอบ

    ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน

  • … ยังไม่ตรวจ

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต

เทียบกับตัวอื่นในหมวด เครื่องมือนักพัฒนาi

  • ดาวมากกว่า 0% ของอีก 5571 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 32% ของอีก 5571 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 5571 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

Letterbox ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

ต้องใส่ค่าเหล่านี้: LETTERBOX_CHANNEL, LETTERBOX_SENDER, LETTERBOX_INSTANCE_ID

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.2.2) เข้า registry 3 เดือนที่ผ่านมา

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี GitHub, Desktop Commander, Cloudflare MCP

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

GitHub

server ทางการของ GitHub ให้ AI อ่านและจัดการโค้ด issue และ pull request ในบัญชีของคุณได้ ใช้ผ่านคลาวด์ของ GitHub หรือรันในเครื่องด้วย Docker ก็ได้

โดย githubใช้กันมาก★ 34.2Kอัปเดต 6 วันที่ผ่านมา

บนเครื่องหรือคลาวด์

Desktop Commander

MCP server for terminal commands, file operations, and process management

โดย wonderwhy-erใช้กันมาก↓ 709.6K/สัปดาห์★ 10.2Kอัปเดต 18 วันที่ผ่านมา

รันบนเครื่อง

Cloudflare MCP

Cloudflare MCP servers

โดย cloudflareใช้กันมาก★ 4.4Kอัปเดต 14 เดือนที่ผ่านมา

รันบนคลาวด์✓ mcp.cloudflare.com

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ

Letterbox

📌 Built for internal production use. Architecture proven across months of daily AI development. Open-sourced as a reference implementation. I use it almost daily.

If you use AI coding assistants in the terminal, you normally work with one at a time — and getting two of them to collaborate means copy-pasting messages between windows yourself. Letterbox lets two assistants (say, Claude and Gemini, or Gemini and Mistral's Vibe) talk *directly* to each other and work a task together, hands-free.

The result: one agent can plan while another reviews, or the two can split the work between them — collaborating on their own while you watch, instead of relaying every message by hand.

*A small file-based comms protocol that lets two AI agents in separate terminals talk to each other in real time.*

Letterbox lets two terminal coding agents — Claude Code, Gemini CLI, Antigravity, or Mistral's Vibe — hold a real-time conversation by passing message files through a shared directory. When one agent speaks, a 📬 notification is injected into the other's terminal and wakes it to read and reply. No network, no server, no shared memory: just JSON files in a folder and the OS's atomic-rename. It's the messaging layer that was built for an internal planning loop, extracted into a standalone, versioned tool in 2026. If you've ever wanted two CLI agents to collaborate on a task without you copy-pasting between windows, this is for you. It gets the occasional update at the author's whim (the launcher tells you when a newer one is out) — but it's currently unsupported small project, not a community one.

The bridge is cross-harness: Claude on one side, Gemini on the other, talking through the same channel, has been verified live. The one wrinkle is setup — Claude wires itself automatically, while Gemini and Antigravity load letterbox from their own settings. The Setup section walks through both.

Why it exists

I work with two AI collaborators every day — Claude and Gemini — each living in whatever terminal harness it runs in (Claude Code, Gemini CLI, Antigravity CLI, and now Mistral's Vibe). Letterbox is how I get them talking to *each other* instead of through me.

That happens in two modes. Sometimes it's manual: we're brainstorming and I want to loop the other model into the conversation. Sometimes it's automated — in the planning loop, Claude drafts a plan and each plan is routed to Gemini for review as a built-in stage. Letterbox carries both the same way.

It's harness-agnostic by design — Claude Code ↔ Gemini CLI ↔ Antigravity CLI ↔ Vibe in any combination — and same-model pairs work just as well: two Claude tabs, or two Gemini tabs, talking over one channel.

What it is

Each letterbox launch runs two coordinated processes inside one terminal:

  letterbox claude --channel demo --as alice

│ ├─ PTY-Parent (the foreground letterbox process) │ • spawns the harness CLI as a PTY child │ • watches the channel directory for peer writes │ • injects 📬 notifications into the PTY on arrival │ └─ the harness spawns: └─ letterbox mcp (stdio MCP server, agent-spawned) • send_message / check_messages / acknowledge • check_latest_message / channel_info / list_channels

Both sides coordinate ONLY through the filesystem:

~/.letterbox/channels/demo/ msg-*.json ← one file per message .read/alice.json ← per-agent read markers .read/bob.json

There is no daemon, no IPC, no background service. The filesystem *is* the coordination medium — the PTY-Parent's watcher sees a new msg-*.json appear and renders a notification; the channel directory is durable, inspectable, and cat-able. Crash recovery is trivial because nothing valuable lives in memory.

How the agent gets the letterbox tools differs per harness, and it's the one thing you configure once:

  • Claude Code takes a launch flag, so letterbox wires it *automatically* — it generates a temporary MCP config and passes --mcp-config to claude. Nothing for you to set up.
  • Gemini CLI and Antigravity don't take that flag; they load MCP servers from their own settings file. You add a one-line, channel-agnostic letterbox entry there once, and the launcher hands each session its channel and identity through environment variables at launch — so you never edit settings per channel.
  • Vibe loads MCP servers from ~/.vibe/config.toml. Its MCP subprocess inherits only a trimmed environment, so a one-time bridge script is needed to relay LETTERBOX_CHANNEL / LETTERBOX_SENDER from Vibe's own process env. Once that's in place, any channel works exactly like Gemini. See the Vibe setup section.

Who it's for

  • People running terminal coding agents who want autonomous AI↔AI dialogue on one machine, without babysitting copy-paste between windows.
  • People who value files as the source of truth — auditable, greppable, no opaque protocol, no magic.

Who it's NOT for

  • Anyone wanting a hosted or networked chat service — the message protocol is filesystem-local and never touches the network. (The launcher makes one optional, best-effort version check at startup; disable it with LETTERBOX_NO_UPDATE_CHECK=1.)
  • Anyone wanting a multi-user platform — it's a point-to-point bridge between agents on one machine, not a many-user hub (see Built for two).
  • Windows-native users — v1 is POSIX-only (see What we don't support).
  • Anyone wanting a supported product — letterbox is versioned and gets the occasional update at the author's whim (the launcher tells you when a newer one is out), but there's no roadmap, no SLA, and no commitment to take feature requests or keep maintaining it. Use it as-is; pull a newer version if it helps.

Built for two

Letterbox is a two-way bridge at heart — one peer talking to one peer is what it's designed and tuned for. Three or more agents *can* share a channel: directed addressing (send_message(to=" ")) and the participants list make it workable, and same-channel broadcasts reach everyone. But a shared channel is a broadcast bus — every message wakes every participant. Without orchestration (turn-taking, a designated coordinator, or rules about who speaks when), an N-way room becomes a notification storm that can chew through a model's message/usage limits surprisingly fast. If you want three or more, bring your own conductor. The substrate is honest about who's in the room; the etiquette is on you.

Install

Available on PyPI and the MCP Registry.

pip install letterbox

Or from source:

pip install -e .          # or: pip install -e ".[dev]" for the test extras

This puts the letterbox command on your PATH. The command must resolve by name — each agent spawns letterbox mcp itself — so this is load-bearing. Confirm it:

which letterbox           # note this absolute path; Gemini/Antigravity setup needs it

You also need the harness you're launching (claude, gemini, antigravity, or vibe) installed, on your PATH, and logged in. Letterbox launches it for you.

Updating

Letterbox is versioned (letterbox.__version__, the single source of truth) and published to PyPI. On a human-facing launch the CLI makes one best-effort check (at most once a day, cached under ~/.cache/letterbox/) and prints a one-line notice if a newer version exists. To update:

pip install --upgrade letterbox

This is the only network call letterbox ever makes — the messaging protocol stays fully local. It runs with a tight timeout and is fully fail-silent: if it can't reach GitHub it simply prints nothing and never delays your launch. It is never run for letterbox mcp (the agent's stdio server). Disable it entirely with LETTERBOX_NO_UPDATE_CHECK=1.

Setup per harness

You only do this once per harness. Skip the harnesses you won't use.

Claude Code — nothing to do

Letterbox wires Claude automatically: at launch it writes a temporary MCP config (mode 0600) and passes --mcp-config to claude. The letterbox tools appear in that session and nowhere else. There is no settings file to edit.

Gemini CLI — two one-time steps

1. Register the MCP server in ~/.gemini/settings.json (create the file if it doesn't exist). Use the absolute path to your installed letterbox (from which letterbox above), and pass only ["mcp"] — no channel, no identity:

{

"mcpServers": { "letterbox": { "command": "/absolute/path/to/letterbox", "args": ["mcp"] } } }

This entry is channel-agnostic on purpose. The launcher exports LETTERBOX_CHANNEL, LETTERBOX_SENDER, and LETTERBOX_INSTANCE_ID into Gemini's environment at launch, and the MCP server reads them — so the same single entry serves every channel and you never edit it again. (This mirrors how the Forge orchestrators pass a channel via an env var.)

2. Trust the folder you launch from. Gemini refuses to run in an untrusted directory without an interactive *"do you trust this folder?"* prompt — and a blocking TUI prompt would stall the automation. Pre-trust the launch directory (or a parent) in ~/.gemini/trustedFolders.json:

{

"/home/you/projects": "TRUST_PARENT" }

TRUST_FOLDER trusts exactly that directory; TRUST_PARENT trusts it and everything beneath, so one entry covers all your project folders. (Tip: don't reach for Gemini's --skip-trust flag to dodge this — it forces a workspace-system-prompt lookup that crashes even in already-trusted directories. Trust the folder instead.)

Antigravity (agy)

Launch it as `letterbox agy …` (the long form letterbox antigravity … also works — agy is just an alias matching the binary name). Antigravity receives its per-launch channel and identity through the same environment variables as Gemini; what differs is how you register the MCP server. agy loads MCP servers from plugins, so you install letterbox as a tiny local plugin (a directory with two JSON files):

# 1. Build the plugin (one directory, two files). Use the absolute

letterbox path from which letterbox.

mkdir -p ~/.letterbox/agy-plugin/letterbox cat > ~/.letterbox/agy-plugin/letterbox/plugin.json <<'JSON' { "name": "letterbox", "version": "1.0.0", "description": "Letterbox file-based AI-to-AI comms bridge." } JSON cat > ~/.letterbox/agy-plugin/letterbox/mcp_config.json <<'JSON' { "mcpServers": { "letterbox": { "command": "/absolute/path/to/letterbox", "args": ["mcp"] } } } JSON

2. Install it (and confirm).

agy plugin install ~/.letterbox/agy-plugin/letterbox agy plugin list

The mcp_config.json is channel-agnostic for the same reason Gemini's settings entry is — the launcher passes the channel and identity by environment at launch. Like Gemini, agy

ตัดมาแค่ช่วงต้น อ่านต่อใน repo

ถาม PopNx