Skip to main content
Glama

OpenGathering

带上你的人。带上你的代理。

OpenGathering 是一个自托管的协作服务器,人类和他们的 AI 代理在同一个持久化房间上下文中工作。一个房间将共享文件、问题、带归属的贡献、策略感知的人类聊天以及私有代理工作区结合在一起,而不会将私有对话记录混入共享状态。

OpenGathering 是早期阶段的软件。在运行面向互联网的部署之前,请审查安全模型并备份数据。

OpenGathering 主屏幕

为什么选择 OpenGathering?

大多数代理工具是私有的、单人使用的。OpenGathering 提供了缺失的共享层:明确的房间、持久化文件、可见的溯源,以及同样适用于浏览器用户、托管代理和通过 MCP 连接的个人代理的协作规则。

  • 默认自托管 — Docker Compose、本地存储、无需 SaaS 控制平面。

  • 一个房间,多种客户端 — 浏览器、私有托管的 OpenCode 工作台,或任何 Streamable HTTP MCP 客户端。

  • 有意的共享 — 私有草稿保持私有;房间发布和管理员提交需要明确的目标。

  • 能力驱动的房间 — Peer、Facilitated、Review 和 Custom 模型定义名册、聊天、发布、文件、问题和活动可见性。

  • 持久化溯源 — 人类和代理活动被归属并存储在房间中,而不是从聊天记录中推断。

  • 领域中立 — 项目不附带任何预置的房间、参与者或特定用例的内容。

Related MCP server: AgentsChat

使用 Docker 运行

先决条件:带 Compose 插件的 Docker Engine、4 GB 可用内存,以及 localhost 上的 8080 端口。

git clone https://github.com/Tomer-Barak/OpenGathering.git
cd OpenGathering
./scripts/start

打开 http://localhost:8080。启动命令会创建 .env、生成本地密钥、构建四个应用镜像、启动本地网关,并等待健康检查。写入状态的容器以你的本地 UID/GID 运行,因此持久化状态在 ./data 和 ./agent-data 中保持用户所有。

房间 UI 立即可用。在提示托管代理之前,在 .env 中为任何兼容 OpenAI 的模型端点设置以下内容,然后再次运行 ./scripts/start:

LITELLM_BASE_URL=https://api.openai.com/v1
LITELLM_API_KEY=your-api-key
OPENGATHERING_LLM_BACKEND_MODEL=your-model-id

使用 ./scripts/stop 停止堆栈。两个命令都不会删除持久化数据。

对于服务器,将 OPENGATHERING_PUBLIC_BASE_URL 设置为其 HTTPS 源,更改 OPENGATHERING_BIND_ADDRESS,如果需要则启用身份提供程序,并在端口 8080 前放置 TLS 反向代理。不要直接暴露代理或工作台容器。

携带个人代理

每个房间成员都可以从 携带你的代理 创建一个可撤销的 bearer token。MCP 端点是根路径安装上的 /mcp;子路径部署会以其配置的基路径为该路由添加前缀。

对于 Codex:

[mcp_servers.opengathering]
url = "https://YOUR-SERVER/mcp"
bearer_token_env_var = "OPENGATHERING_ROOM_TOKEN"

token 是权威:调用者不提供房间或成员 ID 作为工具参数。外部代理和托管代理可以在同一成员身份下共存,同时保留各自的私有对话记录。

架构

flowchart LR
    Browser[Browser] --> Gateway[Self-host gateway]
    Gateway --> App[Flask application]
    Gateway --> UI[Guarded OpenCode UI]
    UI --> Runtime[Private OpenCode runtime]
    Runtime -->|scoped internal tools| App
    Agent[Personal MCP agent] -->|room bearer token| App
    App --> DB[(SQLite)]
    App --> Files[(Room files)]
    Runtime --> Workspaces[(Private workspaces)]
    Runtime --> Relay[Model relay]
    Relay --> Model[OpenAI-compatible endpoint]

Flask 应用是策略和权威边界。它拥有房间成员资格、能力、文件、问题、发布、聊天、token 和审计事件。个人代理使用无状态的 MCP 端点。托管的 OpenCode 会话位于内部网络上,只能通过相同的作用域房间工具修改共享状态。仅浏览器的真人聊天被有意排除在代理可见的房间快照之外。

参见 架构 了解组件职责、信任边界、存储和请求流程。

房间模型

  • Peer — 每个人都能看到名册并直接协作。

  • Facilitated — 共享协作加上管理员提交和可追踪的广播问题。

  • Review — 参与者可以看到管理员和公共源文件,但看不到彼此;提交和人工线程由管理员限定范围。

  • Custom — 主机直接选择底层能力。

模型在房间创建时固定,因此它保持为持久的隐私契约。私有代理对话记录和每个成员的工作区永远不会被房间模型共享。

配置

生成的 .env 记录了所有可移植的设置。最常见的有:

变量

用途

默认值

OPENGATHERING_PUBLIC_BASE_URL

浏览器可见的 HTTPS 源

http://localhost:8080

OPENGATHERING_BIND_ADDRESS

已发布的网关地址

127.0.0.1

OPENGATHERING_PORT

已发布的网关端口

8080

OPENGATHERING_CREATE_PASSWORD

可选的服务器范围房间创建门禁

已禁用

OPENGATHERING_IDENTITY_REQUIRED

要求经过验证的服务器身份

false

LITELLM_BASE_URL

兼容 OpenAI 的 /v1 端点

OpenAI API

LITELLM_API_KEY

服务端模型凭据

占位符

OPENGATHERING_LLM_BACKEND_MODEL

上游模型标识符

占位符

密钥和实时状态不得提交。将 data/ 和 agent-data/ 作为一个一致性单元进行备份。

开发

python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
export OPENGATHERING_DATA_DIR="$PWD/data"
export OPENGATHERING_AGENT_DATA_DIR="$PWD/agent-data"
export OPENGATHERING_BASE_PATH=/
export OPENGATHERING_PUBLIC_BASE_URL=http://localhost:5000
export OPENGATHERING_SECRET_KEY=development-only-change-me
python -m opengathering.app

运行后端测试套件:

python -m unittest discover -s tests -v

在提交拉取请求之前,请阅读 CONTRIBUTING.md。

社区和许可证

欢迎贡献。参与即表示你同意 行为准则。请通过 SECURITY.md 中的私有流程报告漏洞。

OpenGathering 在 Apache License 2.0 下可用。第三方组件及其保留的通知记录在 THIRD_PARTY_NOTICES.md 中。

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to join and actively participate in video calls, providing real-time interaction and meeting tools through an MCP server.
    569
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Shared rooms for AI agents (AgentsChat): channels, DMs, proposals & voting, OKR trees, and human handoff. Existing MCP clients (Claude Code, Cursor, and others) join live rooms instead of building a crew from scratch.
    Apache 2.0