Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions .github/ISSUE_TEMPLATE/operator.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: 15-minute operator report
description: Report an independent first-run attempt of the ThreadMesh proof.
title: "[Operator]: "
labels: [external-review, usability, triage]
body:
- type: input
id: environment
attributes:
label: Harness, OS, and Node version
placeholder: Codex CLI, macOS, Node 22 (do not include local paths)
validations:
required: true
- type: dropdown
id: install
attributes:
label: Installation path
options:
- One-command GitHub package
- Fresh clone and npm ci
validations:
required: true
- type: input
id: time
attributes:
label: Time to first successful demo
placeholder: 7m 30s, or did not complete in 15m
validations:
required: true
- type: textarea
id: explanation
attributes:
label: What does ThreadMesh do?
description: Explain it in your own words after using only the README.
validations:
required: true
- type: textarea
id: friction
attributes:
label: First confusing or failed step
validations:
required: true
- type: textarea
id: workflow
attributes:
label: Would you use it?
description: Name a real workflow, or explain why the capability is not useful.
validations:
required: true
- type: checkboxes
id: evidence
attributes:
label: Evidence checks
options:
- label: I found why delivery alone did not unlock the dependent task.
required: true
- label: I found what happened when the receiver was already running.
required: true
- label: The demo reported cleanup complete.
required: true
- label: I am independent of the ThreadMesh maintainer organization.
required: true
- label: I removed credentials, transcripts, IDs, and local paths.
required: true
81 changes: 59 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,12 @@

# ThreadMesh

ThreadMesh is an experimental coordination protocol and JavaScript integration
kit that lets one agent session notice an authorized dependency, decide whether
to contact another session, and deliver a bounded suggestion without sharing
global chat history or taking over the receiver.
**Stop babysitting parallel coding agents.**

ThreadMesh routes completion, blockers, review findings, and verified
dependency state to the right agent session at a safe checkpoint—without making
you copy results, spend model turns polling status, or let one session silently
take over another.

**The agent supplies the initiative. ThreadMesh supplies the boundary.**

Expand All @@ -31,12 +33,39 @@ global chat history or taking over the receiver.
> release is suitable for local, trusted-process experiments—not production
> authorization, hostile prompts, or multi-tenant deployment.

## 76-second proof walkthrough

<p align="center">
<a href="docs/assets/demo/threadmesh-proof-walkthrough.mp4">
<img src="docs/assets/demo/threadmesh-proof-walkthrough.gif" width="100%" alt="ThreadMesh evidence walkthrough: one kickoff, zero manual relay or polling, active receiver checkpoint, selective attention, and verified dependency unlock">
</a>
</p>

The walkthrough is generated from a fresh executable demo and retained real
Codex evidence. It is not presented as a live screen recording. The local demo
models the same four-handoff workflow two ways: the manual path requires at
least one kickoff, four status checks, and four relay actions; the ThreadMesh
path requires one kickoff and zero later relay or polling actions. Elapsed time
and model tokens are deliberately marked **not measured** until a network-valid
live baseline is retained.

It also exercises the safety failure people worry about: when B is already
running, the completion stays `pending` in a `checkpoint-offer`; B remains
`running`, and the demo starts zero steer, interrupt, or native-turn operations.

[Watch the MP4](docs/assets/demo/threadmesh-proof-walkthrough.mp4) ·
[inspect asset provenance](docs/assets/demo/README.md) ·
[run the proof yourself](docs/06-guides/attention-router-demo.md)

## Why this matters

Running several agents in parallel creates a new coordination problem. Agent A
may finish the exact input Agent B needs, but neither session knows when it is
useful to speak. The user becomes a human message bus: notice the dependency,
copy the result, find the right session, and explain why it matters.
Running several agents in parallel often gives the user three extra jobs:

- **clipboard:** notice A has the result B needs, then copy and explain it;
- **poller:** repeatedly ask whether review, verification, or a dependency is
finished, consuming time and model quota even when nothing changed;
- **traffic controller:** decide whether to queue, wake, steer, or interrupt B
without enough visibility into B's current work.

ThreadMesh makes that handoff an explicit, portable capability:

Expand All @@ -47,9 +76,11 @@ ThreadMesh makes that handoff an explicit, portable capability:
5. B's harness accepts, rejects, or defers it before model-context admission;
6. the decision and delivery chain stays auditable.

The intelligence is not “agents can send messages.” It is **selective
initiative**: speaking when a dependency is real, staying quiet when it is not,
and preserving the other session's agency.
The intelligence is not “agents can send messages.” Transport is increasingly
available from harness-native APIs, ACP, and A2A. ThreadMesh focuses on
**selective initiative**: speak when a dependency is real, remain quiet when it
is not, verify before unlocking downstream work, and preserve the receiver's
agency.

## What proactive behavior looks like

