Repository navigation
Conversation
Connects ZCode to a local AgentNetwork (anet) node so that the agent in a session can find other AI agents, send them end-to-end encrypted A2A tasks, track them, settle priced skills within operator limits, and answer tasks sent to this machine. - MCP server `anet` (stdio): `bin/anet-mcp.sh` runs `anet mcp` and finds the executable in PATH or the installer's default locations, because a desktop application may not inherit the login shell's PATH. - Skill `anet`: the node's operating guide (tools, task lifecycle, payments, untrusted input). - Skill `anet-setup`: checks, installs (with consent), starts, joins a hub and verifies with `anet doctor`. - Command `/anet-status`. - Linux and macOS only; anet has no Windows build. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Replace the icon with the AgentNetwork organisation avatar and record its source and SHA-256 in assets/icon-sources.json. - Regenerate skills/anet/SKILL.md from the anet guide; the earlier copy kept escaped quotes. - Link the READMEs to the ZCode page of the anet documentation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
🟡 Changes recommended
Installer execution needs download-failure protection, and setup and diagnostic commands must honor the configured executable and identity.
3 open issues
What changed in this PR
Adds anet 0.1.0 to the marketplace, connecting ZCode to a local AgentNetwork node for encrypted agent-to-agent task delegation.
Changes:
- Registers the plugin and configurable MCP launcher.
- Adds setup, delegation, and status instructions.
- Provides bilingual documentation, licensing, and icon provenance.
Validation was not rerun; installation and runtime verification rely on the PR’s reported results.
| File | Description |
|---|---|
| marketplace.json | Registers anet 0.1.0. |
| external_plugins/anet/skills/anet/SKILL.md | Guides delegation and payments. |
| external_plugins/anet/skills/anet-setup/SKILL.md | Guides installation and setup. |
| external_plugins/anet/README.md | Documents usage in English. |
| external_plugins/anet/README_CN.md | Documents usage in Chinese. |
| external_plugins/anet/LICENSE | Supplies Apache-2.0 licensing. |
| external_plugins/anet/commands/anet-status.md | Adds node status reporting. |
| external_plugins/anet/bin/anet-mcp.sh | Locates and launches anet. |
| external_plugins/anet/.zcode-plugin/plugin.json | Defines metadata and settings. |
| external_plugins/anet/.mcp.json | Configures the MCP server. |
| assets/icon-sources.json | Records icon provenance and checksum. |
Review effort: Balanced
| curl --proto '=https' --tlsv1.2 -fsSL https://agentnetwork.org.cn/install.sh -o "${TMPDIR:-/tmp}/anet-install.sh" | ||
| sh "${TMPDIR:-/tmp}/anet-install.sh" |
There was a problem hiding this comment.
Fixed in 7e7b944. The installer is now downloaded into a new private directory from mktemp -d and runs only when curl -f succeeded; the directory is removed afterwards and the step fails when the download fails. Verified in ZCode 3.15.3: the setup skill ran this block, installed anet 0.3.3, and left no file behind.
| 3. If the anet tools are not available in this session, run `anet status` and `anet doctor` in the | ||
| terminal instead and report their output. When anet is not installed or not running, offer the | ||
| `anet-setup` skill of this plugin. |
There was a problem hiding this comment.
Fixed in 7e7b944. All anet commands of the plugin now go through bin/anet-run.sh, which applies anetPath and identity exactly as the MCP launcher does (outside the MCP server it reads only these two plugin settings from the ZCode configuration). The command shows the resolved executable and identity and tells the agent to use that runner instead of a bare anet. Verified in ZCode with the identity setting naming a stopped identity while the default node was running: the report covered the selected identity, not the default node. Covered by tests in the ANet repository.
| anet runs on Linux and macOS (x86-64 and ARM64). On Windows, stop and tell the user that anet | ||
| has no Windows build. | ||
|
|
||
| ## 2. Find the anet executable |
There was a problem hiding this comment.
Fixed in 7e7b944. Setup starts with anet-run.sh --resolve; a configured anetPath that is not an executable is reported and the skill stops without installing another copy or editing the settings. A valid anetPath is used for every later step. Verified in ZCode with anetPath set to a missing file: no installation, configuration unchanged.
|
✅ Internal validation passed. A ZCode maintainer will review the change next; after acceptance, release checks run separately and this PR is closed automatically. |
…ller step - bin/anet-run.sh applies anetPath and identity for the MCP server, the /anet-status fallback and the setup skill, so all reach the same executable and node; an invalid anetPath is reported and never replaced. - The setup skill downloads the installer into a private temporary directory and runs it only after a successful download. - Version 0.1.1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
✅ Internal validation passed. A ZCode maintainer will review the change next; after acceptance, release checks run separately and this PR is closed automatically. |
Require an absolute anetPath, accept only a regular executable file, ignore setting values with line breaks, quote the runner path when it holds spaces, and run the installer through bin/anet-install.sh. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Updated the plugin to 0.1.2 (commits 379ce44 and 7d881ab): |
|
✅ Internal validation passed. A ZCode maintainer will review the change next; after acceptance, release checks run separately and this PR is closed automatically. |
|
Thanks for your contribution! The change has been accepted by the maintainers. Publication to the marketplace is tracked separately; this contribution is now closed. |


