Skip to main content
Glama
XRSec
by XRSec
README.md
<div align="center">
  <img src="screenshots/aura-icon.png" alt="Aura" width="120" />
  <h1>Aura</h1>
  <p><strong>把 AI 安全地连接到你的本地电脑。</strong></p>
  <p>轻量、可控、面向本地能力的桌面 MCP Bridge(基于 Tauri 2 与 Rust 原生 MCP Runtime)。</p>

  <p>
    <a href="README.md">简体中文</a> ·
    <a href="README_EN.md">English</a>
  </p>

  <p>
    <img src="https://img.shields.io/badge/version-1.0.1-blue" alt="Version" />
    <img src="https://img.shields.io/badge/license-MIT-green" alt="License" />
    <img src="https://img.shields.io/badge/MCP-compatible-6f42c1" alt="MCP" />
    <img src="https://img.shields.io/badge/platform-macOS%20%7C%20Windows%20%7C%20Linux-lightgrey" alt="Platform" />
  </p>
</div>

---

## Aura 是什么?

**Aura 是一个运行在你电脑上的桌面 MCP Bridge。**

它把本地文件、终端命令、Skills,以及可选的 Pi Tools,通过受控的 MCP 接口提供给 ChatGPT 和其他支持 MCP 的 AI 客户端。

你不需要分别搭建 MCP Server、授权页面、Token 管理、Tunnel、日志和本地权限控制。Aura 把这些能力整合进一个极小体积(~4
MB)的桌面应用,让你的电脑成为一个可以被 AI 调用、同时又能明确限制权限边界的本地能力节点。

```text
ChatGPT / MCP Client
        │
        │ HTTPS / MCP
        ▼
Cloudflare / OpenAI Secure Tunnel / Custom Proxy
        │
        ▼
   Aura (Tauri + Rust MCP)
  ┌─────┼──────────────────────────┐
  │     │                          │
Files  Shell   Skills          Pi Tools
  │     │                          │
  └─────┴──── Policy & Auth ───────┘
              │
              ▼
        Your Local Machine
```

## 为什么使用 Aura?

传统的本地 MCP 接入通常需要自己处理 Server、认证、反向代理、权限边界、日志和不同客户端之间的连接细节。

Aura 将这些环节收敛成一个现代化桌面应用:

- **极简极轻(Tauri 2 + Rust)**:安装包仅约 4 MB,不捆绑笨重的 Node Runtime / Chromium,利用系统 WebView 与原生 Rust 实现。
- **一个 App 管理本地 MCP**:连接、授权、能力、日志、Tunnel 集中配置。
- **本地能力可控暴露**:只向 AI 提供你明确允许的文件、Shell、Skill 和 Pi Tool。
- **多种公网连接方式**:支持 Cloudflare Named Tunnel、Cloudflare Quick Tunnel、OpenAI Secure MCP Tunnel 和自定义反向代理。
- **无缝复用 Pi 生态**:如果启用 Pi,Aura 动态复用本机现有的 Node (>=22.19) 和 Pi Coding Agent 执行所选 Pi Tools,不通过
  `session.prompt()` 间接调用模型。
- **适合 ChatGPT Custom App / MCP Client**:将生成的 MCP 地址添加到客户端即可使用。
- **跨平台桌面应用**:构建目标覆盖 macOS、Windows 和 Linux。

## 核心能力

### 原生 Rust MCP Server

Aura 在本机启动高性能 Rust MCP Server,并可提供以下基础能力:

| Tool            | 作用                                           |
|-----------------|------------------------------------------------|
| `read_file`     | 读取 Filesystem Root 范围内的 UTF-8 文件       |
| `write_file`    | 创建或覆盖 Filesystem Root 范围内的 UTF-8 文件 |
| `execute_shell` | 按 Aura Shell Policy 执行本地命令              |
| `list_skills`   | 列出 Aura 可访问的 Skills                      |
| `read_skill`    | 读取 Skill 的 `SKILL.md` 及相对引用文件        |

你可以在设置中决定是否启用默认能力,以及具体开放哪些工具。

### Pi Tools / Skills

如果本机安装了 Pi,Aura 可以复用 Pi 的 Tool / Skill 注册表,并按需把能力加入当前 MCP 会话:

