Files
waggle-os/docs/analysis/cowagent-vs-waggle-2026-07-09.md
Oleg Maslov 0c3e2ead3b
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled
moving
2026-09-02 10:10:29 +02:00

139 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CowAgent vs Waggle OS — Competitive Teardown & Steal List
**Date:** 2026-07-09 · **Method:** 4 parallel Opus deep-read agents over a fresh clone of
[`zhayujie/CowAgent`](https://github.com/zhayujie/CowAgent) (commit 2026-07-08) + comparison against this repo.
All CowAgent claims below are code-verified with file:line by the analysts.
---
## 0. What CowAgent is
**CowAgent = `chatgpt-on-wechat` rebranded in place.** Same repo (created Aug 2022), so its "super AI
assistant" pivot launched with **45.9k stars / 10.3k forks** already attached; last push was yesterday,
release cadence ~2-3 weeks (v2.0.0 Feb → v2.1.3 Jul 2026). Python monolith (~73k LOC / 292 files), MIT.
Commercial parent: **LinkAI** (link-ai.tech) — the open-core-funnel structure is *identical* to
Waggle→KVARK: OSS demand-gen → hosted cloud + enterprise (workspaces/RBAC/audit all cloud-only, none in OSS).
Feature surface is a near-mirror of Waggle: 3-tier memory + nightly distillation, hybrid keyword+vector
retrieval, markdown knowledge wiki + graph, self-evolution, skill hub with one-click install, MCP,
multi-model routing, Electron desktop + web console + CLI, 13 IM/chat channels.
---
## 1. Head-to-head verdict
| Axis | Winner | Evidence |
|---|---|---|
| **Memory substrate** | **Waggle, decisively** | CowAgent: brute-force O(N) vector scan (no ANN/sqlite-vec), no reranker, naive 0.7/0.3 linear fusion on mismatched score scales, LLM-prompt-only dedup/contradiction handling, nightly **lossy whole-file rewrite** of MEMORY.md with zero provenance, no GDPR erasure, no identity/awareness layers, no entity extraction (its "knowledge graph" is just markdown links), **zero benchmarks**. Waggle: sqlite-vec + cross-encoder reranker, FrameStore provenance, sticky erasure, LoCoMo 86.49% SOTA. |
| **Security** | **Waggle, decisively** | CowAgent has **no prompt-injection defense at all**, no trust model, no permission tiers, no cost tracker; SSRF guard is opt-in and OFF by default; bash tool has only a minimal catastrophic-command blocklist; web console is single-user shared-password. Waggle: injection-scanner (mandated), trust-model, permissions, Tauri IPC allowlist, vault, cost-tracker. |
| **Multi-agent / personas** | **Waggle** | CowAgent is explicitly single-agent, one AGENT.md, no persona layer, no orchestration. Waggle: 22 personas, subagent-orchestrator, coordinator, workflow-composer, WaggleDance. |
| **Engineering rigor** | **Waggle** | CowAgent grade **C+/B**: only 9 of 217 tests gated in CI, no lint/typecheck/coverage gates, ~41% typing, 5,028-line god file (`web_channel.py`), unpinned heavy deps. Waggle: ~8k gated Vitest tests, Playwright E2E, strict tsc, CI gates, production signoff. |
| **Team / governance / billing** | **Waggle** | CowAgent OSS has none (all punted to LinkAI cloud). Waggle has tiers+Stripe+governance in-product. |
| **Distribution & reach** | **CowAgent, decisively** | 13 channels incl. the entire WeChat/WeCom/QQ ecosystem + Telegram/Slack/Discord (Waggle: **0** IM channels). One-line `curl \| bash` installer with China-network resilience (Gitee/pip-mirror fallbacks) and zero-key boot. 45.9k-star inherited brand, trending, 4-language docs (246 .mdx — best-in-class). |
| **Online self-evolution** | **CowAgent** | Runtime, conversation-driven evolution loop (see steal #1). Waggle's evolution is offline/eval-gated only. |
| **Docs** | **CowAgent** | 246 .mdx, trilingual, per-channel guides. Genuinely excellent. |
**Net:** CowAgent out-distributes us (channels, installer, brand gravity, docs) but is a shallower,
single-user, security-weak product with a hobbyist-grade memory engine and no proof. Waggle's moat
(benchmarked substrate, security, teams, rigor) is real. The asymmetric move: **graft their funnel
mechanics onto our core** — their moat (WeChat ecosystem + 45k stars) is the only thing we can't copy.
---
## 2. Steal list (consolidated, ranked by value/effort)
### Tier 1 — high value, low-to-medium effort
1. **"Dream Diary" — user-facing nightly consolidation narrative.** Their Deep Dream distillation
(`agent/memory/summarizer.py:414`, prompt :55-141, diary write :585) emits a second `[DREAM]` section: a
short narrative of what was merged/conflicted/cleaned, saved to `memory/dreams/YYYY-MM-DD.md` and surfaced
in a Self-Evolution UI tab. Waggle already *does* the substance (reconcile, contradiction-detector,
dedup) but shows the user nothing. One extra LLM output section + one UI surface = observability,
delight, and a retention mechanic. **Cheapest high-impact steal.**
2. **Anti-nag file-change gate + "fix the source, not the symptom."** Their evolution reviewer may only
notify the user if a watched file *actually changed* (mtime/size snapshot diff, `evolution/executor.py:459`);
the prompt forbids logging a symptom to memory when the root cause is an editable skill
(`evolution/prompts.py:63-68`). Portable discipline for our evolution + memory writes.
3. **Online idle-triggered self-evolution.** Daemon scans sessions every 60s; fires on idle ≥ N sec AND
(enough turns OR context >80% of budget) (`evolution/trigger.py:38-53`). Spawns an isolated reviewer
agent with a restricted toolset and workspace-confinement guards (`executor.py:117-228, 409-444`),
default-`[SILENT]`, with backup_id + `evolution_undo`. It patches skills, **completes promised-but-unfinished
deliverables**, and rarely writes memory. Waggle has all the pieces (subagent-orchestrator,
evolution-orchestrator, cron-store) but no runtime conversation-driven loop. **Highest strategic value.**
4. **IM channels as distribution surface.** Their `channel_factory.py` + `ChatChannel` base +
per-platform `*_message.py` normalization is a clean ~2-file-per-platform adapter pattern. Waggle has
zero IM reach; "your Waggle workspace agent, live in Slack/Telegram/Discord" is a reach multiplier and
fits the Teams tier perfectly (Slack first — it's the Teams buyer's habitat). Port the pattern over the
Fastify sidecar; skip the China stack.
5. **One-line installer + interactive setup wizard.** `run.sh` (1,362 lines): dep detection → clone with
mirror fallback → venv/pip with proxy handling → interactive model+channel wizard writing config →
start → CLI handoff. Zero-key boot (config works before any API key; keys added in UI). Waggle has no
`curl | bash` self-host story for the sidecar.
### Tier 2 — solid, medium effort
6. **Embedding-based on-demand MCP tool retrieval.** Above a threshold (20), tool descriptions are
embedded and only top-k relevant tools are injected per turn, union-only within a run so schemas never
vanish mid-run (`tool_manager.py:606-676`). Direct upgrade path for our MCP + tool-filter as catalogs grow.
7. **MCP hot-reload.** `(mtime, sha256)` signature diff on mcp.json → add/remove/restart only changed
servers, no process restart (`tool_manager.py:378-439`). Plus background async MCP boot so the agent
serves traffic while `npx`/`uvx` servers start.
8. **Hard-capped always-injected core digest.** `MEMORY.md` ≤50 items / 200 lines / 25KB, LLM-maintained
dense, always in prompt, with "spillover → memory_search" pointer (`workspace.py:110,186`). A clean
token-budget pattern to layer on top of recallMemory/IdentityLayer.
9. **Tiered consecutive-failure loop breaker.** 5 identical-arg calls → stop; 3 identical-arg failures →
stop; 6 same-tool diff-arg failures → stop; 8 same-tool failures → hard abort with user-facing give-up
copy (`agent_stream.py:269-330`). More granular than our boolean loop-guard.
10. **Per-capability model routing UI.** Chat/vision/image-gen/ASR/TTS/embedding each routed to a
different vendor with one click in the web console. We have LiteLLM underneath; we lack the picker UX.
11. **Multi-source skill install grammar + SKILL.md interop.** One resolver accepts Hub name,
`owner/repo`, git URL/SSH, local path, direct SKILL.md URL, zip/tar URL, `clawhub:`/`github:` prefixes —
with SHA-256 checksums and zip-slip guards (`cli/commands/skill.py`). They use Anthropic's SKILL.md
frontmatter convention, making skills cross-tool with Claude Code/OpenClaw — a marketplace-liquidity
play our marketplace should join.
### Tier 3 — nice-to-have / situational
12. **`context_summary_callback` dual-use** — one summarization LLM call both persists trimmed turns to
daily memory and re-injects the summary into live context (`summarizer.py:352`). Saves a call in compaction.
13. **Scheduler/cron-pair stripping before long-term memory flush** (`summarizer.py:770`) — keeps
automated noise out of long-term memory; directly relevant to WaggleDance signals.
14. **Retrieval-time temporal decay** — exp half-life 30d multiplier at fusion time (`manager.py:472`).
~~Complementary to our write-time dating; trivial add.~~ **ALREADY SHIPPED (verified 2026-07-11
Tier 3 recon): `packages/hive-mind-core/src/mind/scoring.ts:52-63` has exact 30d-half-life
exponential decay, write-time anchored, default ON via 'balanced' profile. Do not re-recon.**
15. **Skill auto-enable by requirement satisfaction** — skills gate on `requires.env/bins` presence and
surface "setup needed" hints (`agent/skills/config.py`). Nice marketplace UX.
16. **Trigram FTS5 cascade for CJK keyword search** (`storage.py:952`) — only if we target non-Latin markets.
17. **Scheduler as agent tool with `ai_task` mode** — cron/interval/once tasks that re-invoke the agent
and push results to the originating channel (`scheduler_tool.py`). We have cron-store; theirs is a
cleaner agent-facing proactivity surface.
### Explicitly NOT worth stealing
- Their retrieval engine (we're strictly better), their knowledge graph (link-parsing only), their
security model (worse on every axis), Electron+PyInstaller packaging (Tauri is superior), voice-provider
breadth (18 ASR/TTS vendors — off-positioning for us).
---
## 3. Strategic read
1. **They validated our exact business model** — MIT OSS assistant → cloud/enterprise funnel (LinkAI ≈ KVARK).
They're running it with a 45.9k-star head start and daily commits. This raises urgency on our OSS
launch (hive-mind sits at 0 stars) — the SOTA-gated launch strategy now has a fast-moving reference competitor.
2. **Their moat is distribution, not tech.** WeChat-ecosystem channels + inherited brand + one-line
install. Nothing in their core survives contact with our substrate on quality, but none of our quality
is *visible* the way "works in your WeChat/Slack in 2 minutes" is.
3. **Differentiation story writes itself:** benchmarked memory (86.49 LoCoMo vs their zero evidence),
security (injection scanning vs none), teams/governance in-product (vs cloud-only), test rigor
(8k gated tests vs 9). Useful ammunition for waggle-os.ai comparison copy.
4. **Their one genuine capability lead** — runtime self-evolution that finishes unfinished tasks and
patches its own skills from live conversations — is buildable on infrastructure we already have, and
would neutralize their best demo.
## 4. Source reports
Full per-domain analyst reports (memory/knowledge, agent core, distribution, code quality) were produced
2026-07-09; key findings are consolidated above. Clone analyzed at commit `2026-07-08 fix(desktop):
support web_password auth`.