{"id":47704578,"url":"https://github.com/nodus-rs/nodus","last_synced_at":"2026-05-25T06:08:07.497Z","repository":{"id":344820363,"uuid":"1183249333","full_name":"nodus-rs/nodus","owner":"nodus-rs","description":"Install skills, agents, rules, and commands from GitHub or a local path, lock the exact version, and write the runtime files your repo actually uses.","archived":false,"fork":false,"pushed_at":"2026-03-27T21:29:10.000Z","size":811,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-27T23:29:40.946Z","etag":null,"topics":["agent","claude-code","codex","opencode","package-manager","plugin-manager"],"latest_commit_sha":null,"homepage":"https://nodus.elata.ai","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nodus-rs.png","metadata":{"files":{"readme":"README.cn.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-16T12:24:47.000Z","updated_at":"2026-03-27T21:29:13.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nodus-rs/nodus","commit_stats":null,"previous_names":["wendellxy/nodus","nodus-rs/nodus"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/nodus-rs/nodus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodus-rs%2Fnodus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodus-rs%2Fnodus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodus-rs%2Fnodus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodus-rs%2Fnodus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nodus-rs","download_url":"https://codeload.github.com/nodus-rs/nodus/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodus-rs%2Fnodus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31312744,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","claude-code","codex","opencode","package-manager","plugin-manager"],"created_at":"2026-04-02T17:51:08.790Z","updated_at":"2026-05-25T06:08:07.491Z","avatar_url":"https://github.com/nodus-rs.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./assets/nodus-mark.svg\" alt=\"Nodus 标识\" width=\"144\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eNodus\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003e用一条命令，把 agent 包接入你的仓库。\u003c/strong\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Nodus 可以从 GitHub、Git URL 或本地路径安装 agent 包，锁定精确版本，\n  并且只写入当前仓库实际会被 adapter 读取的运行时文件。\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"./README.md\"\u003eEnglish\u003c/a\u003e • 简体中文\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#install\"\u003e安装\u003c/a\u003e •\n  \u003ca href=\"#for-ai-assistants\"\u003e给 AI 助手\u003c/a\u003e •\n  \u003ca href=\"#quick-start\"\u003e快速开始\u003c/a\u003e •\n  \u003ca href=\"#cli-help\"\u003eCLI 帮助\u003c/a\u003e •\n  \u003ca href=\"#learn-more\"\u003e继续了解\u003c/a\u003e •\n  \u003ca href=\"./CONTRIBUTING.md\"\u003e参与贡献\u003c/a\u003e\n\u003c/p\u003e\n\n## Nodus 是什么？\n\nNodus 是一个面向仓库级 agent tooling 的包管理器。\n\n如果某个包发布了 `skills/`、`agents/`、`rules/` 或 `commands/` 之类的内容，Nodus 可以帮你：\n\n- 从 GitHub、Git 或本地路径把它接入仓库\n- 把你选择的依赖记录到 `nodus.toml`\n- 把精确解析到的版本锁进 `nodus.lock`\n- 把受管理文件写入 `.codex/`、`.claude/`、`.cursor/`、`.github/`、`.agents/`、`.opencode/` 等 adapter 目录\n- 为已支持的 runtime 组合并写出受管理的 MCP server 配置，包括 `.mcp.json`、`.codex/config.toml` 和 `opencode.json`\n- 清理旧的生成文件，同时不碰你自己维护的未受管理文件\n\n对大多数团队来说，最常见的流程是：\n\n```bash\nnodus add \u003cpackage\u003e --adapter \u003cadapter\u003e\nnodus doctor\n```\n\n## 安装\n\n从 crates.io 安装：\n\n```bash\ncargo install nodus\n```\n\n从源码构建需要 Rust 1.88.0 或更高版本。\n\n在 macOS 或 Linux 上安装最新预构建版本：\n\n```bash\ncurl -fsSL https://nodus.elata.ai/install.sh | bash\n```\n\n通过 Homebrew 安装：\n\n```bash\nbrew install nodus-rs/nodus/nodus\n```\n\n在 Windows 上通过 PowerShell 安装最新预构建版本：\n\n```powershell\nirm https://nodus.elata.ai/install.ps1 | iex\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eWindows 安装命令失败？\u003c/summary\u003e\n\n如果命令失败，先安装 PowerShell 7，重启终端，再执行：\n\n```powershell\nwinget install --id Microsoft.PowerShell --source winget\npwsh -NoProfile -Command \"irm https://nodus.elata.ai/install.ps1 | iex\"\n```\n\n\u003c/details\u003e\n\n## 给 AI 助手\n\n如果你希望把 Nodus 的使用流程直接交给 AI 助手，可以把可直接抓取的提示词链接发给它：\n\n- \u003chttps://nodus.elata.ai/zh-cn/prompts/README.md\u003e\n\n这份提示词会给助手更具体的 Nodus 操作说明，帮助它生成合适的 `nodus add` 命令，并最终用 `nodus doctor` 做验证。\n\n## 快速开始\n\n把一个包安装到当前仓库，并检查结果：\n\n```bash\nnodus add nodus-rs/nodus --adapter codex\nnodus doctor\n```\n\n这套流程会：\n\n- 如果仓库里还没有 `nodus.toml`，就先创建它\n- 把依赖写进 `nodus.toml`\n- 解析并锁定精确版本到 `nodus.lock`\n- 为选定或检测到的 adapter 写入受管理运行时文件\n\n如果包里发布了 `mcp_servers`，Nodus 现在也会把对应的 MCP 配置一起写入仓库里的受管理\nruntime 输出。目前包括传统项目级 `.mcp.json`、Codex 的 `.codex/config.toml`，以及\nOpenCode 的 `opencode.json`。\n\n同步之后可以运行 `nodus info .` 查看 `native-integration` 区块。它会列出 Nodus 写出的\nClaude / Codex marketplace、plugin key、plugin 根目录、hook 位置、Codex\n`features.hooks` / `features.plugin_hooks` 状态，以及 Claude `enabledPlugins` 状态。\n\n如果这个包本身是一个会暴露多个子包的 wrapper，`nodus add` 现在默认只记录 wrapper\n本身，不会自动启用全部子包。你可以后续手动编辑 `nodus.toml` 里的 `members`，或者在\n安装时显式传 `--accept-all-dependencies` 一次性启用全部子包。\n\n如果你想装到用户级环境，而不是当前仓库，也可以显式使用 `--global`：\n\n```bash\nnodus add nodus-rs/nodus --global --adapter codex\n```\n\n## CLI 帮助\n\n`nodus --help` 现在就是主要命令指南。\n\n想了解整体流程时先看它，再按需打开子命令帮助：\n\n```bash\nnodus --help\nnodus add --help\nnodus sync --help\nnodus doctor --help\n```\n\n大多数用户最常用的是这些命令：\n\n- `nodus add \u003cpackage\u003e --adapter \u003cadapter\u003e`：把包装进当前仓库\n- `nodus info \u003cpackage-or-alias\u003e`：安装前后查看包信息\n- `nodus sync`：按当前已记录版本重建受管理输出\n- `nodus update`：把依赖升级到更新但仍允许的版本\n- `nodus remove \u003calias\u003e`：移除依赖并清理它拥有的输出\n- `nodus clean`：清理共享的 repository、checkout 和 snapshot 缓存，但不修改项目 manifest 或受管理输出\n- `nodus doctor`：检查仓库、lockfile、共享存储和受管理输出是否一致\n\n## 继续了解\n\n- 文档：\u003chttps://nodus.elata.ai/docs/\u003e\n- 安装说明：\u003chttps://nodus.elata.ai/install/\u003e\n- 包命令生成器：\u003chttps://nodus.elata.ai/packages/\u003e\n- 使用者 manifest 示例：[examples/nodus.toml](./examples/nodus.toml)\n- 包作者 manifest 示例：[examples/package-author.nodus.toml](./examples/package-author.nodus.toml)\n\n如果你想了解包作者工作流、workspace 包装、managed exports 或 relay 这样的进阶主题，优先看网站文档和 `nodus --help`，而不是把这个 README 当成完整命令手册。\nMCP 包也一样：包作者可以在 `nodus.toml` 里发布 `mcp_servers`，使用方则会按所选 adapter\n拿到对应的受管理项目配置。\n依赖包里的 Codex hook 和 activation context 会进入生成的 Codex plugin；需要时 Nodus 会在\n`.codex/config.toml` 中启用 `features.plugin_hooks`。\n\n## 参与贡献\n\n见 [CONTRIBUTING.md](./CONTRIBUTING.md)。\n\n## License\n\nLicensed under [Apache-2.0](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnodus-rs%2Fnodus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnodus-rs%2Fnodus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnodus-rs%2Fnodus/lists"}