- Aura Settings 中选择的 Pi Tools 构成 **允许申请的 allowlist**,不会在 Pi session 启动时全部激活。
- Pi Tools 默认从 inactive 状态开始;客户端通过 `request_capabilities` 按准确工具名申请需要的能力。
- `request_capabilities` 对 Tool 的语义是 **only-add / ensure-active**:当前 session 内成功激活的 Tool 只增不减,不会因为后续请求较小集合而被移除。
- Tool 申请结果区分 `Enabled`、`Already active`、`Blocked` 和 `Unknown`。`Enabled` 与 `Already active` 都会返回该 Tool 来自真实 Pi registry 的 `name`、`description` 和完整 `inputSchema`;`Blocked` / `Unknown` 不返回 Schema。
- 对支持动态 Tool Schema 的标准 MCP 客户端,active set 变化后 Aura 会发送 `notifications/tools/list_changed`;客户端重新 `tools/list` 后可直接调用新增的 Pi Tool。
- 部分客户端(当前已知包括 ChatGPT)不会在现有连接中热刷新 direct Tool Schema。Aura 为此提供兼容路径:`request_capabilities → embedded Pi Schema → execute_pi_tool → 原始 Pi Tool`。
- `execute_pi_tool` 不是激活机制:Tool 必须同时满足 Aura Settings allowlist 与 Pi active state,之后仍继续执行 Filesystem Root、Shell Policy 等原有权限检查。
- Aura 最终调用的是原始 Pi Tool 的 `execute()`,不会通过 Pi Agent 的 `session.prompt()` 间接调用模型。
- 可能调用 Pi 默认模型的能力默认阻止,可在设置中单独控制。
- Skills 可通过 `request_capabilities` 按需加载,也可以使用 `list_skills` / `read_skill` 查看。

当前动态能力模型:

```text
                   request_capabilities
                          │
                 Pi active state change
                          │
           ┌──────────────┴──────────────┐
           │                             │
     Standard MCP client             ChatGPT
           │                             │
  notifications/tools/list_changed      embedded Pi Schema
           │                             │
     second tools/list              execute_pi_tool
           │                             │
      direct Pi Tool                original Pi Tool
           │                             │
           └──────────────┬──────────────┘
                          │
        allowlist + active state + authority checks
```

这使 Aura 不只是一个 Filesystem / Shell MCP Server,也可以成为 **Pi 本地工具生态与 ChatGPT 之间的动态能力桥**。

## Tunnel / 连接方式

Aura 当前支持四种连接模式:

| 模式                         | 适用场景                              | 本地依赖                        |
|------------------------------|---------------------------------------|---------------------------------|
| **Cloudflare Named Tunnel**  | 已有域名、长期稳定使用                | `cloudflared` + Cloudflare 配置 |
| **Cloudflare Quick Tunnel**  | 临时测试、快速连接                    | `cloudflared`                   |
| **OpenAI Secure MCP Tunnel** | 使用 OpenAI 官方 Secure MCP Tunnel    | `tunnel-client`                 |
| **Custom / BYO Tunnel**      | 已有 Caddy、FRP、ngrok 或其他反向代理 | 由你自行提供公网入口            |

Aura 不强制绑定某一家 Tunnel 服务。你可以在不同网络环境中选择合适的暴露方式。

## 安全边界

Aura 的目标不是“让 AI 无限制控制电脑”,而是让本地能力以明确的边界暴露。

主要控制项包括:

- **Filesystem Root**:文件操作只能在配置的根目录中进行,默认值为 `~/`。
- **Shell Policy**:支持 `unrestricted`、`allowlist` 和 `denylist` 三种模式。
- **DNS Rebinding 防护**:Rust MCP 服务严格校验 Host header。
- **随机 MCP Path**:默认生成高熵随机 MCP 路径,降低路径被猜测的风险。
- **Token 授权**:通过浏览器授权流程创建访问 Token,并支持有效期设置。
- **Token 撤销**:可在 Aura 中查看活动 Token 并随时撤销。
- **系统 Keyring 凭据存储**:管理密码通过操作系统安全凭据管理器(macOS Keychain / Windows Credential Manager / Linux
  Secret Service)保存。
