magents

io.github.abnegate由 GitHub 账号 abnegate 发布v0.14.2更新于 Oct 25, 2026

Shared session bus for Claude, Codex, Copilot, Cursor, Gemini, AGY, Grok, and OpenCode.

概览

AI 生成的概览

一个本地 MCP 服务器兼命令行工具,让一个编码代理读取、搜索、发消息并交接给同一台机器上其他代理的会话。

可以做什么
列出并查找各受支持编码代理的实时与近期会话,可按目录或分支筛选,读取精简转录或摘要,包括其他会话改动的文件以及当前连接身份。跨转录全文搜索,并搜索、读取和写入 Claude、Codex 或 Grok 的记忆笔记,另有按工作目录共享的草稿笔记。向已有聊天发送用户消息,把当前会话交接进另一个实时聊天,并通过邮箱收发回复、等待与确认。为独立任务启动新的无头持久会话,自带提示词和工作目录,并可停止受监管的会话。收集并跟踪学习状态。
适用场景
适合经常同时运行多个编码代理(Claude、Codex、Copilot、Cursor、Gemini、Grok、OpenCode 等)并在窗口之间丢失上下文的场景:可让一个代理接着另一个的工作,向指定实时聊天发消息,或为独立任务启动隔离会话。
运行要求
以本地进程运行,需 macOS 或 Linux(Claude 实时注入仅限 Unix);通过 Homebrew、APT、发布二进制、容器或 Cargo 安装 magents,再向各宿主注册 MCP 服务器。它读取磁盘上各代理自己的会话存储,因此这些宿主需已安装并有会话记录。未声明 API 密钥或环境变量。
安装前请注意
它会读取本地代理转录和记忆文件,并可写入 Claude、Codex 或 Grok 的第一方记忆及共享笔记。它能向实时聊天发消息、交接会话并启动会操作你文件的新代理会话,使用前请确认目标。被启动的代理沿用宿主原生审批策略;服务器声明不添加任何审批绕过。

安装

在 SourceWeft 中

  1. 打开 控制台中的 magents,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[magents shared session bus across Claude, Codex, Grok, and Cursor]

[HOL Trust]

Claude Code, Codex, Copilot, Cursor, Gemini, AGY, Grok, and OpenCode already keep transcripts on disk. magents is the shared API over those sessions - an MCP server plus a small CLI - so one agent can pick up where another left off without you recapping, ping a specific live chat when you are not sitting in the middle, or start an independent persisted chat for a complete task.

It is not a second copy of history and not a fire-and-forget council. Existing chats stay the default unit of work; new chats are for independent work that benefits from its own session and working directory.

Install · Plugins · What you can do · Quick start · Tools · CLI · Releases

Why

You already run more than one coding agent. The pain is not "more models" - it is context trapped in another window.

PainWhat magents does
You switched hosts mid-taskRead the live session and continue here
Agent A hit a wall Agent B ownsInject into that live chat without you as the messenger
A subtask can run aloneSpawn a headless persisted session with a complete prompt + reply path

What you can do

1. Handoff without a new thread
You were in Claude on the disaster-recovery branch. Now you are in Grok. Ask Grok what they were doing; it reads the live session and continues. No paste buffer. No "new chat, here's the context."

2. Send when you are not the messenger
Three agents running. Claude hits a wall Codex owns. Claude injects into that Codex thread and keeps going - especially useful when the sender already has the failing query, file, and constraint you would otherwise reconstruct.

3. Spawn independent work
When a task can proceed alone, start a new headless persisted session with a complete prompt, an isolated working directory when files could collide, and a request to reply through magents. Spawned agents keep their host's native approval policy - spawning does not add an approval bypass.

Install

Homebrew (macOS / Linux)

bash
brew install abnegate/tap/magentsmagents install --all

APT (Debian / Ubuntu)

bash
curl -fsSL https://abnegate.github.io/apt-repo/pubkey.gpg | sudo gpg --dearmor -o /usr/share/keyrings/abnegate.gpgecho "deb [signed-by=/usr/share/keyrings/abnegate.gpg] https://abnegate.github.io/apt-repo stable main" | sudo tee /etc/apt/sources.list.d/abnegate.listsudo apt update && sudo apt install magentsmagents install --all

