
Ryu
用于 agent 编排与人机协作的开放平台。内置工具、安全、内存、成本节约与路由等功能。
## 关于 Ryu
你的 agent 互不知道对方做了什么。它们消耗着你已经付费的订阅。只需一次配
置错误就可能导致数据泄露。而且,搭建它们需要数周的时间来连接线路、处理
密钥和编写胶水代码。
Ryu 解决了这些问题。它是围绕任何 agent 的控制层 —— OpenAI、Claude Code、
Codex、Pi、OpenClaw、Hermes 以及任何兼容 OpenAI 的 runtime。每一次模型调用
都会经过一个 Gateway,用于处理路由、防火墙、PII/DLP、预算、评估
和审计。Agent 共享上下文,订阅叠加使用,且安全性默认开启。本地优
先,加密,无遥测。**与一切协同。不锁定于任何事物。**
## 为什么选择 Ryu
- **互相知悉彼此操作的 Agent。** 跨越所有界面共享内存和上下文 —— 桌面端、移动端、CLI、机器人、Web。
- **充分利用你的订阅。** 将 Claude Code、Codex 和 Gemini 指向同一个 Gateway。智能路由将廉价任务保持在本地模型上;云层仅处理需要它的任务。
- **开箱即用的安全性。** 防火墙、prompt 注入防护、PII/DLP 脱敏、按 agent 划分的预算以及完整的审计跟踪 —— 并非后期附加,而是原生内置。
- **一键设置。** 从目录中选择一个 agent,安装并运行。无需进行 MCP 配置,无需寻找 API key,无需长达一周的集成。
- **与一切协同,不锁定于任何事物。** 每一层 —— 模型、embedder、reranker、engine、RAG 策略、sandbox —— 都可以通过一个注册表进行替换。自带(BYO)agent、key 和订阅。
## 架构
**唯一的设计原则:** 如果代码决定*运行什么*(哪个 agent、session、workflow、tool),那它就属于
**Core**。如果它决定*什么是允许的、共享的、度量的或付费的*,那它就是 **Gateway**。Core
从不内联执行策略 —— 它将每一次模型调用路由至 Gateway。
### 分解
Core 和 Gateway 从单体架构分解为一个包含 **~75 个
crates** 的虚拟 Cargo workspace:52 个基础 + app-backend 能力 crates(43 个 `crates/ryu-*` 能力 —— crypto、
vault、下载、engine、RAG、memory、搜索、durable、语音、图像、sandbox…… + 9 个 app backend),
11 个 gateway-stage crates(`crates/ryu-gw-*`),以及 ghost/shadow 自动化 crates。除此之外,还有 21 个位于 `apps-store/*` 下的独立应用(其中 16 个带有 UI 伴侣)。`apps/core` 从约 195k 缩减至约 143k LoC(-27%);目前约 88k LoC 的代码存在于可替换的 crates 中。
每一层都是可替换的默认选项,绝不构成锁定 —— 聊天模型、embedder、reranker、TTS/STT、
图像生成、engine、RAG 策略、durable engine、sandbox。本代码仓库包含 **open-core
子集**(`apps/core`、`apps/gateway`、CLI/TUI 客户端以及下方列出的公共能力 + SDK crates)
**外加 source-available 层** —— `apps/desktop`、`apps/island` 以及共享的 UI
包 —— 它们遵循 [`LICENSE-COMMERCIAL.md`](./LICENSE-COMMERCIAL.md)。Web、server、mobile、
extension 和 identity/billing 相关部分仍为专有财产,不包含在此镜像中。
## 快速开始(自托管)
### 安装(预编译二进制文件)
一行命令即可将无头技术栈 —— `ryu-core`、`ryu-gateway`、`ryu-cli` —— 拉取到
`~/.ryu/bin` 并将其添加到你的 PATH 中。非常适合服务器、容器和 CI。
**macOS & Linux**(x86_64 Linux,Apple Silicon macOS):
```
curl -fsSL https://raw.githubusercontent.com/amajorai/ryu/main/install.sh | sh
```
**Windows**(x86_64,PowerShell):
```
irm https://raw.githubusercontent.com/amajorai/ryu/main/install.ps1 | iex
```
然后只需运行 CLI —— 它会自动引导,如果没有正在运行的实例,它会启动一个本地 Core(这将随之启动
Gateway + 一个完全本地的模型栈):
```
ryu-cli # fetches + starts Core on first run, then attaches — no API key
```
或者自行启动节点并将客户端指向它:
```
ryu-core # starts the Gateway + local model stack on :7980
```
预编译目标:Linux x86_64、macOS Apple Silicon、Windows x86_64。在 Intel
Mac 或 ARM Linux 上,请按照下文从源码构建。使用
`RYU_INSTALL_DIR` 覆盖安装目录,或使用 `RYU_VERSION=v0.0.4` 固定版本。
### 从源码构建
```
cd apps/core && cargo build --release # ryu-core :7980
cd apps/gateway && cargo build --release # ryu-gateway :7981
```
将任何兼容 OpenAI 的客户端指向 Gateway 的 `/v1/chat/completions`。
首次运行时,Ryu 会下载一个完全本地的技术栈(用于聊天的 llama.cpp 和 Gemma 4、nomic embeddings、用于语音的 whisper),因此它无需任何 **API key** 即可工作。
后续可替换任何组件:模型、embedder、engine 和 RAG 策略均可通过配置完成。
TypeScript 单元(SDK、文档)使用 [Bun](https://bun.sh):
```
bun install && bun run build
```
### 一键部署
在容器主机上搭建托管的节点(Core + Gateway)。每个节点都会构建
[`Dockerfile`](./Dockerfile):Core 在 loopback 上运行技术栈并管理 Gateway,
因此仅发布 Core 的端口。
[](https://render.com/deploy?repo=https://github.com/amajorai/ryu)
[](https://railway.com/new)
[](https://cloud.digitalocean.com/apps/new?repo=https://github.com/amajorai/ryu/tree/main)
或者你自行运行:
- **Docker Compose** — `docker compose up --build` ([`docker-compose.yml`](./docker-compose.yml)):Core 运行在 `:7980`,Gateway 运行在 `:7981`,模型状态保存在具名 volume 中。
- **Fly.io** — `fly launch --copy-config` 然后 `fly deploy` ([`fly.toml`](./fly.toml))。
文档站点 (`apps/fumadocs`) 是一个 Next.js 应用,可一键部署到 Vercel
— [](https://vercel.com/new/clone?repository-url=https://github.com/amajorai/ryu&root-directory=apps/fumadocs&project-name=ryu-docs)。Vercel 是 serverless 的,无法托管长期运行的 Core/Gateway;后端请使用上方的容器主机。
## 内置默认项(均可替换)
- **Engine/model:** llama.cpp + Gemma 4 — 可在大多数机器上运行,无需 key。
- **默认 agent:** **"Ryu"** = Pi 加上顶层的 Gateway(旗舰版的“引擎外的车身”)。Claude Code、Codex、Gemini CLI、OpenClaw、Hermes 以及其他约 18 个 ACP agent 可通过目录选择性开启。
- **RAG:** 本地 nomic embeddings + BGE reranker;vector + GraphRAG。
- **模态:** 聊天、图像生成、TTS、STT — 均为一等公民,全部可替换。
- **标准:** Agent Skills + MCP + ACP,全为一等公民。
## 代码仓库布局
此镜像提供**两个层级**,区别很重要。每个单元都有自己的
`LICENSE`;完整映射见 [`LICENSING.md`](./LICENSING.md)。
1. **开源** — 编排引擎、Gateway、终端客户端以及
公共能力 + SDK crates。Apache-2.0(Gateway:AGPL-3.0,Raycast:MIT)。
2. **Source-available** — `apps/desktop`、`apps/island` 以及它们
无法脱离编译的共享 UI 包,遵循 [`LICENSE-COMMERCIAL.md`](./LICENSE-COMMERCIAL.md)。
**此部分并非开源。** 你可以阅读、审计、在本地构建并为之贡献;但如果没有官方二进制文件,你不得将其用于生产环境、重新分发、作为服务提供或利用其构建竞争产品。
Web、server、mobile、extension 和 identity/billing 相关部分(© 2026 A Major Pte.
Ltd.)保持闭源,**不**属于此代码仓库的一部分。
**Ryu 名称和标志不受此处任何文件授权** — 任何允许的分支必须
重新命名。详见 [`TRADEMARK.md`](./TRADEMARK.md)。构建说明:
[`docs/BUILDING.md`](./docs/BUILDING.md)。
### Apps — Apache-2.0(Gateway:AGPL-3.0)
| 单元 | 描述 |
|---|---|
| [`apps/core`](./apps/core) | 编排引擎,真正的本地后端 (Rust/Axum, :7980) |
| [`apps/gateway`](./apps/gateway) | LLM 控制层:路由、防火墙、缓存、评估、审计 (Rust, :7981) |
| [`apps/cli`](./apps/cli) | Core 的终端客户端 (Rust/ratatui) |
| [`apps/tui`](./apps/tui) | Bun/OpenTUI 终端客户端 — 通过纯 HTTP/SSE 连接到运行中的 Core 节点 |
| [`apps/fumadocs`](./apps/fumadocs) | 文档站点 + 交互式 OpenAPI (Next/Fumadocs) |
| [`apps/mcp`](./apps/mcp) | 将运行中的 Core 节点暴露给任何 MCP 主机的 MCP server (TS) |
| [`apps/skills`](./apps/skills) | SKILL.md agent 技能,用于教导编程 agent 设置并驱动 Ryu |
| [`apps/plugins`](./apps/plugins) | 用于 Ryu 的 Claude Code / Codex 插件定义 |
| [`apps-store/voice/sidecar`](./apps-store/voice/sidecar) | Python TTS sidecar (`ryu_tts`),由 Core 管理 |
| [`apps-store/finetune/sidecar`](./apps-store/finetune/sidecar) | Python LoRA/QLoRA fine-tuning sidecar (`ryu_unsloth`) |
### 能力与 SDK crates — Apache-2.0
| 单元 | 描述 |
|---|---|
| [`crates/ryu-kernel-contracts`](./crates/ryu-kernel-contracts) | 由 Core + SDK 共享的纯数据 `plugin.json` 清单模型 |
| [`crates/ryu-crypto`](./crates/ryu-crypto) | 静态加密 `FieldCipher` + 可替换的 master-key 保管 |
| [`crates/ryu-vault`](./crates/ryu-vault) | 身份保险库 — 加密密封的按域划分的凭证存储 |
| [`crates/ryu-downloads`](./crates/ryu-downloads) | `DownloadCenter` — 支持断点续传、校验和验证的组件获取 |
| [`crates/ryu-webhook-ingress`](./crates/ryu-webhook-ingress) | 用于入站第三方 webhook 的公共可达性接缝 |
| [`crates/ryu-usage`](./crates/ryu-usage) | 按 agent 划分的订阅使用量/速率限制计量 |
| [`crates/ryu-sdk{,-ffi,-napi,-uniffi}`](./crates) | SDK 内核 + C-ABI/Node-API/UniFFI 语言绑定 |
| [`crates/ghost-{core,permissions}`](./crates) | 桌面自动化原语 + OS 权限检查 |
### TypeScript 包 — Apache-2.0
| 单元 | 描述 |
|---|---|
| [`packages/sdk`](./packages/sdk) · [`create-ryu-app`](./packages/create-ryu-app) | Ryu 的开发者 SDK(类型化的 Runnable 构建器)+ 项目脚手架 |
| [`packages/client`](./packages/client) | `@ryuhq/client` — 用于将 Core agent 嵌入任何应用的类型化客户端 |
| [`packages/core-client`](./packages/core-client) | `@ryuhq/core-client` — 平台无关的 Core 节点客户端 (tui/native) |
| [`packages/protocol`](./packages/protocol) | `@ryuhq/protocol` — 与表面无关的通信格式契约 |
| [`packages/ryu-apps`](./packages/ryu-apps) | `@ryu/apps` — 内置的 widget-app workspace,嵌入到 Core 中 |
| [`packages/config`](./packages/config) · [`env`](./packages/env) 共享的 TypeScript 配置 + env schema |
## 资源占用
原生层作为少量小型的独立 Rust 二进制文件发布:无需解释器、
无需 runtime、无需 Electron、无需 Docker。下面的每一个数字都是由
[`scripts/benchmark.mjs`](./scripts/benchmark.mjs) 生成的;可通过 `node scripts/benchmark.mjs --build --runtime` 进行复现。
| 组件 | 发布二进制文件 | Crates | 源码 (LOC) | 空闲 RSS | 空闲 CPU |
| --- | --- | --- | --- | --- | --- |
| [`apps/core`](./apps/core) | 44.2 MB | 687 | 105,168 | n/a | n/a |
| [`apps/gateway`](./apps/gateway) | 18.7 MB | 405 | 20,658 | 17.0 MB | 0.0% |
| [`apps/shadow`](./apps/shadow) | 21.5 MB | 604 | 16,410 | n/a | n/a |
| [`apps/ghost`](./apps/ghost) | 12.8 MB | 428 | 3,427 | n/a | n/a |
| [`apps/cli`](./apps/cli) | 5.9 MB | 235 | 10,497 | n/a | n/a |
_空闲 RSS 和 CPU 仅针对 Gateway 进行采样(一个具有干净空闲状态的无状态代理),其空闲 CPU 实际上为零。Core 在首次运行时会启动一个完整的本地技术栈,而捕获/自动化工具(Shadow、Ghost)和 CLI 没有稳定的空闲状态,因此它们仅报告大小/依赖项/LOC。在 `win32` 上测量。_
## 基础组件 — 每一个 crate 和 package
**78 个基础组件 · 290,170 LoC · 9 MB 源码。** 大小和代码行数仅根据源文件测量(不包含 `node_modules`、`target` 或构建输出),并由 `scripts/inventory.mjs` 重新生成。
#### Core 能力 crates — 36 个包 · 52,355 LoC
构成 Core 的可替换基础组件。
| 包 | 语言 | LoC | 大小 | 描述 |
|---|---|--:|--:|---|
| [`ryu-model-catalog`](./crates/core/model-catalog) | Rust | 4,660 | 178 KB | Ryu 的 Hugging Face 模型目录 + 设备契合度判定基础组件:HF 搜索/详情、GGUF 树状结构检查、按节点… |
| [`ryu-spaces`](./crates/core/spaces) | Rust | 4,336 | 184 KB | Ryu 的 Spaces 基础组件:命名文档集合,带有 sqlite-vec (`vec0`) 向量存储、内容寻址的 b… |
| [`ryu-sandbox`](./crates/core/sandbox) | Rust | 4,313 | 168 KB | Ryu 的沙盒执行基础组件:在可替换的后端接缝后执行 `run(command\|wasm, spec) -> output` |
| [`ryu-kernel-contracts`](./crates/core/kernel-contracts) | Rust | 4,138 | 192 KB | Ryu kernel 契约 |
| [`ryu-tool-exec`](./crates/core/tool-exec) | Rust | 3,341 | 134 KB | Ryu 的可编程工具调用 (PTC) 代码执行沙盒基础组件:带有默认拒绝策略的 Deno-subprocess 后端… |
| [`ryu-skills`](./crates/core/skills) | Rust | 2,424 | 97 KB | Agent Skills:SKILL.md 注册表、双根目录 (~/.claude + ~/.agents) 扫描、渐进式公开注入块… |
| [`ryu-rag`](./crates/core/rag) | Rust | 2,408 | 97 KB | Ryu 的检索增强生成基础组件:embedder(本地哈希 + 兼容远程 OpenAI 的 `/v1/embed…`) |
| [`ryu-hardware`](./crates/core/hardware) | Rust | 2,288 | 88 KB | Ryu 硬件协议 (RHP v1) 节点后端 |
| [`ryu-webhook-ingress`](./crates/core/webhook-ingress) | Rust | 2,100 | 87 KB | Webhook 入口:可替换的公共可达性接缝,允许绑定到 loopback 的 Ryu Core 接收第三方 web… |
| [`ryu-vault`](./crates/core/vault) | Rust | 1,960 | 83 KB | Ryu 的身份保险库基础组件:加密密封的按域划分凭证存储(SQLite `IdentityStore` 和 `e…`) |
| [`ryu-composio`](./crates/core/composio) | Rust | 1,815 | 71 KB | Composio 集成编排(Core 端):用户的 Composio 账户接缝 |
| [`ryu-collab`](./crates/core/collab) | Rust | 1,802 | 80 KB | Ryu 的权威 CRDT 文档引擎:Core 持久化的服务端副本,用于存储每个实时的协作 Yjs 文档… |
| [`ryu-downloads`](./crates/core/downloads) | Rust | 1,396 | 51 KB | Ryu 的 DownloadCenter 组件获取基础组件:进程范围内唯一的注册表,拥有每个组件的生命周期… |
| [`ryu-workspace`](./crates/core/workspace) | Rust | 1,356 | 48 KB | Ryu 的 Git 原生 workspace 基础组件:通过 shell 调用 `git`/`gh` 来驱动 git/worktree 的引擎,针对调用者提供的 cwd |
| [`ryu-memory`](./crates/core/memory) | Rust | 1,273 | 51 KB | Ryu 的长期记忆基础组件:基于 SQLite、静态加密的 MemoryStore,加上多级作用域的 mo… |
| [`ryu-engines`](./crates/core/engines) | Rust | 1,228 | 55 KB | Ryu 的引擎无关推理配置基础组件:按请求划分的 `SamplingConfig` (temperature/top_p/top_…` ) |
| [`ryu-realtime`](./crates/core/realtime) | Rust | 1,162 | 48 KB | Ryu 的以 Room 为键的实时分发基础组件:一个传输无关的 RoomRegistry,映射 room_id -> 特定房间的 toki… |
| [`ryu-search`](./crates/core/search) | Rust | 987 | 41 KB | Ryu 的对话搜索基础组件:sqlite-vec (`vec0`) 语义 KNN 索引,加上无内容的 FTS5 词法 ind… |
| [`ryu-eval-code`](./crates/core/eval-code) | Rust | 977 | 37 KB | Ryu 的 Core 端代码评估器:在隔离环境中运行用户 (input, output, expected, vars) -> {score} 函数… |
| [`ryu-mcp-catalog`](./crates/core/mcp-catalog) | Rust | 974 | 38 KB | Ryu 的 MCP server 目录基础组件:从官方 Model Context Protocol 注册表浏览和安装 MCP server… |
| [`ryu-knowledge`](./crates/core/knowledge) | Rust | 806 | 31 KB | Ryu 的开放知识格式 (OKF) 基础组件:内存模型、宽松的解析器,以及用于 git-shipp… 的序列化器 |
| [`ryu-usage`](./crates/core/usage) | Rust | 786 | 30 KB | Ryu 的按 agent 划分的订阅使用量计量基础组件:读取订阅 CLI(Claude Code / Co…)的 OAuth token |
| [`ryu-mesh`](./crates/core/mesh) | Rust | 755 | 30 KB | Ryu 的 Mesh 读取/成型基础组件 (#478 P5–P7):可选的 Tailscale/Headscale 平面的读取端 |
| [`ryu-tool-registry`](./crates/core/tool-registry) | Rust | 642 | 25 KB | Ryu 的统一工具目录基础组件 (#474):Contract-1 描述符类型(`ToolKind`/`ToolDescriptor`/`Descri…`) |
| [`ryu-crypto`](./crates/core/crypto) | Rust | 599 | 23 KB | Ryu 的静态加密基础组件:FieldCipher (ChaCha20-Poly1305 AEAD,带有自描述的 `enc:v1:` 字段… ) |
| [`ryu-predict`](./crates/core/predict) | Rust | 585 | 22 KB | Predict:Ryu 的全系统预测输入大脑 |
| [`ryu-vad`](./crates/core/vad) | Rust | 500 | 19 KB | Ryu 的语音活动检测 (VAD) 模态基础组件:`detect(frame) -> speech_prob`,馈入 endpointing/ba… |
| [`ryu-stt`](./crates/core/stt) | Rust | 480 | 19 KB | Ryu 的语音转文本 (STT) 模态基础组件:`transcribe(audio) -> text`,带有可替换的引擎接缝(in-proce…`) |
| [`ryu-email-send`](./crates/core/email-send) | Rust | 449 | 17 KB | Ryu 自托管的 BYOK SMTP 电子邮件接收器:可替换的出站电子邮件传输(`packages…` 中的 SES agent-inbox 路径) |
| [`ryu-activity`](./crates/core/activity) | Rust | 332 | 12 KB | Ryu 的统一活动流基础组件:节点执行操作(监控警报、quest…)的跨模块时间线 |
| [`ryu-model-format`](./crates/core/model-format) | Rust | 299 | 11 KB | Ryu 的模型权重格式基础组件:`ModelFormat` 枚举(GGUF/Safetensors/MLX),其 wire/serde 映射,以及 t… |
| [`ryu-tracing`](./crates/core/tracing) | Rust | 286 | 10 KB | Ryu 的按运行划分的可观测性追踪基础组件:有序的 span 存储(`Span` v1 契约 + SQLite 支持的 `TraceSto…`) |
| [`ryu-image`](./crates/core/image) | Rust | 252 | 10 KB | Ryu 的图像生成模态基础组件:`generate(prompt) -> image`,带有可替换的引擎接缝(本地 stab…) |
| [`ryu-durable`](./crates/core/durable) | Rust | 250 | 11 KB | Ryu 的持久执行基础组件:可替换的接缝 `DurableEngine` trait(checkpoint / resume / replay of a run to…) |
| [`ryu-storage`](./crates/core/storage) | Rust | 203 | 7 KB | Ryu 的插件拥有的键/值存储基础组件:隔离的、以 `(plugin_id, namespace, key)` 为命名空间的 SQLite KV s… |
| [`ryu-notify`](./crates/core/notify) | Rust | 193 | 7 KB | Ryu 的共享通知传递网络类型 + 发送基础组件:可替换的频道目标(webhook / Telegra…) |
#### Gateway stage crates — 11 个包 · 13,726 LoC
控制层背后的检测/决策引擎。
| 包 | 语言 | LoC | 大小 | 描述 |
|---|---|--:|--:|---|
| [`ryu-gw-channels`](./crates/gateway/channels) | Rust | 3,368 | 130 KB | Ryu Gateway 频道层引擎:外部消息表面适配器(Telegram 长轮询、Slack Socket Mode、D…) |
| [`ryu-gw-providers`](./crates/gateway/providers) | Rust | 3,182 | 117 KB | Ryu Gateway 具体后端提供商:OpenAI/Anthropic/local/core/OpenRouter/Modal/GenAI/Replicate/Fal HTTP 接口… |
| [`ryu-gw-firewall`](./crates/gateway/firewall) | Rust | 1,421 | 58 KB | Ryu Gateway 防火墙扫描核心:纯正则表达式检测引擎(精心策划的 PII/密钥/注入/代码注入/到…) |
| [`ryu-gw-evals`](./crates/gateway/evals) | Rust | 1,238 | 47 KB | Ryu Gateway evals 阶段:按请求的采样 + 提供商分数 EMA(实时的 EvalsRunner)作为可替换的 EvalsBacke… |
| [`ryu-gw-budget`](./crates/gateway/budget) | Rust | 1,225 | 47 KB | Ryu Gateway token-budget 阶段:按用户 / 按 agent / 按 session 划分的 token 预算 + 按时间窗口的执行预算,作为… |
| [`ryu-gw-audit`](./crates/gateway/audit) | Rust | 1,211 | 48 KB | Ryu Gateway 审计阶段:SQLite 支持的、仅追加的请求日志 +终身 token 总量 + 查询/汇总,暴露… |
| [`ryu-gw-cache`](./crates/gateway/cache) | Rust | 722 | 26 KB | Ryu Gateway 响应缓存阶段:精确匹配的 TTL 缓存 (CacheBackend) 以及 embedding 相似度语义缓存… |
| [`ryu-gw-router`](./crates/gateway/router) | Rust | 683 | 26 KB | Ryu Gateway 模型路由核心(Plane A):纯粹的 model->provider 解析逻辑 |
| [`ryu-gw-passthrough`](./crates/gateway/passthrough) | Rust | 384 | 15 KB | Ryu Gateway 直通网络格式脱敏引擎:原生格式(Anthropic Messages / OpenAI Responses)的 req… |
| [`ryu-gw-governance`](./crates/gateway/governance) | Rust | 259 | 11 KB | Ryu Gateway 市场治理核心:纯粹的 grant-allowlist 匹配 + ed25519 清单签名/验证加密覆盖层… |
| [`ryu-gw-contracts`](./crates/gateway/contracts) | Rust | 33 | 1 KB | 在 Ryu Gateway 各阶段之间交换的共享值类型(例如 |
#### 自动化与捕获 crates — 5 个包 · 16,158 LoC
桌面感知、输入控制和屏幕/音频捕获。
| 包 | 语言 | LoC | 大小 | 描述 |
|---|---|--:|--:|---|
| [`ryu-shadow-core`](./crates/ghost/shadow) | Rust | 11,535 | 402 KB | 用于 Shadow 的屏幕/音频/输入捕获、OCR 和语义搜索引擎 |
| [`ghost-hands`](./crates/ghost/hands) | Rust | 2,122 | 79 KB | 用于 Ghost 的合成键盘/鼠标/窗口输入 |
| [`ghost-eyes`](./crates/ghost/eyes) | Rust | 1,670 | 80 KB | 用于 Ghost 的屏幕感知(AX 树、屏幕捕获、输入监控) |
| [`ghost-core`](./crates/ghost/core) | Rust | 589 | 20 KB | 用于 Ghost 桌面自动化 MCP server 的核心自动化原语(配方、存储) |
| [`ghost-permissions`](./crates/ghost/permissions) | Rust | 242 | 10 KB | Ghost 所需的 OS 能力(UI 自动化 + 屏幕捕获)的跨平台检查/请求 |
#### SDK crates — 4 个包 · 3,092 LoC
SDK 内核及其 C-ABI / Node-API / UniFFI 绑定。
| 包 | 语言 | LoC | 大小 | 描述 |
|---|---|--:|--:|---|
| [`ryu-sdk`](./crates/sdk/core) | Rust | 1,394 | 49 KB | Ryu 开发者 SDK 核心 |
| [`ryu-sdk-napi`](./crates/sdk/napi) | Rust | 768 | 25 KB | 将 ryu-sdk Rust 核心作为原生插件暴露给 TypeScript/JavaScript 的 Node-API (napi-rs) 绑定 |
| [`ryu-sdk-ffi`](./crates/sdk/ffi) | Rust | 521 | 18 KB | 位于 ryu-sdk Rust 核心之上的 C-ABI 表面,由 Go (cgo) 绑定和任何其他 C-FFI 客户端使用 |
| [`ryu-sdk-uniffi`](./crates/sdk/uniffi) | Rust | 409 | 17 KB | 位于 ryu-sdk Rust 核心之上的 UniFFI 绑定表面 |
#### 测试 crates — 2 个包 · 1,492 LoC
共享的测试套件。
| 包 | 语言 | LoC | 大小 | 描述 |
|---|---|--:|--:|---|
| [`ryu-integration-tests`](./crates/testing/integration) | Rust | 1,292 | 52 KB | 专用的分解 SEAM 测试套件:以子进程方式启动 ryu-core(RYU_PROFILE=auditsmoke + 临时 RYU_DIR)并… |
| [`ryu-test-sidecar`](./crates/testing/sidecar) | Rust | 200 | 8 KB | 仅由 crates/ryu-integration-tests 用于测试分解功能的、最小化且可控的进程外 sidecar |
#### TypeScript 包 — 20 个包 · 203,347 LoC
共享的 TS 表面:SDK、客户端、设计系统、协议。
| 包 | 语言 | LoC | 大小 | 描述 |
|---|---|--:|--:|---|
| [`@ryu/ui`](./packages/ui) | TypeScript | 53,385 | 1406 KB | — |
| [`@ryu/blocks`](./packages/blocks) | TypeScript | 52,445 | 1459 KB | — |
| [`@ryu/api`](./packages/api) | TypeScript | 30,168 | 985 KB | — |
| [`@ryu/apps`](./packages/ryu-apps) | TypeScript | 10,276 | 261 KB | Ryu Apps widget workspace:共享的 frame-side 桥接器,加上内置的 widget 包(一个独立的 HTML p…) |
| [`@ryuhq/sdk`](./packages/sdk) | TypeScript | 9,665 | 326 KB | Ryu 开发者 SDK:类型化的构建器和 CLI,用于编写 plugin.json 插件包 |
| [`@ryuhq/core-client`](./packages/core-client) | TypeScript | 9,428 | 278 KB | — |
| [`@ryu/app-host`](./packages/app-host) | TypeScript | 8,961 | 331 KB | — |
| [`@ryu/marketplace`](./packages/marketplace) | TypeScript | 8,552 | 246 KB | — |
| [`@ryu/db`](./packages/db) | TypeScript | 5,746 | 215 KB | — |
| [`@ryu/auth`](./packages/auth) | TypeScript | 5,199 | 174 KB | — |
| [`@ryu/settings`](./packages/settings) | TypeScript | 2,262 | 59 KB | — |
| [`@ryu/mail`](./packages/mail) | TypeScript | 1,594 | 48 KB | — |
| [`@ryuhq/protocol`](./packages/protocol) | TypeScript | 1,330 | 40 KB | — |
| [`create-ryu-app`](./packages/create-ryu-app) | TypeScript | 1,089 | 36 KB | 搭建一个包含 Runnable、指向 gateway 的模型配置和 plugin.json 清单的 Ryu SDK 初始项目 |
| [`@ryu/email`](./packages/email) | TypeScript | 927 | 25 KB | — |
| [`@ryu/hotkeys`](./packages/hotkeys) | TypeScript | 760 | 21 KB | — |
| [`@ryuhq/client`](./packages/client) | TypeScript | 631 | 17 KB | 用于在任何应用中嵌入 Ryu Core agent 的 TypeScript 客户端 SDK |
| [`@ryu/command`](./packages/command) | TypeScript | 583 | 18 KB | — |
| [`@ryu/env`](./packages/env) | TypeScript | 346 | 19 KB | — |
| [`@ryu/config`](./packages/config) | TypeScript | 0 | 0 KB | 用于 Ryu 包的共享 TypeScript 配置 |
## 贡献
欢迎为 OSS 单元做出贡献 —— 有关构建说明,请参阅每个单元的 README。
请将安全问题私密报告至 security@ryuhq.com。
开源单元基于 Apache-2.0 协议,Gateway(AGPL-3.0)和 Raycast(MIT)除外。
`apps/{desktop,island}` 和共享的 UI 包是 **source-available,而非开源**
—— 详见 [`LICENSE-COMMERCIAL.md`](./LICENSE-COMMERCIAL.md);欢迎在
这些条款下对它们进行贡献。Web/server/mobile/extension 和 identity/billing
相关部分归 © 2026 A Major Pte. Ltd. 所有,并存在于私有的 monorepo 中。每个
子目录都有自己的 `LICENSE` 文件;[`LICENSING.md`](./LICENSING.md) 是完整的映射图。
站在 [kernel.sh](https://github.com/onkernel/kernel)(身份保险库)、
[Jan](https://github.com/menloresearch/jan)(本地优先桌面端)、
[Ghost OS](https://github.com/ghostwright/ghost-os)(桌面自动化)和
[Shadow](https://github.com/ghostwright/shadow)(捕获 + 语义记忆)的肩膀上构建。