OpenVaala

统一运行, 跨机执行, 多端共享

一个可自托管的通用 Agent 系统:Agent 主循环在一处运行,工具在你选的机器上执行,每个对话在你所有的客户端之间共享。

go install github.com/VaalaCat/openvaala/cmd/openvaala@latest

01 —

统一运行,跨机执行

Agent 主循环和上下文都留在一个 Runtime 服务里。工具在你选的 Executor 上运行:这台机器、任意多台 SSH 主机、内置沙箱,一个对话里也能同时用好几台。

Executor
客户端executors终端TUIWeb浏览器 · 手机桌面端appZedACPCodexapp-server运行时Agent 循环本机localbuild-boxsshgpu-01ssh沙箱内置worker云沙箱容器远程 VM更多 Executor 陆续支持 …

1 终端发来一条消息

2 工具调用分发到多台机器执行

3 所有客户端同时收到更新

02 —

多种入口,同一份进展

终端、Web、桌面端、ACP 编辑器和 Codex 都连着同一个 Runtime。在一处发起任务,在另一处查看,再换一处做完。

对话
终端web桌面端手机Zed · ACPCodex · app-server › › › › you

在终端开始

到浏览器接着做

每个客户端看到同一份进度

03 —

接入不同生态,不绑定单一入口

模型侧用 OpenAI Chat、OpenAI Responses 和 Claude Messages;客户端侧用 ACP 和 Codex app-server;工具侧用 MCP。

编辑器
模型客户端工具运行时OpenAIChat CompletionsOpenAIResponsesClaudeMessages终端TUIWeb浏览器 · 手机桌面端appZedACPCodexapp-serverMCP工具服务

模型:三种协议

客户端:终端、Web、桌面端、ACP、Codex

工具:MCP 服务

换掉其中一块,其余不用动

04 —

对话独立保存,数据可以带走

每个对话是一个独立目录,记录存成 JSONL,SQLite 索引随时可以重建。能直接查看、单独备份,也能搬到另一台机器。

对话
日志存储 · JSONL记录存储 · SQLiteconversations/01a1…/metadata.jsonl{"kind":"session_saved",…}{"session_saved",…}{"kind":"conversation_saved",…}{"conversation_saved",…}{"kind":"turn_saved",…}{"turn_saved",…}{"kind":"turn_saved",…}{"turn_saved",…}01a1….jsonlmetadata.db另一台机器01a1…/KV 存储Postgres文档数据库S3…更多存储后端陆续支持

1 记录追加进 JSONL,同时写入 SQLite 索引

2 删掉索引,历史还在

3 openvaala reindex 按 JSONL 重建索引

4 把对话目录拷到另一台机器,接着用

其他能力 ​

并行工作并自动汇报结果的子 Agent、自动压缩上下文、skill 和 AGENTS.md 项目说明、能拦下或改写工具调用的 hook、从 git 安装的插件,以及 OpenTelemetry trace。你正在读的这份文档也作为内置 skill 打包在 OpenVaala 里,可以直接问 Agent 怎么配置。

接下来 ​

  • 快速开始:安装、添加模型、开始第一个对话。
  • 安装:Release 二进制、go install,或者从源码构建。
  • 使用指南:终端、Web 和桌面端界面,编辑器和 Codex。
  • 配置:模型、Agent、Executor、工具和扩展。
  • 参考:所有命令,以及 OpenVaala 是怎么搭起来的。

MIT License · © 2026 VaalaCat