内容
<div align="center">
<img src=".github/readme-assets/nora-logo.png" alt="Nora" width="112" height="112" />
<h1>诺拉</h1>
<p><strong>在您自己的基础设施上运行 OpenClaw 和 Hermes 船队 — 从一个控制面板。</strong></p>
</div>
<p align="center">
<strong>OpenClaw + Hermes</strong> ·
<strong>Docker + Kubernetes GA</strong> ·
<strong>69 种集成</strong> ·
<strong>Apache-2.0</strong>
</p>
<p align="center">
<a href="https://github.com/solomon2773/nora"><img src="https://img.shields.io/badge/%E2%98%85-%E6%90%86%E6%98%9F_Nora-f2d7a1?style=for-the-badge&labelColor=071018" alt="在 GitHub 上给 Nora 点赞" /></a>
<a href="https://noradocs.solomontsao.com/quickstart"><img src="https://img.shields.io/badge/%E2%86%92-%E5%BF%AB%E9%80%A6%E5%90%BF-8ae6ff?style=for-the-badge&labelColor=071018" alt="快速开始" /></a>
</p>
<p align="center">
<a href="https://github.com/solomon2773/nora/releases"><img src="https://img.shields.io/github/v/release/solomon2773/nora?color=6d28d9&label=%E5%88%8A%E6%96%B0%E5%88%8A%E6%9C%AC" alt="最新版本" /></a>
<a href="https://github.com/solomon2773/nora/actions/workflows/ci-quality.yml"><img src="https://img.shields.io/github/actions/workflow/status/solomon2773/nora/ci-quality.yml?branch=master&label=CI" alt="CI 状态" /></a>
<a href="https://www.npmjs.com/package/@noraai/cli"><img src="https://img.shields.io/npm/v/%40noraai%2Fcli?label=%40noraai%2Fcli&color=cb3837" alt="@noraai/cli on npm" /></a>
<a href="https://www.npmjs.com/package/@noraai/mcp-server"><img src="https://img.shields.io/npm/v/%40noraai%2Fmcp-server?label=%40noraai%2Fmcp-server&color=cb3837" alt="@noraai/mcp-server on npm" /></a>
</p>
<p align="center">
<a href="https://noradocs.solomontsao.com">📚 文档</a> ·
<a href="https://noradocs.solomontsao.com/self-hosting">自行托管</a> ·
<a href="https://noradocs.solomontsao.com/concepts/architecture">架构</a> ·
<a href="https://noradocs.solomontsao.com/compare">诺拉对比</a> ·
<a href="CHANGELOG.md">更新日志</a>
</p>
---
<p align="center">
<a href="https://nora.solomontsao.com/walkthrough.mp4">
<img src=".github/readme-assets/walkthrough.gif" alt="观看诺拉的快速演示" width="900" />
</a>
</p>
<p align="center">
<sub>▶ <b><a href="https://nora.solomontsao.com/walkthrough.mp4">观看快速演示</a></b></sub>
</p>
## 什么是诺拉?
诺拉是一个自托管的AI代理运维平台,用于在您控制的基础设施上运行自主代理船队 — 无论您是标准化OpenClaw、Hermes,还是在同一个操作界面中同时使用两者。
大多数在生产环境中运行代理的团队最终都会在运行时周围重建相同的层:部署工作流、机密管理、监控、日志、终端、模板和单独的管理界面。诺拉的存在就是为了避免每次运行时对话更改时重写这一层。操作工作流位于 `/app` 下;平台范围的管理位于 `/admin` 下。
→ [为什么选择诺拉](https://noradocs.solomontsao.com/introduction#why-teams-choose-nora) · [运行时模型](https://noradocs.solomontsao.com/concepts/runtimes) · [部署架构](https://noradocs.solomontsao.com/concepts/architecture#deployment-topologies)
## 功能
- **部署和操作运行时** — 将 OpenClaw 和 Hermes 代理部署到 Docker 或 Kubernetes(两者均为 GA 版本,具有官方 Helm 图表),并具有完整的生命周期控制:部署、启动/停止、重启、重新部署和版本历史记录。
- **迁移现有运行时** — 通过上传的包或实时 Docker/SSH 检查来适配您已经运行的代理。
- **实时操作访问** — 流式日志、交互式终端进入正在运行的容器、文件浏览器/编辑器,以及 OpenClaw 网关和 Hermes 仪表板嵌入在操作界面中。
- **监控和警报** — 每个代理的指标和成本、舰队需要注意的汇总(错误、卡住、超出预算、停滞的遥测),以及用户定义的警报规则发送到您的渠道。
- **预算和定时运行** — 每个代理的 LLM 预算硬上限,自动暂停,加上用于代理运行的循环 cron 调度,带有队列重试和扫描守护进程。
- **机密管理** — 提供者密钥使用 AES-256-GCM 在静止时加密,并同步到正在运行的运行时;生产环境拒绝在没有有效加密密钥的情况下启动;SSH 主机密钥固定保护远程(BYOC)Docker 主机。
- **网络隔离** — 基线 Kubernetes NetworkPolicy 进入隔离,具有管理员管理的 CIDR 允许规则,以及用于不受信任代码的实验性 NemoClaw 硬化沙箱。
- **代理中心** — 可安装的、版本化的启动模板,快速从零开始构建工作代理。
- **集成** — 69 种集成提供程序(源代码控制、聊天、云、观测性、矢量数据库、自动化)和 17+ 种 LLM 提供程序;将连接的集成公开给代理,作为每个代理的 MCP 服务器。
- **自动化一切** — 公共 REST API(OpenAPI 3.1)、`@noraai/cli` 和 `@noraai/mcp-server`,适用于 Claude Code、Claude Desktop 和 Cursor。
- **工作空间和 RBAC** — 多租户工作空间,具有排名角色、平台管理界面、帐户事件历史记录和加密的托管备份。
## 截图
<table>
<tr>
<td align="center" width="50%">
<img src=".github/readme-assets/proof-operator-dashboard.png" alt="操作仪表板" /><br />
<sub><b>操作仪表板</b></sub>
</td>
<td align="center" width="50%">
<img src=".github/readme-assets/proof-operator-fleet.png" alt="舰队监控" /><br />
<sub><b>舰队监控和需要注意的分类</b></sub>
</td>
</tr>
<tr>
<td align="center" width="50%">
<img src=".github/readme-assets/proof-operator-openclaw-ui-tab.png" alt="嵌入式 OpenClaw 网关 UI" /><br />
<sub><b>OpenClaw 网关嵌入诺拉</b></sub>
</td>
<td align="center" width="50%">
<img src=".github/readme-assets/proof-operator-hermes-webui-tab.png" alt="嵌入式 Hermes WebUI" /><br />
<sub><b>Hermes WebUI 嵌入诺拉</b></sub>
</td>
</tr>
<tr>
<td align="center" colspan="2">
<img src=".github/readme-assets/proof-operator-deploy-flow.png" alt="代理部署流程" /><br />
<sub><b>代理部署流程</b></sub>
</td>
</tr>
</table>
## 快速开始
> **要求:** macOS 12+、Linux 或 Windows 10+(WSL2),并安装 Docker Engine + Compose v2。安装程序会检查 Docker、Git 和 OpenSSL,并安装任何缺失的组件。
**macOS / Linux / WSL2:**
```bash
curl -fsSL https://raw.githubusercontent.com/solomon2773/nora/master/setup.sh | bash
```
<details>
<summary><strong>希望先检查安装程序?</strong></summary>
```bash
git clone https://github.com/solomon2773/nora.git
cd nora
less setup.sh
bash setup.sh
```
</details>
**Windows(PowerShell):**
```powershell
iwr -useb https://raw.githubusercontent.com/solomon2773/nora/master/setup.ps1 | iex
```
> **Windows 需要 [PowerShell 7+](https://learn.microsoft.com/powershell/scripting/install/installing-powershell-on-windows)。** 默认的 Windows PowerShell 5.1 不受支持 — 从 `pwsh` 7 会话中运行上述命令。
**Kubernetes(Helm):**
```bash
helm show chart oci://ghcr.io/solomon2773/nora --version 0.6.0
```
公共 OCI 图表安装完整的诺拉控制面板。请参阅 [Helm 说明](https://noradocs.solomontsao.com/self-hosting#kubernetes-helm) 以获取所需的机密和 Ingress 选项。
安装程序验证先决条件,生成或保留机密,可选地创建启动管理员,选择空闲的本地端口,并在默认端口被占用时选择另一个端口(如 `8081`)。安装完成后,打开安装程序打印的 URL。本地模式默认为 `http://localhost:8080`,但安装程序可能会选择另一个端口,如 `8081`。然后按照 [前 15 分钟的快速教程](https://noradocs.solomontsao.com/quickstart) 进行操作。
> **还没有 API 密钥?** 注册后,在入门页面上选择 **试用演示代理**。诺拉部署一个针对其内置的确定性演示提供者的工作代理,以便您在没有密钥和成本的情况下验证聊天和操作工作流。
## 文档
完整的文档位于 **[noradocs.solomontsao.com](https://noradocs.solomontsao.com)**。MDX 源代码位于 [`docs/`](./docs)。
| 章节 | 内容 |
| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ |
| [快速开始](https://noradocs.solomontsao.com/quickstart) | 安装并在 15 分钟内验证您的第一个代理 |
| [概念](https://noradocs.solomontsao.com/concepts/architecture) | 架构、代理、运行时、工作空间、LLM 提供者、代理中心 |
| [配置](https://noradocs.solomontsao.com/configuration/platform-modes) | 平台模式、环境变量、提供者后端、TLS / 公共域 |
| [指南](https://noradocs.solomontsao.com/guides/deploy-agent) | 部署代理、提供者、集成、渠道、监控、警报规则、备份、代理中心、NemoClaw |
| [API 参考](https://noradocs.solomontsao.com/api/overview) | 认证、工作空间、代理、渠道、集成、提供者、监控、警报规则 |
| [支持](https://noradocs.solomontsao.com/support/faq) | 常见问题、故障排除 |
## 架构
```text
Nginx
├── / → 前端-营销 (Next.js)
├── /app/* → 前端-仪表板 (Next.js)
├── /admin/* → 管理-仪表板 (Next.js)
└── /api/* → 后端-API (Express.js)
├── PostgreSQL
├── Redis + BullMQ (部署、clawhub-jobs、备份、警报交付)
├── 工作线程-提供者
├── 工作线程-备份
└── 运行时适配器/配置文件 (Docker GA · k3s/k8s GA · NemoClaw 实验 · Proxmox 计划)
```
完整的架构文档 — 系统地图、队列/工作线程边界、RBAC、迁移合同、部署拓扑 — 位于 [docs/concepts/architecture](https://noradocs.solomontsao.com/concepts/architecture)。
## 技术栈
| 层 | 技术 |
| --------------------- | ---------------------------------------------------------------------------------- |
| 反向代理 | Nginx |
| 前端 | Next.js 16、React 19、Tailwind CSS |
| 后端 API | Express.js 5、Node.js 24 LTS |
| 认证 | JWT、HttpOnly cookies、bcryptjs、提供者 OAuth 桥 |
| 数据库 | PostgreSQL 15 |
| 队列 | BullMQ + Redis 7 |
| 运行时家族 | OpenClaw、Hermes |
| 提供者后端 | Docker 和 k3s/Kubernetes(GA);NemoClaw(实验性沙箱);Proxmox(计划中) |
| 静止机密 | AES-256-GCM(提供者密钥、集成、备份) |
## 公共 REST API、CLI 和 MCP
工作空间范围的 API 密钥(仅限 bearer、带有前缀 `nora_`、在静止时进行 HMAC 哈希)驱动 REST 表面的一小部分子集。在 `/app/workspaces/<id>/api-keys` 处发出密钥。
```bash
export NORA_TOKEN="nora_..."
curl -H "Authorization: Bearer $NORA_TOKEN" https://your-nora.example.com/api/agents
```
小型 CLI 位于 [`cli/`](./cli) (`@noraai/cli`):运行 `nora login` 一次以保存您的主机和 API 令牌,然后 `nora workspaces`、`nora agents` 和 `nora monitoring` 包装相同的 REST 表面。`nora doctor` 运行管理员仅限的控制平面健康检查,而 `nora mcp` 启动 MCP stdio 服务器。参见 [API 参考](https://noradocs.solomontsao.com/api/overview) 以获取支持的端点和范围。
**从 Claude Code、Claude Desktop 或 Cursor 操作诺拉:`mcp-server/`](./mcp-server) 包 (`@noraai/mcp-server`) 公开与 [Model Context Protocol](https://modelcontextprotocol.io) 工具相同的 API — 部署代理、控制其生命周期,并从任何 MCP 客户端读取舰队指标、事件和每个代理的成本。
```bash
claude mcp add nora \
--env NORA_API_URL=https://your-nora.example.com \
--env NORA_API_KEY=nora_... \
-- npx -y @noraai/mcp-server
```
参见 [MCP 指南](https://noradocs.solomontsao.com/guides/mcp-server) 以获取 Claude Desktop/Cursor 配置、工具列表和安全说明。
## 标准和隔离
- **MCP — 已发货。** 控制平面 [MCP](https://modelcontextprotocol.io) 服务器 (`@noraai/mcp-server`,发布到官方 [MCP 注册表](https://github.com/modelcontextprotocol/registry)) 加上每个代理的 MCP 服务器管理 — 从 Claude Code / Desktop / Cursor 操作舰队,并将 MCP 工具连接到各个代理。
- **OpenTelemetry GenAI — 可用。** [OTLP + Prometheus 导出](https://noradocs.solomontsao.com/guides/opentelemetry) 运行时遥测下的 `gen_ai.*` 语义约定 — 每个交换聊天 span 加上 token/成本/资源指标流入您已经运行的 Grafana / Datadog / Langfuse 堆栈。(每个工具调用子 span 取决于运行时事件流,仍在路线图上。)
- **A2A — 在路线图上。** 代理卡 / 代理到代理发现,用于管理的 OpenClaw 和 Hermes 代理。
## 路线图
- **NemoClaw 硬化** _(高优先级)_ — 成熟的实验性安全沙箱配置文件端到端:启用、策略控制、批准、遥测和验证。
- **Proxmox 执行目标** — 完成计划的 LXC 部署路径,具有生命周期操作、日志流、遥测和烟雾覆盖。
- **Hermes/OpenClaw 奇偶性** — 跨验证、日志、终端访问、监控和故障报告关闭差距。
- **首次运行操作 UX** — 从安装到部署、验证的更紧密路径。
- **帐户范围的监控** — 帐户级健康汇总跨工作空间、代理、成本和警报,并带有钻取。
- **身份验证和密钥同步硬化** — 密钥轮换、审计轨迹和部分同步失败的恢复。
- **代理中心人体工程学** — 更好的模板发现、安装/.更好的模板发现、安装/配置流程和安装后验证。
- **A2A 支持** — 代理卡/代理到代理发现,用于托管运行时。
## 开发
```bash
# Docker(推荐)
docker compose up -d
docker compose logs -f backend-api
# 测试
cd backend-api && npx jest --no-watchman
cd e2e && npm test
```
从 [`CONTRIBUTING.md`](./CONTRIBUTING.md) 开始获取贡献者指南。[`CLAUDE.md`](./CLAUDE.md) 文档介绍了仓库布局、开发命令和子树所有权,供人类和 AI 编程代理使用。
## 贡献
新来者?浏览 [**good first issues**](https://github.com/solomon2773/nora/labels/good%20first%20issue) 获取小型、独立的起点,然后快速浏览 [CONTRIBUTING.md](./CONTRIBUTING.md)。
强大的贡献领域:运行时适配器工作 · 操作员和管理员用户体验 · 供应和生命周期编排 · 集成和渠道 · 测试和 CI 强化 · 自托管部署人体工程学。
典型工作流程:fork → 分支 (`feature/...`) → 提交 → 拉取请求。
## 社区
- [问题](https://github.com/solomon2773/nora/issues)
- [讨论](https://github.com/solomon2773/nora/discussions)
- [Hermes 代理](https://github.com/NousResearch/Hermes-Agent)
- [OpenClaw](https://github.com/openclaw/openclaw)
如果诺拉对您有帮助,请在存储库上给我们一个 ⭐,以帮助其他自行托管的用户找到它。
## 许可
该项目在 [Apache License 2.0](./LICENSE) 下开源。
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器