Binary

From Releases:

bash
curl -LSsf -o magents \  "https://github.com/abnegate/magents/releases/latest/download/magents-$(uname -m | sed 's/arm64/aarch64/')-$(uname -s | tr 'A-Z' 'a-z' | sed 's/darwin/apple-darwin/;s/linux/unknown-linux-musl/')"chmod +x magents./magents install --all

Assets: magents-x86_64-unknown-linux-musl, magents-aarch64-unknown-linux-musl, magents-aarch64-apple-darwin, magents-x86_64-apple-darwin.

Container

bash
docker pull ghcr.io/abnegate/magents:latestdocker run --rm --user "$(id -u):$(id -g)" \  -v "$HOME:$HOME" -e HOME \  ghcr.io/abnegate/magents list --live

Cargo

bash
cargo install magents --lockedmagents install --all

From source

bash
cargo install --path .magents install --all

Plugins

Host plugins package the magents skill plus an MCP entry that runs magents mcp. Install the CLI first (brew install abnegate/tap/magents), then load the matching folder under plugins/.

HostPath
Claude Codeplugins/claude
Codexplugins/codex
Cursorplugins/cursor
Gemini CLIrepo root (gemini-extension.json)
AGY CLI / Antigravityplugins/agy

Gemini CLI installs the extension straight from this repository:

bash
gemini extensions install https://github.com/abnegate/magents

AGY CLI installs the plugin from plugins/agy (manifest, MCP, and skills):

bash
agy plugin install https://github.com/abnegate/magents/plugins/agy

Details and marketplace notes: plugins/README.md.

Quick start

magents install --all registers the stdio MCP server with each installed host, skipping hosts whose required binaries are unavailable:

  • Grok (grok mcp add magents -- magents mcp)
  • Claude Code (claude mcp add --scope user magents -- magents mcp)
  • Codex (codex mcp add magents -- magents mcp)
  • Cursor (~/.cursor/mcp.json)
  • OpenCode ($XDG_CONFIG_HOME/opencode/opencode.json, default ~/.config/opencode)
  • Gemini CLI (gemini mcp add -s user magents magents mcp)
  • GitHub Copilot CLI (copilot mcp add magents -- magents mcp)
  • AGY CLI (agy mcp add magents magents mcp)

It also writes the magents and learn skills under supported hosts' skills directories (~/.grok/skills/{magents,learn}, ~/.claude/skills/{magents,learn}, ~/.cursor/skills/{magents,learn}, and the OpenCode / Gemini / AGY / Copilot equivalents). /learn reads every local agent's sessions, not only Grok.

For Grok and Codex only, point a host at the binary yourself:

toml
[mcp_servers.magents]command = "/path/to/magents"args = ["mcp"]

For Cline, open MCP Servers → Configure MCP Servers and add this to cline_mcp_settings.json:

json
{  "mcpServers": {    "magents": {      "command": "magents",      "args": ["mcp"]    }  }}

Restart the agent session (or refresh /mcps) so the tools appear.

Try:

bash
magents list --livemagents digest grok:latestmagents handoff grok:latest --reason "continuing in grok"

Tools

ToolPurpose
list_sessionsLive and recent sessions; filter by cwd / branch
get_sessionLookup by id, title, live name, pid, or agent:ref
read_transcriptCompact inert handoff (last request, last action, recent turns)
search_transcriptsFull-text search across those transcripts
search_memoriesPhrase search over Claude / Codex / Grok memory markdown
create_memoryWrite a note into Claude / Codex / Grok first-party memory
spawn_sessionStart a new headless persisted session for independent work
send_messageDeliver a user turn to an existing chat
handoffCompact this session and inject it into another live chat
inbox / ack / await_reply / replyMailbox for cross-session replies
session_digestCompact last request / action / cwd / branch / clipped turns
files_touchedPaths another session edited
stop_sessionStop a magents-supervised spawn or resume
read_memoryRead one Claude / Codex / Grok memory markdown file
get_note / put_noteMagents-owned shared scratch for a working directory
whoamiDetect this connection; resolve session via env, socket, or unique cwd
learn_collectCollect compact records from every local agent's full history for /learn, or estimate a run
learn_stateRead or update /learn state, decisions, and trash

