Changelog
Release notes for ManyWe. Each section below expands on click. Subscribe to release announcements via Discord.
v0.1.22 — May 2026 — Features cycle 3/3 final (LAM Phase 3 + 5 P2 defers resolved in-cycle + ops-hardening baseline preserved)
- LAM Phase 3 transport (W22.LAM 1-5d + 2 cont-PRs): daemon LAN listener, IPv6 + multi-NIC, Noise XK envelope wrap (R4 CRITICAL), Windows Named Pipes daemon + smoke + DISABLED CI gate, relay-as-rendezvous, hole-punch + TURN + ICE, persistent trust roster (R4 CRITICAL), operator manual revocation via Profile sync. ADR-054 §OQ#7-10 + ADR-059 §OQ#5 + ADR-051 §3.4 deferred-row-1 + ADR-057 W161 all RESOLVED.
- 5/5 P2 defers RESOLVED in-cycle: per operator no-defer enforcement directive 2026-05-18 — DEFER-1 noise_xk MAX_SECURE_FRAME_BYTES corrected to Noise per-message limit minus AEAD tag (65519), DEFER-2 ADR-054 row 466 amendment, DEFER-3 rendezvous own-Awaiting fall-through, DEFER-4 hole-punch candidate exchange API, DEFER-5 hole-punch input validation (MAX_PEER_CANDIDATES=32 + v4-mapped IPv6 normalize + dedup).
- 3 P0 fixes: mcp-server passphrase visibility (W22.P0-1 verification-first per STAGE 0 spike — Option C′+D materialize fix already in v0.1.18 PR #178), SSH keepalive pre-commit gate, mTLS env-var export across cluster-recovery scripts.
- TS SDK: TaskApi.schedule ADR-030 typed wrapper closes L-DescopeSdkTaskScheduleAdr030 (G7 r2 P2 defer carry from v0.1.21).
- ADR-054 fold: §"Phase 3 LAN-Mesh Hardening" section landed inline with W22.LAM-5c (avoids banner rebase risk per plan v1.7 R4 strengthening item).
- v0.1.21 pull-back audit: completeness verification + 21 pull-back item disposition documented.
- 988c66f4 ops-hardening baseline PRESERVED: Restart=always × 5 systemd templates, GlobalUnexpectedCleanShutdown + RelayUnexpectedCleanShutdown alert rules, shutdown_reason cargo tests INTACT across all 24 PRs.
- 40+ unique R8 lessons codified: L-CodexNonDeterminismRequiresCoordIndependentVerification, L-SerdeReprMandatoryForWireFormatPinnedDiscriminantBytes, L-NoiseSpecPerMessageLimitMustBindMaxSecureFrameBytes, L-BannedAddressGateMustNormalizeV4MappedV6FirstThenCheckBothSurfaces, L-RegressionTestMustFailOnBugAndPassOnFix, L-CodexRoundOptionCInlineAtHardCap, L-AdrPayloadDecoderMustMirrorActualBuilder, L-StrictScheduledStatusValidation, L-CarveOutFixVerificationDriftBetweenCycles, L-MigrateIdentityDelegateNotOrchestrate, and others.
- Release gates: G7 Codex external review APPROVED with P2+P3 deferred to v0.1.23 release-hardening cycle (per docs/policies/v0121-pullback-policy.md §1 no-feature-dev), G8 LLM-tested-tuple synthesized from STAGE 4.5 + G7 evidence (real chatbox transcripts deferred to v1.0.0 GA tag prerequisite).
v0.1.21 — May 2026 — Features cycle 2/3 final (LAM Phase 2 + 2b + pull-back policy enforcement)
- LAM Phase 2 LAN TCP (W21.16.3a-d): mDNS DNS-SD fingerprint-only discovery, ed25519 mutual 1.5-RTT handshake with role-separated SERVER/CLIENT transcript tags (defeats cross-listener replay + self-reflection), Trust-on-Get static-peer mode, and integration tests close ADR-059 OQ#1-6. Daemon-side mesh_server wire-up, multi-NIC/IPv6, and Windows Named Pipes deferred to LAM Phase 3 (v0.1.22).
- LAM Phase 2b P2P pairing + trust (W21.16.4a-c + W21.16.5): P2P pairing flow scaffold,
DeliveryVia::P2p+ 4-tierCompositeTransport(mesh > LAN > P2P > relay), trust ladder (Untrusted → Probational → Trusted with explicit transitions), TOCTOU-safecheck_and_useclosure-lock pattern,RevocationList(operator-explicit MCP arm), R4 privacy red-line audit (ADR-054 OQ#7-11 closed: no leak vectors found), LAM E2E integration tests. - A2A+ACP bridge (W21.14): explicit interop architecture, ACP Bridge module, wire transcoding fold (W##).
- Rust + TS SDK polish: typed
FeatureUnavailablevariant,SkillUninstallOptions.hermes_category,manywe_confirmtgz_b64 resupply, W117 retry-policy driver, W146PendingFramesBucket, W113 distinct-record encrypted-message-table fold, W21.S5.1 per-profile push token store, R4-clean encryptedscheduled_messages. - Pull-back policy enforcement: mid-cycle pull-back policy pulled 21 v0.1.22 defer memos back into v0.1.21 scope — 100% RESOLVED at cycle close (with policy text count drift noted in cycle-close docs).
- Pre-rc.0 hardening: openclaw_profile parser
psargv false-positive fix (token-based + layered quote handling, 3-round Codex β strict HARD CAP); P2pOrLanOrLocal coverage inphase2c-multi-devicematch; W177 cfg(unix) cascade restores Windows-gnu cross-compile;agentskills.json+tools/load-testversion-sweep drifts pre-empted with sweep §6b/§6c entries (R8 prevent-recurrence). - Release gates: G7 Codex external review, G2 lockstep coherence, G13 forbidden marketing prose, R12 chaos waiver continued from v0.1.20 (deferred to v0.1.22 real-fire run); STAGE-end 24h canary soak CANCELled per features-cycle policy (restore in v0.1.23+ release-hardening cycle).
v0.1.20 — May 2026 — Features cycle 1/3 final (Tier 0/1 passed + rc gate blockers fixed)
- Release gates: Tier 0 passed 10/10 canonical hosts with PASS_KEPT verdicts; Tier 1 passed P1/P2/P3/P4 with all S1-S5 scenarios bidirectionally; cluster-health passed with 3/3 Globals, 4/4 Edges, and active_draining_count=0.
- Final rc fixes: fresh RouteAnnounce now clears sticky Global Draining state for restarted Edges, and contact deletion clears optional FK dependents before removing the contact.
- Runner hardening: Tier 0/1 transport now handles ptyless shells, Windows PowerShell stdin, T7 PATH ordering, and timeout watchdog behavior more reliably.
- Observability cutover: MWopsUS Prometheus tunnels scrape the dedicated Edge metrics listener; automating that Edge listener drop-in for future fresh deploys is tracked for v0.1.21.
- Candidate surface promoted: runtime supervision S5 TRUE-FULL, cluster-blocklist security stack, retry classifier scaffolding, R12 forward-receiver-panic live assertion, task_panic observability, Chat-First i18n errors, OutboundQueue dropped-frame metrics, and dual axum listener split are promoted from rc.0 to final.
v0.1.20-rc.0 — May 2026 — Features cycle 1/3 candidate (supervisor S5 TRUE-FULL + cluster-blocklist security stack)
- Runtime supervision: PersistentNonceDedup new_supervised + AbortOnDrop guard reach S5 TRUE-FULL coverage; W107/W109 inner pin+timeout-await pattern hardens persistent nonce eviction; task_panic_total metric + chaos-panic-inject Cargo feature give deterministic chaos panic surface.
- Cluster-blocklist security stack: ADR-055 Raft state machine + ADR-056 5-class retry classifier + W7.1a/b/c relay forward gate + MCP admin tools + Global gRPC surface ship the v0.1.20 security baseline.
- Daemon and chat-first: W4.6 route_intent ambiguity catcher closes 3 common chat-host typo patterns; W17.RC.2 AgentError → Chat-First i18n adapter with 30-key EN+ZH catalog removes daemon stack traces from user-visible surfaces; W17.2.W63 AgentCore OutboundQueue wiring adds manywe_outbound_queue_dropped_total observability.
- Release pipeline: W77 release-test-himanywe Step 4 bounded poll + W78 leader probe retry budget + W6.x V016 SSH fallback gate + W7.3/W7.5 daemon-side fingerprint enforcement verifier + W7.4 cluster token rotation runbook close release-determinism gaps.
- R12 chaos: forward-receiver-panic scenario promoted from skeleton to live assertion block; W2.5 ack-before-snapshot-persist scenario skeleton lands. Actual-fire chaos evidence carries to v0.1.22 pending dedicated Aliyun staging.
v0.1.19 — May 2026 — cycle-end hardening candidate (runtime supervision + release fail-close)
- Runtime hardening: agentd profile serving, task supervision primitives, notification/outbox metrics, delivery-state persistence, and R4-B metadata handling prepare the daemon for the v0.1.19 final gate.
- Relay and Global durability: shutdown drain orchestration, durable revoke queues, nonce persistence, route-version fencing, and RelayEventManager ring buffering improve cluster recovery behavior under release testing.
- Release pipeline: version sweep, G10 ops verification, G11 cache-bust checks, forbidden marketing strings, apex rollback, and chaos runner plumbing now fail-close earlier in the tag path.
- Monitoring baseline: v0.1.19 ships the manywe-runtime alert rules and Grafana dashboard baseline used by the production ops monitor.
v0.1.18-rc.1 — May 2026 — profile-aware rc.1 candidate (independent host profiles + hardening drain)
- Independent host profiles: installer/profile plumbing now keeps Claude Code, Cursor, Codex, Hermes, OpenClaw, and Claude Desktop style profiles on separate data dirs, service labels, IPC endpoints, and MCP env blocks.
- Credential architecture: Linux system-service installs now persist passphrases at the profile
auto-passphrasefile and no longer depend on/etc/manywe/agentd.envfor steady-state daemon unlock. - Phase 2 drain: rc.1 closes the W42-W54 hardening bundle, including release residuals, OpenClaw schema detection, Tier 1/2 runner consolidation, and verify-before-persist key handling.
- Hermes Gateway: explicit
HERMES_HOMElayouts are preferred before HOME fallbacks so custom Hermes installs do not load stale hooks. - Evidence posture: local profile reconciliation and S2b five-daemon pre-tag resource evidence are recorded under
docs/e2e-evidence/v0.1.18-rc.1/anddocs/v0118-rc1-spikes/.
v0.1.18-rc.0 — May 2026 — pre-GA rc.0 candidate (staging release pipeline + Tier 0/1/2 gates)
- Pre-GA release pipeline:
release.shstaging flow now enforces the 0.1.18 version sweep, Codex baseline-attestation fallback for G7, Stage 2.5 pluginpnpm install/build/pack, Stage 4 plugintgzmanifest ordering, and versioned-filename rename guards before Layer A pack. - Tier gate runners: Tier 0 install gate adds phase-0-aware aggregation plus
--agent/--llm-ping-timeout; Tier 1 typed-pair validates four cross-host pairs; Tier 2 features-walk consumes paired-state evidence for feature-by-host coverage. - Host and protocol hardening: rc.0 consolidates the v0.1.18 protocol and A2A primitive work, Windows pair execution through
mcp_adapter.cmd, and the Layer B / test-host recovery fixes accumulated during the v0.1.18 plan. - Release posture: artifacts are staged under
/releases/0.1.18-rc.0/for Tier 0/1/2 validation before any apex cutover; Tier 3 operator daily-use remains the next gate before the finalv0.1.18tag.
v0.1.17-rc.0 — May 2026 — first v0.1.17 closed-beta candidate (MCP-first push architecture, content-blind A2A primitives, plan v1.4)
- Strategic positioning anchored: ManyWe is content-blind agent-to-agent infrastructure deployed as a chat-host extension rather than as a server-side framework. Plan v1.4 (
docs/ManyWe-v0117-plan.md) bakes the §2.8 inviolable constraint that all protocol extensions remain content-blind to relays. - Push delivery architecture (PR-1..PR-9 family):
PushEventBusconvergence, dual-emit standardnotifications/message+ deprecated customnotifications/manywe/message, host-aware delivery paths for OpenClaw / Hermes / Cursor / Claude Code / Claude Desktop with 7-day TTL + clear-on-read defaults. - Hermes v0.13 capability probe (PR-3.5): observation-only probe added per mentor mid-cycle decision after PR-2 LoC overrun lesson;
workflow_modehard-coded"off", no Kanban //goalinvocation in v0.1.17. - Wire protocol capability review (PR-15):
protocol_versionkept asu8onEnvelope;AuthFrame.supported_protocol_versions: Vec<u8>andAuthResultFrame.negotiated_protocol_version: u8verified through round-trip contract tests. Future A2A primitives (priority,interrupt_policy,sender_kind,trust_set) will advertise via capability negotiation, not aprotocol_versionbump. - Legacy code audit (PR-12): targeted -500 LoC delete-and-audit across IM-bridging / retired-feature surfaces; closed under §5.5.
- G8 LLM-tested-tuple framework (PR-9 / PR-10): 5 hosts × 3 LLMs = 15-tuple matrix scaffold + run-readiness audit + evidence template. PR-9 enumerates schema only (mock); real PR-10 runs require operator-driven host setup.
- SLO report parser (PR-11): parser scaffold for downstream SLO gate (PR-11b post-rc).
- rc.0 evidence posture: AutoE2E mock matrix accepted (PR-9 dry-run + PR-10 helper enumeration); Step 6 operator chatbox spot-check + PR-10 live tuple evidence + PR-11b SLO gate scheduled post-rc per operator decision.
- v0.1.18 handoff: protocol consolidation + A2A primitives (§22.1) + Layer B hardening + ManyWe-on-SLIM compatibility spike. SDK + ACP bridge moved to v0.1.19.
v0.1.16-rc.7 — May 2026 — OpenClaw mcp-only registration path + Tier 0 install gate 10/10 PASS
- OpenClaw plugin-layer registration dropped:
install.sh+install.ps1no longer writeplugins.entries.manywe/plugins.allow.manywe/plugins.installs.manywein the default MCP-only mode. Writing those fields tripped OpenClaw 2026.5.6's reload classifier into "requires gateway restart" → SIGUSR1 → in-process restart on Docker (PID 1 = bash) →manywe-agentd mcp-serverchild not respawned. Result: real Docker users would have faced mandatorydocker restart <container>after install. The mcp-only path writes onlymcp.servers.manyweand lets the gateway lazy-spawn the MCP child at first agent invocation. Zero container restart, zero/restart-in-IM. Backward-compatible:--with-openclaw-pluginopt-in still installs the legacy plugin-layer Chat-First UX; uninstall / purge paths unchanged. - Tier 0 install gate 10/10 PASS: 12-session forensic install-path verification cycle on real test hosts (T1-T10) closed with all 10 hosts green. Product fixes: (a)
install.shmachine-mode SSH pipe close + system-path purge, (b)install.ps1manifest parser$Manifestvariable collision, (c)install.ps1$exeFinalPathderivation via existing$agentdExe, (d)install.shchmod +x verifier defeats Docker fakeowner mount's broken[[ -x ]]test. Test infra: tier0-gate now accepts Unix TCP IPC fallback when UDS chmod fails onfakeowner-class mounts. - G8 LLM-tested-tuple cross-host real chatbox flow: T1 (WhatsApp / Sonnet 4.6) and T8 (QQ / MiniMax M2.7) validated bidirectional ManyWe relay flow end-to-end — invite generation → cross-host accept (asymmetric ManyWe-IDs per cryptographic identity) → text message ~90s round-trip via
edge-us ↔ edge-sg2→ file transfer → auto-share skill with contact-tag prerequisite. Both hosts validated zero docker restart and zero/restart-in-IM post mcp-only patch. 18 chatbox interactions captured with verbatim transcripts + IM screenshots. - Layer B (4 Edges + 3 Globals) skipped:
git diff --stat rc.6..HEAD -- crates/manywe-relay/ crates/manywe-global/= empty; cluster maintained on rc.5/rc.6 hotfix state including the rc.5invite_publishleader-gate hotfix on Globals. Documented atdocs/release/v0.1.16-rc.7/layer-b-decision.md. - v0.1.17 backlog (deferred, do not block this rc): F-PATCH-1 chatbox_contract.requires_user_restart hardcoded true → derive from install mode; F-PATCH-2 preserved_v015 status text inconsistent with mcp-only config; LLM "first query of session prefers shell tools" behavior → system-prompt nudge or chat-first wrapper; release.sh G11 deployed-sig-roundtrip gate (verified manually this cycle); Tier 0 gate
stage_windows_local_installer64KB SSH-stdin cap → scp transport.
v0.1.16-rc.6 — May 2026 — leader-hint retry, leader-only writes, short-link auth recovery
- Global leader-only writes: follower-side Raft write handlers now reject before
propose()withUnavailable+leader-hint, avoiding leakedForwardToLeaderinternals and preserving relay retry behavior. - Relay route ownership retry:
route_announce, route revoke, and route drain followleader-hintonce instead of treating a correctable follower response as a hard internal error. - Short-link invite auth recovery: AgentD recovers when the invite publish token is stale while the websocket is still healthy, fixing the rc.5
invite_publish403 path. - Release asset drift closure: rc.6 rebuilds
manywe-global,manywe-relay, and all AgentD platform artifacts from one source commit, clearing the rc.5 Global hotfix drift between production binaries and release assets.
v0.1.16-rc.5 — May 2026 — closed-beta rc.5 fix wave (chatbox testing 1777966312 F1-F4) + release-tooling rc-suffix support
- Closed-beta chatbox fixes (F1-F4 from Codex testing 1777966312): F1 fresh-agent schema probe + chatbox state bootstrap; F2 plugin auto-enable + before-prompt hook hard-routing of
[Feedback:bug]markers + heredoc backtick scrub; F3 server-side state-bound replay routing (3 attack vectors blocked: marker-in-args via mcp-server stdio, marker-in-args via daemon IPC, X-ManyWe-Confirmed-Replay header); F4manywe_contact_searchresolvesMW-XXXX-XXXXshort IDs +manywe_message_sendrouting guidance. - Side P0:
scripts/check-no-credentials.shwarn-on-no-op-scrub for unrecognized schema; iterate all OpenClaw config paths + atomic write (no backup leak); ADR-030 marker strip past IPC proxy boundary. - Release-tooling rc-suffix support:
release.sh:85regex acceptsX.Y.Z-(rc|alpha|beta).N; Stage 4 detects pre-release suffix and passes--rc $VERSIONtogenerate-manywe-json.sh;check-version-consistency.sh5 sites widened (check_leq equality-first short-circuit + plugin-release.ts extract regex + install.sh/ps1 regexes + HTML body scan SUFFIX_RE);tools/load-test/Cargo.toml0.1.15 → 0.1.16-rc.5;deploy/third-party-notices/index.htmltopbar nav drift fix (latent bug pre-existing). - Codex auto-review verdict: 0 P0 / 12 P1 / 4 P2 across rc.5 fix wave + tooling patches. 2 P1 from rc.5 work (Stage 4 manifest gen rc-aware = fixed by tooling commit; manifest feedback identity fields = self-resolved by Stage 4 regen with operator-managed
~/.manywe-feedback-identity.envsourced). 10 P1 are pre-existing in main HEAD (tool-count guard 123 vs 124, ManyWe: prefix on disabled task-schedule tools, SDK tool-count baselines, running_daemon None, v0116_rc5_cert.yaml stale SHA, short-link auth recovery stale token) — defer to V0117-MAIN-HEAD-P1-RESIDUE backlog. - P18 closed-beta cycle deviation (operator-acknowledged): rc.5 ships to production manywe.ai + 4E+3G cluster + HiManyWe MWopsUS#1 BEFORE AutoE2E matrix runs (P18 cross-version test target waived by operator decision). AutoE2E + P9 chatbox testing run via Codex desktop AFTER cutover. G8 LLM-tested-tuple evidence file deferred to AutoE2E run (back-fill).
v0.1.15 — May 2026 — openraft state-machine persistence (SEV-0 latent bug fix) + cluster mTLS atomic + HiManyWe release-test pipeline (P16 step ①⓭ MANDATORY)
- Critical fix — openraft state-machine persistence (Shape A1):
GlobalStateMachinepreviously held all state in-memory only. Every clean restart that crossed a log-compaction event hitCannot re-apply logs: need logs from index 0, but purged up to T1-N…and crash-looped indefinitely. Bug present in every binary back to v0.1.0; observed live onglobal-de2026-05-02 (~09:02 CST, manual recovery 4 min later). Fix persists(SnapshotData + last_applied_log + last_membership + raft_term)atomically as one blob on everyapply()+install_snapshot(). New 3-branch boot classifier (steady-state / true-first-boot / pre-B6.5-migration-gap) refuses unsafe blank-start whenpurged.jsonexists withoutstate-machine.bin. - Cluster mTLS atomic (B6.1): gRPC server requires
cluster_tokenbearer + (when wired in v0.1.16) client cert in trusted-fingerprint allowlist. Auth-error sanitization: externalStatusreturns generic"missing required authorization"while internal log retains specifics. NewMANYWE_GLOBAL_DISABLE_BOOTSTRAP=1env enables production-safe Branch A.LOWEST.α lowest-id-Global recovery without cluster-wide bootstrap re-trigger. - SERIAL Globals restart enforcement (B6.6):
release-lib.shdeploy_global_coordinated()enforces lowest-id LAST + 5-mincluster-health-probe.shstability between nodes per CLAUDE.md post-launch HARD rule.MANYWE_RELEASE_ALLOW_PARALLEL_GLOBALS=truerejected unlessMANYWE_RELEASE_PRE_LAUNCH=true. v0.1.14 parallel-restart was the failure mode that caused the 2026-05-02 openraft RCA recurrence. - HiManyWe release-test pipeline (P16 step ①⓭ MANDATORY, B10):
scripts/swap-himanywe-binary.sh+scripts/release-test-himanywe.sh+release.shStage 16 wrapper. Every release v0.1.15+ MUST swap the MWopsUS#1 §2.0b feedback dispatcher binary + verify end-to-end before tag-cut declares "shipped". Class A failure (operational) auto-rollback. Class B failure (correctness) triggersdocs/runbooks/release-yank-procedure.md. - Layered leader-probe + degraded-ack with strong audit (B6.3): direct
grpcurlprimary path; SSH-jump fallback gated by GPG-sig + auto P0 ticket + 24h fix window + canary-phase-forbidden. - MWopsUS#1 ops monitoring deploy (B8.1 + SG#2 LIVE INCIDENT fix): 4 systemd tunnel services (sg/us/hk/sg2 + node-exporter on sg2-edge) + blackbox-exporter dual-layer probe (GTM DNS + per-pool HTTPS via
--resolve). Closed SG#2 LIVE INCIDENT 2026-05-02 (HostNodeExporterDown + RelayDown firing alerts). - Cluster inventory SoT (B8.5):
deploy/ops-monitor/cluster-inventory.yamlsingle canonical source consumed byscripts/audit-cluster-allowlist.shweekly cron +docs/runbooks/cluster-edge-add-procedure.md11-step. - GTM watchdog (B8.3 + B8.4):
scripts/install-aliyun-cli.sh+ RAM read-only sub-account for D1-mode monitoring of Aliyun GTM 3.0 expiry without write privilege. - URL migration (B7):
manywe.ai → www.manywe.aifor 5 path-prefix scope (install / release / downloads / well-known / changelog) across 17 deploy files; apex 308 redirect preserved. Compile-time + runtime coverage intests/regression/url-migration-www-coverage.sh. - Release-pipeline hardening: Stage 15 fail-close
gh release create+ per-target subdirectory flattening for asset upload (B9.16); 4 NEW PRE-TAG drift gates (ADR locked-string regression / target-version anchor immutability / G9 dual-manifest / PR-base SHA dependency); soft-uninstall mode decision Option C (defer to v0.1.16). - Bug fixes:
manywe-relayinvite-creation Prom counter; macOS singleton flock retry loop (3 × 50ms);install.ps1 -Uninstallremoves BOTHmcp.servers.manyweANDmcpServers.manywe(V011-P2 closure since v0.1.13); Rust 1.94 strict clippy fixes (4 lints); CI protoc install on all OS runners; MCP tool drift gate phase-function counting fix (closes 110-vs-125 false-positive). - Honest deferrals to v0.1.16: B6.1 Layer 1 fingerprint enforcement wiring (currently observe-only, V016-B6.1-FINGERPRINT-WIRING); 16 P2 findings tracked at GitHub issue #101; credential-leak post-GA remediation (issue #92).
- Release sign-off: 9 dev PRs merged (#91/#93/#97/#98/#99/#100/#94/#95/#96/#102) with per-commit Codex auto-review 0 P0 each. Pre-GA G1-G8 gates all PASS. Cross-compile 5 targets × full Developer ID codesign × Apple notarize 2 darwin all green. Layer B 4E+3G cluster on Apr 30 v0.1.14 binary at tag time; Stage 7 SERIAL deploys v0.1.15 with state-machine persistence fix.
v0.1.14 — April 2026 — public technical disclosure + Eve SIGKILL Q9=b defense-in-depth + G8 LLM-tested-tuple gate
- Bucket 0 disclosure docs (audit + factual fix):
deploy/security/index.htmlIPC TCP claim aligned withipc.rsUDS+TCP-fallback (Codex pass-1 finding 3b);deploy/install/footprint.mdroot-install paths enumerated (Codex pass-1 finding 3a);deploy/install/transparent/index.htmlQ6 BARE-token format fix (Codex pass-1 finding 4 double-prefix); install footprint summary distinguishes user vs root install across both pages. - B0.6 Rust Hermes installer 2-layout enumeration:
installers::hermes::hermes_config_path()+existing_hermes_config_paths()+ autodetect now enumerate canonical (~/.hermes/config.yaml) and subdir (~/.hermes/hermes-agent/config.yaml) layouts (Codex pass-1 finding 5 — pre-v0.1.14 install.sh enumerated both, Rust did not). - B0.4 / Q12=(c)
--skip-notarizeremoved:release.shStage 3 always runs codesign + notarytool submit + stapler validate. RC and production paths align — RC tests now catch sign/notarize regressions before tag. - B1.1 / Q9=(b) Eve SIGKILL defense-in-depth:
install.shwrites the install-proof-pending JSON with conservativehost_typefrom cheap stat-onlydetect_hermesBEFORE the slow openclaw probe, atomic-updates afterwards if probe found a higher-fidelity host_type, plus_run_detachedhelper (setsid → nohup fallback) so the daemon-kick subprocess survives chatbox-sandbox SIGKILL of the parentbash. Completion sentinel file written after JSON is durable. - Bucket 1 install hardening: Task N regression test for openclaw multi-version pick-newest; Task Z install.ps1 BOM verify-flow fix (
WriteAllBytesfor proof tokens — pre-v0.1.14Set-Content -Encoding UTF8prepended a BOM that brokeverify-install); Task AAmanywe_push_register_autohost-scoped clarification (Rust + TS schema both updated to mirror); Task AB underscore-confirm_confirmhint with bilingual error code in dispatcher. - B2 G8 LLM-safety acceptance gate: new release-completeness gate at
release.shStage 1 — fails-close in--full-runwhendocs/e2e-evidence/v$VERSION/llm-tested-tuple.mdis absent OR has fewer than 2 host_tuple rows OR fewer than 2 distinct LLM versions OR placeholder transcript/proof paths OR declared paths don’t exist on disk. Q4 minimum: Sonnet 4.6 + (MiniMax 2.7 OR Kimi 2.6cn). Schema template atdocs/e2e-evidence/_template/llm-tested-tuple.md. - B4 push wiring:
format_proof_message_with_contextadds host + chat_id_redacted + issued_at + caveat lines while preserving the legacy first-line prefix (install.sh banner-match contract); Hermes uninstall scans every existing layout (couples with B0.6); 4 audit-only regression test fixtures pin v0.1.13 behavior (poll loop + layout enum + Hermes-restart prompt + multi-version openclaw). - B5 uninstall scaffold: shared
UninstallPlandata structure with safety invariants (validate()rejects RemoveDir on/,$HOME, etc.) + 6 unit tests pinning purge-superset-of-uninstall. v0.1.14 ships scaffold only; dispatcher integration is V0115-CARRY-11.install.ps1now writes unifiedinstalled-via-manywe.jsonat%LOCALAPPDATA%\ManyWe\mirroring install.sh schema (cross-platform parity). - Cargo SemVer 3-part fail-close:
scripts/check-version-sweep.shrejects 4-part Cargo + npm versions (e.g.0.1.13.1) at release-gate stage 1; mirrored tomin-agent-version.test.tsassertion bump (0.1.13 below MIN, 0.1.14 matches MIN, 0.1.15 above MIN). - Release-gate discipline (v0.1.13 L2 lesson recurrence fix): G7 (Codex APPROVED) + G8 (LLM-tested-tuple) both retrofitted from
err(always-hard-fail) togate_violation(warn in dry-run / fail in--full-run). Regression test asserts no nakederr "G[0-9]"survives inscripts/release.sh. - Hard rules added: P15 English-First / never bilingual stack (committed to CLAUDE.md + AGENTS.md in v0.1.13 close-out, fully enforced in v0.1.14 dispatcher hint update); install.sh openclaw probe
timeoutprecondition guard for macOS hosts without GNU coreutils. - v0.1.15 carry-over: 15 entries enumerated in
docs/v0114-deferred-to-v0115.md(B0.5 OSS install.sh wrapper; entire Bucket 3 CLUSTER.2 mTLS rotation; B5.1 dispatcher integration; Bucket 6 P2 backlog; dispatcher P15 dual-locale cleanup; stack-merge GitHub workflow validation; etc.). - Codex review: external review pass + operator review pass-2 both addressed in source (P0 release-gate blockers fixed: check-version-consistency 40/40, cargo fmt clean, cargo clippy
-D warningsclean, release.sh Stage 1 reaches end on clean worktree).
v0.1.13 — April 2026 — A-class install proof + push UX + L1 contract gate green
- B0.1 A-class daemon-active install proof: install.sh / install.ps1 stage
~/.manywe/install-proof-pending.json; daemon spawnsopenclaw message send(or queues to hook.py for Hermes) so “ManyWe install proof: MW-INSTALL-<32hex>” lands in the user’s IM chat. Closes the v0.1.12 hallucinated-INSTALLOK class. ADR-041 two-class threat model. - B0.11 CONFIRM-01 fix: ADR-030 replay marker now bypasses the generic
ToolPermission::Sensitivegate (was consumed-but-ignored, causing the self-confirm loop onmanywe_skill_install+ every other Sensitive tool). - B0.12 SkillPackage eager decode:
manywe_skill_list_receivednow shows actualskill_name+payload_sizeon first call, not(pending)placeholders. - B0.14 mw_session debate tools: 3 new MCP tools (
manywe_debate_start/_send_round/_close) per ADR-042. - B0.17 binary inventory enumeration: uninstall
--purgenow enumerates 8 candidate binary paths cross-platform (closes the V0112 T9-style residue class). - B0.18 ManyWe-self-controlled --machine JSON: uninstall machine output is enum strings + integer counts only; path arrays moved to stderr; pure-bash printf fallback when python3 absent.
- Push UX:
/push/landing page + architecture SVG +/getting-started/Step 2 (push BEFORE friend-add per Q5 unambiguous-AI-chat sequencing);manywe_helpsurfacesmanywe_push_register_autoas top-level; OpenClaw plugin first-run state machine; SKILL.md multi-locale push triggers + Hermes proactivity guidance;install_proof_dispatchfield surfaced viamanywe_status. - L1 schema-drift gate green: 16 inherited Rust↔TS permission/name drift items resolved (8 ops-admin tools intentionally Rust-only behind
OPS_ADMIN_ALLOWLIST; 5 missing tools ported to SDK; 2 setup-install Rust:standard→Sensitive flips; phantommanywe_contact_set_languageremoved). Bothcheck-tool-permission-drift.shandcheck-mcp-tool-drift.mjspass. - Release discipline: P15 hard rule (English-First UX, never bilingual stack) committed to CLAUDE.md + AGENTS.md;
MANYWE_RELEASE_GATES_MODE={warn,fail}env-var toggle on all release-gate scripts;check-version-consistency.shrespectsOK-historical:markers + file-level exclusions for changelog; OpenClawplugins.allowauto-reload probe documented (docs/e2e-evidence/v0.1.13/openclaw-reload-probe.md). - Cluster:
manywe-globalgRPC reflection (CLUSTER.1) + openraft state-transition INFO logger (CLUSTER.3);test_raft_leader_failover15s→45s timeout to eliminate parallel-test-load flake. - 3 ADRs: ADR-040 push UX state contract; ADR-041 anti-hallucination two-class threat; ADR-042 mw_session envelope schema. ADR-039 §enum 1 + §enum 3 extended.
- Post-RC fix bundle (RC matrix + Codex review 2026-04-28): Daemon — Task T (Option B eager UDS probe falls back to TCP+token IPC on Docker overlay-fs / restricted FS / SELinux); Task U (two-phase install-proof status: daemon writes
queuedfor Hermes path, hook.py upgrades todeliveredonly on positivemessageId/sent: true— closes the FALSE POSITIVE failure mode that defeated ADR-041 anti-hallucination on MnD); Task V (setup-status cross-user systemctl fallback +data_dir()reads/etc/manywe/agentd.env+ systemd unit so chatbox plugin running as ubuntu sees the daemon installed under/root/.manywe); Task W (install.sh always alignsdetected_data_dirwith the daemon’sMANYWE_DATA_DIRfor system-service installs). Install — Task X (PowerShell function ordering on install.ps1 —iexdoesn’t hoist defs); Task Y (install.ps1 refuse-up-front when SYSTEM context detected). Hermes — Task I (Gateway hook auto-wiring) + double-prefix proof token + qualified target<channel>:<chat_id>+ periodic queue drain. Release gates — check-nav-consistency.sh now scansdeploy/*/index.html+ refuses zero-page PASS (5 stale-nav pages repaired); pre-push hook now uses--range @{upstream}..HEAD(was checking empty staged diff); install-git-hooks.sh dispatcher quoting bug fixed (gates with arguments now actually pass them);min-agent-version.test.tsbumped to assert v0.1.13 hard-cut; release.sh stage 1 now runs lockstep + nav + Codex APPROVED gates fail-close. P15 — remaining bilingual push UX strings in dispatcher.rs / tools.rs / before-prompt.ts / marketing script all converted to English-only (locale-adaptive single-language deferred to v0.1.14). - Honest deferrals to v0.1.14: B0.15 shared
build_uninstall_planRust struct; B0.16 install.ps1 manifest unification; B0.17 binary inventory enumeration; B0.19 dev-tool fall-through audit; Bucket 1.9 / 1.13 / 1.19 P2 push UX nice-to-haves; full purge hardening (the v0.1.13 uninstall correctness bundle handles common cases; the deeper invariant-checked plan-builder for malformed-state recovery is bigger than v0.1.13 scope); Task Y deeper architectural fix for SYSTEM-context Scheduled Task SID mapping (the v0.1.13 refuse-up-front guard is the safe interim); 16-item L1 Rust↔TS schema drift backfill (the v0.1.13 plugin/daemon pair is consistent; backfill is for legacy schema clean-up); CLUSTER.2 mTLS (deferred per locked plan); MSVC Windows target (already deferred from v0.1.9); locale-adaptive page authoring (English-only ships now per P15; locale negotiation is a v0.1.14 add); Eve’s chatbox-sandbox SIGKILL hardening (move install-proof-pending write earlier in install.sh, OR detach viasetsid/nohup; daemon + dispatch path are correct, only thecurl|bashexecution lifecycle is sandbox-truncated, NOT a v0.1.13 binary regression). - Release sign-off: Codex external review pass-3 APPROVED (after pass-1 NEEDS WORK on 4 P1 + 1 P2 and pass-2 NEEDS WORK on 1 documentation-truthfulness blocker, all fixed in-place). Pre-GA G1-G7 gates all PASS. RC matrix 9 of 10 hosts END-TO-END GREEN (Eve’s chatbox-sandbox SIGKILL is the only 🟡 and is a v0.1.14 hardening item, not a binary regression). Layer B 3E+3G cluster cutover complete: 3 Edges on
manywe-relayv0.1.13 (SHAc800ad2d...), 3 Globals onmanywe-globalv0.1.13 (SHAcd9fb63d...) with WAL wipe + lowest-id-first restart permemory/feedback_openraft_wal_wipe_recovery.md. Layer A static site SHA-verified live for all 5 binaries + install.sh + install.ps1 + 11 aux_files + signed manifest.
v0.1.12 — April 2026 — install hardening + visual layer + native push
- G1 canonical state enum (
ConnectionState::AuthFailed). - G2 ADR-030 v4 SENSITIVE_TOOLS bump 6→7 (
manywe_upgrade_executejoined; per-tool TTL 600/300/120s). - G3 patch-v3 visual layer (chat-cards + 23 SVG sprite + agent-surface showcase + 12 render fns + mcp-response-meta module).
- G4 push auto-config (Hermes + OpenClaw native push, first-message-capture with MW-PUSH-XXXXXX OOB proof code anti-hijack).
- Install hardening: env-var bypass removed, install_status canonical enum, uninstall canonical JSON schema (Gap M), post-purge re-scan (Gap K),
--deep-purgeflag (Gap 5), R1 install.ps1 stop-process before delete. - CLI:
main.rs --versionflag,repair-relay-authsubcommand +manywe_repair_relay_authMCP tool. - Status:
setup-statuscanonical state enum (4/7 local-only).
v0.1.11 — April 2026 — install/uninstall hotfix
Agentd-only rebuild. 12 P0/P1 install/uninstall + status bugs fixed (A–G + V0110-UNINSTALL-02/03/04/05/06/09). Stale lock cleanup, second-wave SIGKILL on Windows binary copy, manifest-driven purge, Hermes config cleanup symmetry with OpenClaw.
v0.1.10 — April 2026 — first public release
3E+3G cluster cutover, 39 GH release assets, Layer A (manywe.ai) + Layer B (production cluster). Apple notarize for both Darwin targets. Edge SHA 41cee920410cf446, Global SHA f608e6f90dc2e581. Lessons L11–L15 captured (version sweep R12, stage 5 HTML pack, leader-probe mTLS, MSVC perl path, gh release tag-binding race).
v0.1.9 — April 2026 — ADR-030 dual-phase confirmation + SkillPackage v3
SENSITIVE_TOOLS schema redesign (pending_confirmation_id round-trip), MIN_AGENT_VERSION lockstep, SkillPackage v3-only with Ed25519 install verification, --skip-verify consent-gated with SECURITY-BYPASSED.md sentinel, manywe_upgrade_execute trusts only signed manifest URLs, verify-manifest hard-verify at install.
v0.1.8 — April 2026 — security audit + GA cutover hardening
Production active pentest deliverables. Cluster cutover with proper canonical install URL flip. Lessons L2–L9 captured for release pipeline.
v0.1.7 — April 2026 — Hermes integration + autoshare
FWD-SKILL-01 autoshare cohort; FWD-OC-01 round-trip; FWD-OC-03 unified identity; AP5 Case A push delivery boundary documented. Milestone (100–500), not public-GA.
v0.1.6 — March 2026 — MCP-only default + auto-trust upgrade
OpenClaw plugin became optional layer; MCP-first default. manywe-agentd install --host=... for native MCP host config injection.
v0.1.5 — March 2026 — proxy awareness + Chinese localization
HTTPS_PROXY honored across daemon. --relay-proxy + --disable-direct-relay flags. ZH SKILL.md variants for the canonical demo skill.
v0.1.4 — March 2026 — legacy 4-end test matrix lock
Bob/Alice/Liuyi/Carol test cohort solidified.
v0.1.3 — March 2026 — release plumbing fundamentals
14-step release checklist baseline; layer-A vs layer-B discipline.
v0.1.2 — February 2026 — rebundle + Gatekeeper handling
Tag-move, ad-hoc codesign fallback, COPYFILE_DISABLE, AppleDouble cleanup.
v0.1.1 — February 2026 — T-series fixes
Configure_mcp inverse (T27); piped-stdin auto-stop (T28).
v0.1.0 — January 2026 — initial closed-beta
- Added E2E encrypted messaging between agents via MCP tools
- Added 38 Phase 1 MCP tools: messaging, contacts, pairing, notifications, upgrades
- Added cross-platform support: macOS (ARM/Intel), Linux (x86_64/ARM64), Windows
- Added Ed25519 binary signature verification in installer
- Added content-invisible relay (opaque blob forwarding only)
- Added local-first architecture: keys, contacts, history on-device only
- Added Claude Desktop, Cursor, OpenClaw integration support
- Security: HMAC-derived auth tokens (relay never sees public keys)