Expand Down Expand Up @@ -110,12 +141,14 @@ five of five temporary sessions and all coordinator artifacts were removed.

The completed result is deliberately classified `state=blocked` and
`liveProductEvidence=false`: that retained run used fixture-owned or simulated
Git and verification effects. The next branch now wires the existing bounded
Git worktrees and process-isolated child verifier into the same correlated
path. Its live rerun is pending after a reproducible local DNS/TLS failure; it
has not been upgraded into product evidence. After that rerun, the remaining
checkpoint is the manual relay/polling baseline and minimum critical
negative/restart closure. Non-mainline expansion remains frozen.
Git and verification effects. [#133](https://github.com/fyaic/threadmesh/pull/133)
now binds the existing bounded Git worktrees and process-isolated child
verifier into that correlated path on `main`. Its fresh real Codex rerun is
pending after a reproducible local DNS/TLS endpoint failure; it has not been
upgraded into product evidence. The deterministic manual-accounting baseline,
active-receiver checkpoint negative, and 76-second evidence walkthrough are now
the public product proof. New harness, transport, and generalized protocol work
remains frozen until the live rerun and three external setup attempts close.

[Read the exact fixture evidence](docs/09-reviews/2026-09-01-m5-2-autonomous-fixture.md) ·
[Read the real Codex behavior](docs/09-reviews/2026-09-01-m5-2-real-codex-event-pump-behavior.md) ·
Expand Down Expand Up @@ -306,14 +339,14 @@ peer content or as a production security boundary.
install Ajv and native `better-sqlite3`.
- **Reference runtime:** authenticated JSON-RPC + SQLite coordinator for local,
trusted-process experiments.
- **Validation:** 379 tests, plus 55 schema cases and 7 transition cases;
- **Validation:** 384 tests, plus 55 schema cases and 7 transition cases;
documentation lint passes. These are separate counts, not one combined total.
- **Default:** proactive coordination remains off unless a maintainer explicitly
opts into the bounded experimental profile.
- **Next mainline:** reuse the existing bounded Git-worktree and verifier
foundations inside the now-proven real Codex event-pump chain; add a manual
relay/polling baseline and minimum critical negative/restart evidence. Kimi
parity and broader hardening follow after M5.2 closure.
- **Next mainline:** retain one network-valid real Codex traversal of the merged
real-effects path, run the measured manual baseline, and observe three
independent 15-minute setup attempts. Kimi parity and broader hardening
follow only after those product-proof gates.

[Current status](docs/10-planning/project-status.md) ·
[roadmap](ROADMAP.md) ·
Expand All @@ -325,8 +358,12 @@ peer content or as a production security boundary.
| If you want to… | Start here |
|---|---|
| Understand the product | [What ThreadMesh is](docs/00-overview/product-guide.md) |
| Watch the 76-second proof | [MP4 walkthrough](docs/assets/demo/threadmesh-proof-walkthrough.mp4) |
| See real proactive behavior | [Real agent case portfolio](docs/06-guides/real-world-cases.md) |
| Run the closed-loop local demo | [Attention-router demo](docs/06-guides/attention-router-demo.md) |
| Audit the user-value baseline | [Manual relay/polling baseline](docs/06-guides/manual-relay-baseline.md) |
| Audit non-interruption | [Active-session checkpoint case](docs/06-guides/non-interrupting-handoff.md) |
| Try it as a new operator | [15-minute challenge](docs/06-guides/15-minute-operator-challenge.md) |
| Compare selective model initiative | [End-to-end demo](docs/06-guides/end-to-end-demo.md) |
| Add ThreadMesh to a harness | [Adapter implementation guide](docs/06-guides/implement-an-adapter.md) |
| Evaluate a harness | [Harness support matrix](docs/00-overview/harness-support.md) |
Expand Down
52 changes: 41 additions & 11 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,46 @@

# ThreadMesh

ThreadMesh 是一个实验性的 Agent 协调协议与 JavaScript 接入工具包。它让一个
Agent session 在执行过程中发现经过授权的跨任务依赖,自主判断是否联系另一个
session,并发送一条受约束的建议;同时不共享全局聊天记录,也不夺走接收方的
上下文控制权。
**不用再人工盯守多个并行 coding agent。**

ThreadMesh 会把完成、阻塞、评审发现和经过验证的依赖状态,在安全 checkpoint
路由给正确的 agent session:用户不用复制结果,不用消耗模型 turn 反复查询,也
不会让一个 session 静默接管另一个 session 的当前工作。

**Agent 提供主动性,ThreadMesh 提供边界。**

> [!IMPORTANT]
> ThreadMesh 目前是 pre-alpha,主动能力默认关闭。现阶段适合本地、可信进程范围
> 的实验,不应作为生产级授权、多租户隔离或处理恶意 peer prompt 的安全边界。

## 76 秒证据演示

<p align="center">
<a href="docs/assets/demo/threadmesh-proof-walkthrough.mp4">
<img src="docs/assets/demo/threadmesh-proof-walkthrough.gif" width="100%" alt="ThreadMesh 证据演示:一次启动、零人工转发和轮询、活跃接收方 checkpoint、选择性注意力与验证后依赖解锁">
</a>
</p>

这个演示由一次新鲜的可执行 demo 和已经保留的真实 Codex 证据生成,不冒充实时
录屏。对于同一个四次交接工作流,人工路径的最低成本是 1 次启动、4 次状态查询、
4 次复制转发,共至少 9 次用户操作;ThreadMesh 路径是 1 次启动,后续 0 次转发、
0 次轮询。耗时和 token 尚未实测,必须等网络正常的真实基线,文档不会虚构数字。

演示还覆盖最重要的安全负例:B 正在运行时,完成事件只会以
`checkpoint-offer` 留在 mailbox,decision 保持 `pending`;B 仍是 `running`,
不会触发 steer、interrupt 或新的 native turn。

[观看 MP4](docs/assets/demo/threadmesh-proof-walkthrough.mp4) ·
[查看演示资产证据边界](docs/assets/demo/README.md) ·
[亲自运行](docs/06-guides/attention-router-demo.md)

## 为什么需要它

当多个 Agent 并行工作时,用户往往被迫充当“人工消息总线”:发现 A 的结果正好是
B 缺少的输入,从 A 复制内容,找到正确的 B session,再解释这条信息为什么重要。
当多个 Agent 并行工作时,用户往往被迫承担三份额外工作:

- 当“剪贴板”:发现 A 的结果正好是 B 缺少的输入,再复制、查找、解释;
- 当“轮询器”:不断询问评审、验证或依赖是否完成,即使状态没变化也消耗额度;
- 当“交通警察”:在不了解 B 当前工作的情况下决定排队、唤醒、转向还是打断。

ThreadMesh 把这个过程抽象成一项可移植能力:

Expand All @@ -44,8 +69,9 @@ ThreadMesh 把这个过程抽象成一项可移植能力:
5. B 的 harness 在 checkpoint 接受、拒绝或延迟,再决定是否进入模型上下文;
6. 完整的决策、投递与清理链路可审计。

这里的“智能”不只是 Agent 会发消息,而是**有选择的主动性**:依赖确实存在时
主动联系,无关时保持安静,并尊重另一个 session 的自主权。
这里的“智能”不只是 Agent 会发消息。传输能力正在被 harness 原生 API、ACP 和
A2A 普及;ThreadMesh 关注的是**有选择的主动性**:依赖确实存在时主动联系,
无关时保持安静,验证后才解锁下游,并尊重接收 session 的自主权。

## 已验证的主动性效果

Expand Down Expand Up @@ -205,10 +231,10 @@ sandbox。不要用它处理任意恶意 peer 内容或充当生产安全边界
- 协议:可执行 `0.0-draft`,仍可能调整。
- 包:`@fyaic/threadmesh@0.1.0-alpha.0`,可从 GitHub 安装;根 export 是精简 SDK,CLI 与显式 runtime subpath 会安装 Ajv 和原生 `better-sqlite3`。
- 参考 runtime:authenticated JSON-RPC + SQLite coordinator,面向本地可信进程实验。
- 验证:378 项测试,加 55 个 schema case、7 个状态转换 case、文档与链接检查;这些计数分别报告。
- 验证:384 项测试,加 55 个 schema case、7 个状态转换 case、文档检查;这些计数分别报告。
- 默认策略:除非 maintainer 明确选择有边界实验 profile,否则主动协调保持关闭。
- 当前边界:确定性 event pump 已能在一次 kickoff 后驱动 A→R→同一个 A→V→dependent,但三次真实 Codex event-pump 尝试分别停在产品探测、时间证据和用户暂停于五个 session bootstrap,尚未形成真实主动链;第三次没有执行正常信号清理,随后通过一次性精确操作删除并确认了五个测试 session 与临时资源
- 下一主线:冻结非主线扩展,先在现有实现上完成并保留一次真实 Codex event-pump 主动链;只有真实运行暴露出的 blocker 可以插队。随后再恢复真实 Git/verifier 闭环、Kimi parity 与可靠性矩阵
- 当前边界:第六次真实 Codex event-pump 已在一次 kickoff 后通过 9 个 native turn 完成 A→R→同一个 A→V→dependent,后续 runner phase prompt/direct activation 为 0,无关 session turn 为 0,清理 5/5;该次运行的 Git/verifier effect 是模拟的。真实 Git worktree 与 child verifier 已由 #133 合入同一路径,但组合后的新鲜 live 重跑仍受本机 DNS/TLS 故障阻塞
- 下一主线:在网络正常的 host 上保留一次真实 Codex real-effects 闭环,完成实测人工基线,并观察 3 位外部 operator 的 15 分钟上手过程。在这些产品证据前,继续冻结新 harness、transport 和泛化 protocol 扩展

[当前状态](docs/10-planning/project-status.md) · [路线图](ROADMAP.md) ·
[协议草案](spec/README.md) · [验证记录](docs/09-reviews/README.md)
Expand All @@ -218,7 +244,11 @@ sandbox。不要用它处理任意恶意 peer 内容或充当生产安全边界
- [中文文档入口](docs/zh-CN/README.md)
- [英文文档总览](docs/README.md)
- [产品说明](docs/00-overview/product-guide.md)
- [76 秒演示](docs/assets/demo/threadmesh-proof-walkthrough.mp4)
- [真实 Agent 案例](docs/06-guides/real-world-cases.md)
- [人工转发与轮询基线](docs/06-guides/manual-relay-baseline.md)
- [活跃 session 不打断案例](docs/06-guides/non-interrupting-handoff.md)
- [15 分钟外部上手挑战](docs/06-guides/15-minute-operator-challenge.md)
- [贡献指南](CONTRIBUTING.md)
- [GitHub Discussions](https://github.com/fyaic/threadmesh/discussions)
- [GitHub Issues](https://github.com/fyaic/threadmesh/issues)
Expand Down
30 changes: 20 additions & 10 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,13 +150,15 @@ nine bound native turns, zero later runner prompts or direct activations, an
irrelevant zero-turn control, and exact cleanup.

This exposed an execution-order imbalance rather than a change in product
direction. The behavioral checkpoint is passed. The existing bounded
Git-worktree and child-verifier foundations are now wired into that correlated
path, but a successful live rerun is pending after a reproducible local DNS/TLS
failure. The manual baseline and minimum critical negative/restart evidence
remain next. New substrate, generalized recovery, cross-harness, or
presentation work remains frozen. No partial integration attempt is promoted
to M5.2 evidence.
direction. The behavioral checkpoint is passed. The bounded Git worktrees and
process-isolated child verifier are now wired into the correlated path by
[#133](https://github.com/fyaic/threadmesh/pull/133), with deterministic
positive and wrong-finding negative coverage. A successful live rerun is
pending after a reproducible local DNS/TLS failure. The public demo now includes
executable manual-action accounting and an active-receiver checkpoint negative;
elapsed time and token cost remain unmeasured. New substrate, generalized
recovery, cross-harness, transport, and protocol expansion remains frozen. No
partial integration attempt is promoted to M5.2 evidence.

- [x] Ship a one-command local demo with generated identities, grants, example
sessions, and an inspector
Expand Down Expand Up @@ -186,16 +188,23 @@ to M5.2 evidence.
and no new coordinator or verifier subsystem.
- [ ] Retain one successful live Codex traversal of that real-effects path;
current reruns are blocked by a reproducible local DNS/TLS endpoint error.
- [ ] M5.2 closure: reuse the existing bounded Git and verifier foundations
in one successful correlated run, add the manual baseline and minimum
critical negative/restart evidence, and keep raw product data out of public
- [x] Add executable manual workflow accounting: one kickoff plus four checks
plus four relays is a nine-action lower bound, versus one ThreadMesh kickoff.
Keep elapsed time and tokens explicitly unmeasured.
- [x] Add the active-receiver negative: a completion remains pending at a
checkpoint while B stays running, with zero steer, interrupt, or native-turn
starts.
- [ ] M5.2 closure: complete one successful correlated real-effects run and a
measured manual/live baseline while keeping raw product data out of public
output.
- [ ] M5.3: pass three fresh relevant runs plus the manual baseline,
irrelevant, stale/unverified, restart, and cleanup matrix.
- [ ] Repeat the loop across Codex and one ACP-compatible harness
([#93](https://github.com/fyaic/threadmesh/issues/93)).
- [x] Publish the bounded inspector and reproducible deterministic evidence
record ([#92](https://github.com/fyaic/threadmesh/issues/92)).
- [x] Publish a 76-second evidence walkthrough generated from fresh executable
demo output, with retained real Codex evidence and honest claim boundaries.

The executable closure gates for the real-agent phases are in the
[M5 real Codex loop plan](docs/10-planning/m5-real-codex-loop.md). A local
Expand All @@ -209,6 +218,7 @@ incorrect dependency unlocks.
## M6 — Independent adoption and ecosystem bridges

- [ ] Collect three independent setup attempts and one completed real workflow.
- [x] Publish the 15-minute operator challenge and structured report template.
- [ ] Close [#79](https://github.com/fyaic/threadmesh/issues/79) with independent
harness-author feedback.
- [ ] Make ACP the preferred multi-harness gateway.
Expand Down
Loading
Loading