- **Pi Tool 双重门控**:Aura Settings 中选中的 Pi Tools 只进入可申请 allowlist;实际执行还要求该 Tool 已在当前 Pi session 中激活。
- **本地日志**:MCP 调用、HTTP、Tunnel 和服务生命周期日志可在应用内查看。

> [!IMPORTANT]
> `execute_shell` 的实际风险取决于你的 Shell Policy。当前配置默认值为 `unrestricted`。如果 Aura 会暴露到公网,建议根据实际需求改为
`allowlist`,并限制 Filesystem Root。

## 截图

### 连接器配置

<img src="screenshots/connector-config.png" alt="连接器配置" width="900" />

### 连接指南

<img src="screenshots/connection-guide.png" alt="连接指南" width="900" />

### Pi 能力

<img src="screenshots/pi-capabilities.png" alt="使用 Pi 能力" width="900" />

### 活动与诊断日志

<img src="screenshots/activity-diagnostics.png" alt="活动与诊断日志" width="900" />

<details>
<summary>查看更多日志截图</summary>

#### MCP 细节

<img src="screenshots/activity-diagnostics-mcp.png" alt="活动与诊断日志 MCP 细节" width="900" />

#### HTTP 细节

<img src="screenshots/activity-diagnostics-http.png" alt="活动与诊断日志 HTTP 细节" width="900" />

</details>

## 快速开始

### 从源码运行

```bash
git clone https://github.com/XRSec/Aura.git
cd Aura
npm install
npm run dev
```

### 首次连接建议

1. 启动 Aura。
2. 选择需要的 Tunnel 模式。
3. 设置 Filesystem Root。
4. 根据风险需求配置 Shell Policy。
5. 如果需要 Pi 能力,启用 Pi 并选择允许客户端按需申请的 Pi Tools。
6. 点击 **Connect**。
7. 将 Aura 显示的 MCP 地址添加到 ChatGPT 或其他 MCP 客户端。
8. 客户端发起连接时,在浏览器中完成授权。

如果使用 Cloudflare 模式,请确保本机可以找到 `cloudflared`;如果使用 OpenAI Secure MCP Tunnel,请安装或配置
`tunnel-client`。

## 构建

```bash
# 开发调试模式
npm run dev

# 默认 Release 构建
npm run build

# macOS 构建 (App / DMG)
npm run build:mac

# Windows 构建 (NSIS)
npm run build:win

# Linux 构建 (AppImage / DEB)
npm run build:linux
```

当前构建产物:

- **macOS**:DMG / App(约 3.8 MB DMG,4.7 MB App)
- **Windows**:NSIS Installer
- **Linux**:AppImage / DEB

## 项目结构

```text
Aura/
├── src/                        # 前端界面 (HTML / CSS / JS)
│   ├── index.html              # 主应用界面
│   ├── renderer.js             # 界面交互与事件绑定
│   ├── tauri-shim.js           # Tauri API 桥接层
│   └── assets/                 # 静态字体与图标
├── src-tauri/                  # Rust 后端 (Tauri 2)
│   ├── src/
│   │   ├── main.rs             # Tauri 启动入口
│   │   ├── lib.rs              # Tauri Command 与系统接口
│   │   ├── runtime.rs          # Rust MCP HTTP Server、OAuth 与 Tunnel 调度
│   │   ├── pi.rs               # Pi Coding Agent 原生桥接层
│   │   ├── skills.rs           # 本地 Skill 发现与读取
│   │   └── config.rs           # 配置存储与合并
│   ├── pi-worker.cjs           # Pi 能力发现 Worker
│   ├── Cargo.toml              # Rust 依赖配置
│   └── tauri.conf.json         # Tauri 窗口与打包配置
├── docs/
│   └── screenshots/            # 文档截图
└── package.json
```

## 默认配置摘要

| 配置            | 默认值             |
|-----------------|--------------------|
| MCP Listen      | `127.0.0.1:3000`   |
| Filesystem Root | `~/`               |
| Tunnel Mode     | `cloudflare-named` |
| Shell Policy    | `unrestricted`     |
| Pi              | Disabled           |
| UI Language     | English            |
| Appearance      | Dark               |

MCP Path 默认随机生成,并使用至少 40 个 URL-safe 字符组成的随机段。

## License

MIT

---

<div align="center">
  <strong>Aura — Local capabilities, under your control.</strong><br />
  本地能力,由你掌控。
</div>