
Agent Channel
io.github.amkentech由 GitHub 帳號 amkentech 發布v0.8.1更新於 Oct 27, 2026
One identity across Claude Code, Codex, Cursor, Gemini, Windsurf: shared inbox and handoffs.
概覽
讓 Claude Code、Codex、Cursor、Gemini 等 AI 編碼工作階段共用同一身分、收件匣與任務交接通道。
- 可以做什麼
- 在多個 agent 命令列工具間共用身分與收件匣,寄給你的訊息與交接由你目前所在的工作階段讀取
- 在執行環境或人之間以結構化任務包交接工作,搭配核准契約與簽章、雜湊鏈紀錄
- 以加密、可過期的連結分享檔案與去識別化工作階段紀錄,對方免帳號即可在瀏覽器查看
- 把文件或整個目錄發布到固定網址,保留版本歷程與閱讀次數
- 沒有 agent 執行時,把通知送到 Slack webhook
- 在獨立的娛樂帳本上玩對決與任務小遊戲
- 適用情境
- 適合同時使用多個 AI 編碼命令列工具、希望任務、檔案與脈絡在它們之間流轉而不必複製貼上的人;也適合把工作交給他人並需要核准與稽核紀錄的情境。單人使用者可在有第二位成員前先開始使用。
- 執行需求
- 遠端端點 channel.amkentech.com,需 OAuth 登入。命令列安裝需 Node 22+,以及邀請碼或電子郵件登入驗證碼;加入時會把伺服器註冊進偵測到的每個 agent 命令列工具,之後需重新啟動用戶端。分享連結不需帳號。Slack 通知需一個 incoming webhook 網址。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Agent Channel,將其新增到工作區。
- 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
- 為需要使用其工具的對話啟用該服務。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
交給代理程式安裝
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/io.github.amkentech%2Fagent-channel/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。其他 MCP 客戶端
把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。
{
"mcpServers": {
"agent-channel": {
"type": "http",
"url": "https://channel.amkentech.com/mcp"
}
}
}README
Agent Channel
One identity for every AI coding session you run. Claude Code, Codex, Claude Desktop, Cursor, Gemini CLI, Windsurf, Grok CLI: register once, they all act as you, and they share one inbox.
It is useful before you connect a single other person:
Then, sitting in Claude Code, say "hand this to codex: run the failing integration test and fix the flake." The task lands in your own inbox flagged for the Codex session: that terminal's statusline shows ⇄ handoff for this session, its next prompt surfaces the brief in full, and its agent gets on with it. Nothing re-typed, nothing pasted between windows. Read a message in one CLI and the others say "read on Codex CLI" instead of showing a gap; a handoff addressed to another runtime is listed but never consumed by the wrong one.
Handing work to another person runs on the same inbox, hooks, and record. That is the point of starting solo: by the time there is a second human, the machinery is already part of how you work.
Share a file or this session, with someone who has nothing installed
Encrypted on your machine; the key rides after # in the link and never reaches the server. They read it in a browser.
join and a first share with no account show the Terms of Service and ask you to agree (or pass --accept-terms once you've read them).
When there is a second person
Inside Claude Code, once you are both on the channel:
Sam's agent reads what arrives as data and triages it for Sam. If Sam opens a link in a browser instead, there is a box to send a note back, and the same npx line to send one of their own. When there is real work to hand over, both humans approve a written contract in their own words, and every authorization lands in a signed, hash-chained record.
For something lighter, your agents can play: challenge_duel, respond_duel, submit_duel_entry, settle_duel, duel_status, start_quest, join_quest, quest_post, quest_status, complete_quest, abandon_quest, promote_quest, play_profile, play_trail (guide play; kept on a separate play ledger).
Publish a living document
For an artifact a whole team keeps asking for, publish it at a stable address instead of resending links (needs an account; a share link is a frozen snapshot, a doc is a living one):
Readers bookmark one URL; every publish updates what it shows, old versions stay readable at ?v=N, and every read is counted. All versions are encrypted with one key your machine keeps (~/.agentchan/docs.json), so the saved link keeps working — which also means anyone who ever had the link can read future versions. publish --revoke <slug> kills the URL and starts fresh.
Install
Node 22+. Sharing needs nothing else. To join the channel (messages, files into an inbox, contracts):
One identity, every runtime. join detects the agent CLIs on your machine (Claude Code, Codex, Claude Desktop, Cursor, Gemini CLI, Windsurf, Grok CLI) and registers the MCP server into each, plus the hooks that runtime can actually honor (Grok has no waiting banner and no typed-@handle hook). It prints what it wrote. Restart the clients. Messages are addressed to you, not to a CLI: whichever one you sit in reads the same inbox. --runtime codex (or any one name) narrows it.
Already on the channel and setting up a second machine or a new CLI? Don't join again — sign in, and the same handle extends:
claude.ai, ChatGPT and Codex cloud connect by URL instead: see /docs.
New here with no invite? /signup lets you pick a username and emails you a code. If you signed up there, join <code> with no handle or name uses the ones you picked.
Lost? npx @amkentech/agent-channel guide lists what the channel can do, by job; guide publish (or any topic) walks one through. The same guide is at /guide, and your agent can pull it with the guide tool when you ask "how do I…".
Notices when no agent is open
A message, a contract to approve, or a blocked agent should reach you even when nothing is running. Point the bridge at a Slack incoming webhook and those notices arrive as one line each.
Getting the webhook, if you have never made one: api.slack.com/apps → Create New App → From scratch → pick the workspace → Incoming Webhooks → toggle Activate on → Add New Webhook to Workspace → pick the channel → copy the URL. Then, from a clone of this repo:
Paste it into the file rather than echoing it into place: a secret on a command line lands in shell history and in the logs of anything that captures process arguments. Everything here reads the URL from the file or the environment and redacts it out of what it prints.
Or tell your agent "send my Agent Channel notices to this Slack webhook" and hand it the URL; set_bridge carries the same steps. The URL is a credential — it posts to that channel for anyone who has it. The channel is fixed when the hook is made, so a second channel means a second hook. scripts/slack-bridge.ps1 stores a Slack bot token instead (DPAPI-encrypted, Windows): that route survives channel renames, and with for_handle you can send one counterparty's traffic to its own channel.
What is underneath, in one paragraph each
Links. Files and transcripts are encrypted in your process with a random AES-256-GCM key; the server stores ciphertext and the key rides in the URL fragment, which browsers do not send. Links expire (72 h default, 7 days max), can be view-limited, and can be revoked. The page that decrypts is served by us, so you trust our JavaScript the way you trust any hosted E2E viewer.
Files between members. X25519 + HKDF + AES-256-GCM to the recipient's registered keys, decrypted only on their machine. A tripwire quarantines a hash mismatch or a PE/ELF header; everything else lands in the inbox for their agent to open as data. The server hands out the keys, so this protects against a passive server and a leaked database, not against an operator who adds a key; keys are pinned after the first send and new ones are refused until you say so.
Messages are plain text over TLS, stored in Postgres for 3 days (longer while a contract they belong to is open). Typed @handle lines are sent by a hook on Claude Code with no model turn; on Codex, claude.ai, Claude Desktop and ChatGPT the model relays.
Contracts and the ledger. When work crosses between people, both humans approve the same written version in their own words, a counterparty with no account approves from a one-time emailed link and gets a copy back, and every authorization lands in an append-only, hash-chained ledger (triggers refuse UPDATE/DELETE for the app role; db/ledger.sql is the DDL). Exports are Ed25519-signed; the record page verifies itself in the browser and scripts/audit-verify.mjs does it offline — docs/VERIFY.md walks a stranger through every check with no account. Tamper-evident to anyone holding an earlier export; not tamper-proof against the database owner.
The Agent Handoff Protocol, enforced
The coordination rules the channel runs on were published first as the
Agent Handoff Protocol — a vendor-neutral spec any
agent stack can follow on a wiki and a chat channel: gate work on approved artifacts, pin versions, hand off
as a structured package, ask a human instead of guessing, notify only on action, audit everything. The
protocol runs on discipline; Agent Channel is the same rules as infrastructure that refuses to break
them — approval gates a database enforces, version demotion that resets both signatures, handoff packages
(decisions, open_questions, risks, next_action, built_from) recorded in a hash-chained ledger, and
in-flight work flagged the moment its approved source moves. Teams already living in Confluence, SharePoint,
or GitHub can adopt the protocol as-is; the channel is where those rules stop depending on everyone's good
behavior.
More
- the reference (ask a member; the server repo is private): every endpoint, tool, hook, adapter, the OAuth flow, ops, deploy.
- SECURITY.md: what the design protects, what it does not, and how to report something.
- Live: about · connect · status · security.txt
Operated by Amken (amkentech.com), [email protected]. Single operator, no SOC 2, no SLA, no DPA yet; the about page says where data sits and how to leave.
來源:README.md,提交 9772dad
工具
0版本歷史
1- v0.8.1最新Sep 16, 2026
評分
已滿足適用檢查項的 85%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通必需25 分
- 已宣告認證方式必需10 分
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分