Plugin type (required) / 插件类型(必填)
Select exactly one before requesting review. / 发起评审前必须且只能勾选一项。
Affected plugin name(s) / 涉及的插件名称:
anet(Standard plugin)Classify the affected plugin, even when only changing its docs or skills. Adding or removing an interactive page also counts as a UI Plugin change. For multiple plugins, list each name and type; select UI Plugin if any is affected.
按涉及的插件判断,即使本次只改它的文档或 skill 也须声明类型。新增或移除交互页面也属于 UI Plugin 改动。涉及多个插件时分别列出名称和类型,只要包含 UI Plugin 就选择 UI Plugin。
ui.surfacespanels and tool-result pages using_meta.ui.resourceUriboth count. An MCP server or a skill that generates Gen UI alone does not. This declaration is separate from marketplacecategory.ui.surfaces面板和通过_meta.ui.resourceUri展示的工具结果页面都算 UI Plugin。仅有 MCP server 或生成 Gen UI 的 skill 不算。这项声明与市场category分类独立。What / 改动内容
Adds the community plugin
anet0.1.2 underexternal_plugins/anet/, with categorydeveloper-tools. It connects ZCode to a local anet (AgentNetwork) node that holds the agent's identity and exchanges end-to-end encrypted A2A (Agent2Agent protocol) tasks through a hub that relays but cannot read messages. The node runs no model. The change appends one entry (anet, displayName"AgentNetwork (anet)", zh"AgentNetwork(anet)") to rootmarketplace.jsonwithout modifying existing entries, addsassets/anet/icon.png(256x256 PNG fromhttps://avatars.githubusercontent.com/u/305781773?s=256&v=4) and its record inassets/icon-sources.json(matchedBy:official-github-organization-avatar,sha256recorded), and includes an Apache-2.0LICENSEfor the plugin files. No MCP Apps pages orui.surfacesare provided.新增社区插件
anet0.1.2,位于external_plugins/anet/,用途分类为developer-tools。该插件将 ZCode 连接到本地 anet(AgentNetwork)节点,由节点持有智能体身份,并通过仅负责转发、无法读取消息的 hub 交换端到端加密的 A2A(Agent2Agent 协议)任务。节点不运行模型。本次改动在根目录marketplace.json末尾追加一条记录(anet,displayName 为"AgentNetwork (anet)",中文为"AgentNetwork(anet)"),不修改现有条目;新增assets/anet/icon.png(来自https://avatars.githubusercontent.com/u/305781773?s=256&v=4的 256x256 PNG)及其在assets/icon-sources.json中的来源记录(matchedBy为official-github-organization-avatar,已记录sha256),并为插件文件提供 Apache-2.0LICENSE。不提供 MCP Apps 页面或ui.surfaces。deploy/pluginsin https://github.com/ANetResearch/ANet, where one source generates theanetplugin for several agent tools; the ZCode tree is generated intodeploy/plugins/dist/zcode, andexternal_plugins/anetis an exact copy of that tree.external_plugins/anet/LICENSE).anetitself has its own licence (https://github.com/ANetResearch/ANet/blob/main/LICENSE).Components / 组件
anet(plugin:anet:anet).mcp.jsonrunssh ${ZCODE_PLUGIN_ROOT}/bin/anet-mcp.sh, which runsanet mcpthroughbin/anet-run.sh. The runner applies theanetPathandidentitysettings; withoutanetPathit locatesanetinPATH,~/.local/bin,/usr/local/binor/opt/homebrew/bin. A configuredanetPathmust be an absolute path to a regular executable file (a relative path or non-executable target is an error, never replaced by another copy). Setting values containing a line break are ignored, and--resolveprints the runner path quoted when it contains characters the shell would split or expand. Started withsh, so it works when ZIP contents are extracted as0644.timeoutMs:900000. Exposes 14 tools:list_agents,get_agent_card,send_message,wait_task,get_task,list_tasks,cancel_task,submit_payment,reject_payment,reply_task,inbound_pending,get_balance,audit,node_status.anetanet agents wirefor Claude Code (except the final section), enforced by a Go test in the ANet repository.anet-setupanet-setupto avoid colliding with genericsetupskills. Checks, installs (only after explicit user consent via https://agentnetwork.org.cn/install.sh, verifying a signed release manifest and SHA-256), starts the node, joins a hub, and runsanet doctor. Never runs operator-only commands (peers, inbound policy, payments), never reads~/.anet, and never opens or edits the ZCode configuration itself (the runner reads the two plugin settings). Everyanetcommand runs throughbin/anet-run.sh; after consent, installation runsbin/anet-install.sh, which downloads the official installer into a new private temporary directory (mktemp), runs it only after a successful download (curl --proto '=https' --tlsv1.2 -fsSL), and removes the directory afterwards. The skill runs this script instead of a shell one-liner with command substitution, which some agent hosts refuse./anet-status/anet-statusto avoid colliding with built-in/status. Reports node, hub, balance, and spending limits.userConfig)identity,anetPathanetidentity and absolute executable path.Dependencies, network, side effects / 依赖、网络与副作用
anetcommand-line program on Linux or macOS (x86-64, ARM64). No Windows build exists; the README states the plugin does not work on Windows.bin/anet-run.shreads only theanetPathandidentityentries of this plugin from the ZCode configuration. Apart from the consented installation below, the plugin opens no network connections and writes no files. Theanetnode connects to the hub it joined. When the user explicitly consents,bin/anet-install.shdownloads the installer fromagentnetwork.org.cninto a private temporary directory that is removed afterwards, and the installer writes~/.local/bin/anet;anet initwrites~/.anet.a2a-x402within operator-set limits. A new node accepts no tasks, publishes nothing, and has spending limits of0.Testing & verification / 测试与校验
Environment: ZCode 3.15.3 (Linux x64 AppImage under Xvfb), bundled CLI 0.16.9,
anet0.3.3, test modeldeepseek-v4.1-flash-1017via an OpenAI-compatible provider, isolated test home directories.zcode plugins validateaccepted the plugin. Installed both from a ZIP built bybuild_dist.build_zip(all files0644) and from an HTTPS marketplace with a SHA-256-pinned ZIP.zcode plugins list --jsonshowedmcpServerNames: ["plugin:anet:anet"], 2 skills, 1 command, and no diagnostics. A tampered ZIP was rejected with"Plugin zip sha256 mismatch".anet, skillsanetandanet-setup, and commandanet-status. Installation succeeded, and the···menu provides Uninstall. After approving the permission prompt,node_statusreported identity and hub state.anet0.3.3 with 14 tools;node_statussucceeded withanetin~/.local/bin(not onPATH). Missing executable, invalidanetPath, and stopped daemon each exited 1 with a one-line reason. Verified bothanetPathandidentitysettings.anet0.3.3, signed manifest), started the node, joined local test hubhttp://127.0.0.1:48731, rananet doctor(all checks passed except the expected recovery-passphrase warning), and leftanet identity protectto the user./anet-statusin a new session reported identity, hub, balance, limits, and warnings.text.digestcapability, the agent loaded theanetskill, calledlist_agentsandsend_messagefor"hello", and returnedTASK_STATE_COMPLETED, effect statusOK, verified receipt, and SHA-256 digest2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824.bin/anet-run.sh, which appliesanetPathandidentityfor the MCP server, the/anet-statusfallback and the setup skill (outside the MCP server it reads only these two plugin settings from the ZCode configuration). Re-run in ZCode 3.15.3 withdeepseek-v4.1-flash-1017: setup from scratch used the new installer block (privatemktemp -ddirectory, run only after a successful download, the directory removed afterwards);/anet-statuswithidentityset to a stopped named identity, while the default node was running, reported the selected identity;anetPathset to a missing file made setup stop without installing and without changing the configuration; delegation end to end again returnedTASK_STATE_COMPLETED, effect statusOK, a verified receipt and the correct digest. Unit tests for the runner are in the ANet repository (internal/agentwire/zcode_plugin_test.go).379ce44and7d881ab):bin/anet-run.shacceptsanetPathonly as an absolute path (a relative path is an error because it would resolve against the session working directory, which may be an untrusted workspace); the executable found viaPATHoranetPathmust be a regular executable file; setting values containing a line break are ignored, and on macOS (plutilfallback) settings are read only when a single marketplace entryanet@<marketplace>exists and only string values count;--resolvequotes the runner path when it contains characters the shell would split or expand (such as the space inApplication Support); the setup skill delegates installation after consent tobin/anet-install.sh(downloads the official installer withcurl --proto '=https' --tlsv1.2 -fsSLinto a privatemktempdirectory, runs it only if the download succeeded, and removes the directory afterwards) instead of using a shell one-liner with command substitution;README.mdandREADME_CN.mdtell users of a named identity to runanet --id <name> upon[daemon_not_running]. Verified in ZCode 3.15.3 headless withdeepseek-v4.1-flash-1017: installed from a marketplace, setup from scratch ranbin/anet-install.shand the official installer, started the node and joined a local test hub, and delegation of"hello"to a freetext.digestcapability returnedTASK_STATE_COMPLETED, effect statusOK, a verified receipt, and the correct SHA-256 digest. Runner unit tests are in the ANet repository (internal/agentwire/zcode_plugin_test.goanddeploy/pluginstests).anet).Repository checks (re-run on 0.1.2):
python3 scripts/validate.py:OK: 47 plugin(s) validated.git diff --check: clean.pytest tests(excludingtests/test_mimosa_plugin.py, which has 4 failures that fail identically on unmodifiedmainin the same environment, andtests/test_parallel_publish.py, which requires a publisher module not in the repository): 87 passed, 19 skipped.vitest run tests/local-marketplace.test.ts: 19 passed.pnpm build && python3 scripts/build_dist.py: passed (exit 0) on Linux x64 with the Craft toolchain installed; it packagesplugins/anet/0.1.2/plugin.zip(20919 bytes).Self-check / 自查清单
external_plugins/<name>/; existing fixes retain ownership / 插件名唯一且 kebab-case,外部新增插件位于external_plugins/<name>/,已有插件修复保留原归属categoryis set independently of publisher ownership / 用途分类category已填写,与维护归属分开versionbumped in BOTHplugin.jsonandmarketplace.json(artifacts are immutable) /plugin.json与marketplace.json两处版本号已同步升级(制品不可变): new plugin,0.1.2in bothREADME.md(EN) andREADME_CN.md(中文) both updated and equivalent / 中英文 README 均已更新且语义一致description_i18nhas bothenandzh-CN/description_i18n包含en与zh-CNpython3 scripts/validate.pyandpython3 scripts/build_dist.pypass locally / 本地校验与构建均通过🤖 Generated with Claude Code