Refs can be prefixed: claude:disaster recovery, grok:latest, codex:<uuid>, cursor:latest, opencode:<id>, gemini:latest, agy:<id>, copilot:<id>.

CLI

bash
magents list --livemagents list --agent grok --query edgemagents get 'claude:disaster recovery'magents read grok:latest -n 20magents digest grok:latestmagents search "dedicated databases" --agent claudemagents spawn codex --prompt-file /path/to/task.md --cwd /path/to/isolated-worktreemagents send grok:latest "handoff: the DR runbook is in docs/RUNBOOK.md"magents handoff grok:latest --reason "continuing in grok"magents whoamimagents learn estimatemagents learn collectmagents learn planmagents learn collect --since-lastmagents learn state

Pass --output json on any command for stable machine-readable stdout.

magents with no args on a piped stdin starts the MCP server.

magents spawn reads the complete task from stdin by default (--prompt-file supported). Prompt text is never a process argument.

How sessions talk

list_sessions / read_transcript / search_transcripts / search_memories are the handoff. create_memory writes into another harness's first-party memory (Claude, Codex, or Grok).

Choose the write path by where the work should happen:

  • spawn_session - new, headless, persisted, independent session. Complete task, verification, reply-through-magents, isolated cwd when edits could collide. Success means launch accepted (accepted: true, status: "starting"), not that the task finished.
  • send_message - existing session. Always records mailbox mail; injects a live user turn where the host supports one.
  • handoff - compact this session into an existing live session so that session continues the same work.

Delivery routes (existing chats)

send_message always appends to the mailbox, then prefers a native live path and otherwise starts a supervised headless resume:

SurfaceDelivery route
Claude DesktopUDS user turn (/tmp/cc-socks/<pid>.sock), then tmux or supervised claude -p --verbose --resume <id>
Claude CLIUDS when available, then tmux or supervised resume
GrokSupervised grok --cwd <cwd> --resume <id> --output-format streaming-json --prompt-file /dev/stdin
Codex Desktop / VS CodeLength-prefixed JSON-RPC on ~/.codex/ipc/ipc.sock, then supervised codex exec ... resume
Codex CLISupervised codex exec --json -C <cwd> resume <id> -
CursorSupervised cursor-agent -p --output-format stream-json --resume <id> --workspace <cwd>
OpenCodeSupervised opencode run --format json --session <id>, started in the session cwd (with PWD set)
Gemini CLISupervised gemini --resume <id> --output-format stream-json
AGY CLI / AntigravitySupervised agy --input-format stream-json --output-format stream-json --conversation <id>
GitHub Copilot CLISupervised copilot --resume=<id> --output-format json

Supervised routes pass the user turn through stdin and do not expose transcript text, tokens, or raw host output in the response. Spawn never adds approval bypasses (--dangerously-skip-permissions, --yolo, --full-auto, etc.).

Session discovery sources: Claude ~/.claude and ~/.claude-* (plus Desktop Claude / Claude-* session dirs), Grok ~/.grok/active_sessions.json, Codex sqlite + rollout JSONL, Cursor agent-transcripts, OpenCode SQLite (opencode.db and channel databases, v1 session and v2 session_v2 / session_message tables), Gemini journals, AGY CLI conversations / brain plus Antigravity desktop conversation_summaries, Copilot session-state. Claude sessions include a profile field when they come from a named home (work for ~/.claude-work). Resume and live inject use that home's CLAUDE_CONFIG_DIR.

Tests

bash
cargo test --locked --all-targetscargo llvm-cov --locked --all-targets --ignore-filename-regex 'src/main.rs|/rustlib/' --fail-under-lines 98

CI runs format, clippy (-D warnings), the full test suite, and a 98% line-coverage gate.

Requirements

  • Rust 1.97+
  • macOS or Linux (Claude UDS inject is Unix-only)

License

MIT

来源:README.md,提交 6a9c7c6

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

5
  1. v0.14.2最新Oct 15, 2026
  2. v0.14.1Oct 14, 2026
  3. v0.13.2Oct 13, 2026
  4. v0.12.0Sep 22, 2026
  5. v0.11.0Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分