moving
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled

This commit is contained in:
Oleg Maslov
2026-09-02 10:10:29 +02:00
commit 0c3e2ead3b
3841 changed files with 970576 additions and 0 deletions

View File

@@ -0,0 +1,271 @@
# Waggle OS -- Founder Review v2 (With Full Strategic Context)
**Date:** April 2026
**Reviewer:** Automated deep analysis with full Egzakta strategic context
**Context:** Strategy doc v1.3, Universal Memory Harvest spec v1.0, EvolveSchema paper, KVARK repo, plus complete codebase audit
---
## Previous Review Was Wrong
The v1 Founder Review scored Waggle OS at **PMF 2/10** and flagged "zero revenue" as the critical issue. **That assessment was based on evaluating Waggle as a standalone product. It isn't one.**
With the full Egzakta strategy document, the picture inverts:
| v1 Assessment | v2 Assessment (with context) |
|---------------|------------------------------|
| "Zero revenue is a crisis" | Zero revenue is the design. Waggle is a demand-gen engine for KVARK. |
| "22 personas for zero users = over-engineering" | 22 personas create stickiness across every department. More personas = more KVARK lead surface area. |
| "No analytics = blind" | Fair criticism. You do need analytics. But the metric isn't Waggle MRR -- it's KVARK pipeline generated. |
| "PMF 2/10" | **Revised: PMF 5/10** for the system (Waggle + KVARK + LM TEK). KVARK already has 3 contracted clients at EUR 1.2M. |
---
## What Waggle Actually Is
Waggle is **not a ChatGPT competitor**. Waggle is a **memory harvester and enterprise funnel**.
The strategic logic chain:
```
1. User AI context is trapped in silos (ChatGPT, Claude, Cursor, etc.)
|
2. Waggle harvests ALL AI memory for FREE (20+ platforms, 7+ IDE tools, 5+ agents)
|
3. Deep memory makes small models match frontier quality (GAPA+BPMN → 96.7% of Opus)
|
4. User becomes dependent on unified memory ("switching back means losing everything")
|
5. Enterprise discovers employees already use Waggle
|
6. KVARK deal: sovereign deployment, on-prem, LM TEK hardware
|
7. EUR 400K-1.2M per enterprise contract
```
**This is not a consumer AI play. This is an enterprise sales funnel disguised as a free productivity tool.**
---
## Revised Scoring
### Strategic Fitness (0-10 each)
| Dimension | Score | Rationale |
|-----------|:-----:|-----------|
| **Strategic coherence** | 9/10 | The flywheel (Waggle → memory lock-in → KVARK → LM TEK) is one of the most sophisticated enterprise AI strategies I've seen. Each layer feeds the next. |
| **Technical moat** | 8/10 | 5-layer memory system + Universal Memory Harvest + EvolveSchema prompt optimization. The compound moat is real and hard to replicate. |
| **Revenue validation** | 7/10 | EUR 1.2M contracted across 3 KVARK clients. Not vapor. But Waggle itself has zero paying users, and the funnel hasn't been tested (no user has gone Waggle → KVARK yet). |
| **Market timing** | 9/10 | Regulated CEE/SEE markets legally cannot use US cloud AI. Sovereign deployment is a regulatory requirement, not a feature. NVIDIA actively seeks sovereign partners in every region. |
| **Execution risk** | 5/10 | 2-3 FTE on Waggle, 10 AI engineers total. The vision is massive. Waggle alone has 80+ tools, 52 routes, 22 personas -- maintained by a tiny team. Memory Harvest (20+ parsers) is a huge engineering surface. |
| **Competitive window** | 6/10 | 12-18 months before cloud giants ship "good enough" memory. But sovereign requirements in regulated markets buy more time -- Claude.ai can't deploy on-prem. |
| **Funnel readiness** | 3/10 | The Waggle → KVARK funnel has never been tested with a real user. The hypothesis is strong but unvalidated. |
**Overall: 6.7/10** (up from 2/10 with standalone lens)
---
## Crown Jewels -- Revisited
### Crown Jewel #1: Universal Memory Harvest (THE strategic weapon)
This is the feature that changes everything. The Memory Harvest spec describes:
- **20+ web platform parsers** (ChatGPT, Claude, Gemini, Perplexity, DeepSeek, Qwen, etc.)
- **7+ IDE/code tool watchers** (Cursor, Copilot, Windsurf, Continue)
- **5+ CLI agent bridges** (Claude Code, OpenClaw, Hermes, Codex, Aider)
- **4-pass distillation pipeline**: Classification → Entity Extraction → Frame Synthesis → Dedup
- **Bidirectional sync**: Export frames TO agents before sessions, harvest results AFTER
- **KVARK-ready format**: Zero additional ETL for enterprise migration
A user with 5 platforms and 2,000+ conversations gets distilled to 50-100 high-quality Waggle frames. This is the lock-in mechanism.
**Current status: SPEC ONLY. Not built yet.** This is the single most important feature to build.
### Crown Jewel #2: GAPA + EvolveSchema (Cost Arbitrage)
The EvolveSchema paper (Mikhail's work) demonstrates that **schema structure optimization > instruction optimization**:
- +2.3 pp on SGD Hotels, +2.2 pp on HotPotQA, +1.1 pp on FIRE NER, +4.0 pp on IFBench
- A single structural mutation captures 74% of total gain on HotPotQA
- Composition pipeline (EvolveSchema → GEPA) reaches 0.925 on FIRE NER
**Strategic implication:** Small sovereign models (Qwen 3.5 27B) + EvolveSchema + deep Waggle memory = frontier-quality output at 1/30th cost. This is the core value proposition for KVARK.
Early testing: Haiku + GAPA scored 4.45/5 vs Opus 4.60/5 (96.7% quality) with 24 specialized agents.
**Current status: Research proven, not yet integrated into Waggle/KVARK production.**
### Crown Jewel #3: Five-Layer Memory (Already Built)
As documented in v1 review -- FrameStore + HybridSearch + KnowledgeGraph + IdentityLayer + AwarenessLayer. This is the container that the Memory Harvest fills. **Already built and working.**
### Crown Jewel #4: Sovereign Regulatory Moat
This isn't a technical feature -- it's a market structure advantage:
- CEE/SEE banking, utilities, government **legally cannot** use US cloud AI
- GDPR makes Memory Harvest legally robust (right to data export)
- LM TEK hardware + KVARK software = fully sovereign stack
- NVIDIA actively seeks sovereign partners in every region
**No competitor can replicate this without the regulatory relationships, local presence, and hardware partnerships.**
---
## What's Actually Working vs What's Not
### Working (Ship-Ready)
| Component | Status | Evidence |
|-----------|--------|----------|
| Waggle memory system | Built | 5-layer architecture, 2,000+ tests, 0 TS errors |
| Waggle agent engine | Built | 80+ tools, 22 personas, multi-agent orchestration |
| Waggle desktop app | Built | Tauri 2.0, OS metaphor, onboarding, chat |
| KVARK platform | Production | 3 contracted clients, EUR 1.2M |
| LM TEK hardware | Production | EK Fluid Works brand, Boston Limited channel |
| EvolveSchema research | Proven | Paper with 4 benchmark results |
| GAPA framework | Proven | 96.7% of frontier quality with Haiku |
### Not Working (Critical Gaps)
| Component | Status | Impact |
|-----------|--------|--------|
| **Memory Harvest** | Spec only | This is THE feature. Without it, Waggle is just another AI chat app. |
| **Stripe billing** | 80% built | Can't charge for Basic/Teams tiers |
| **Waggle → KVARK funnel** | Untested | The entire strategy depends on this conversion working |
| **Analytics** | Zero | No Posthog/Amplitude. Don't know if anyone uses Waggle |
| **EvolveSchema integration** | Not started | Research proven but not in Waggle/KVARK production |
| **Bidirectional agent sync** | Spec only | The CLAUDE.md export → Claude Code import path |
---
## Feature Prioritization (ICE Scoring) -- Revised
With strategic context, priorities shift dramatically:
| # | Feature | Impact | Confidence | Effort | ICE | Rationale |
|---|---------|:------:|:----------:|:------:|:---:|-----------|
| 1 | **Memory Harvest MVP** (ChatGPT + Claude parsers) | 5 | 5 | 2 | 0.40 | Without this, the strategy doesn't work. Start with 2 biggest platforms. |
| 2 | **Finish Stripe billing** | 4 | 5 | 4 | 0.64 | Teams tier creates the "employees already use it" signal for KVARK |
| 3 | **Add analytics** (Posthog) | 3 | 5 | 5 | 0.60 | Must measure: imports completed, sessions/week, workspace count, KVARK nudge clicks |
| 4 | **Claude Code CLAUDE.md export** | 4 | 4 | 4 | 0.51 | Bidirectional sync with the tool developers already use |
| 5 | **KVARK Nudge optimization** | 5 | 3 | 4 | 0.48 | The funnel conversion point. "Your team already uses Waggle → talk to us about KVARK" |
| 6 | **Skip boot for returning users** | 2 | 5 | 5 | 0.40 | Quick UX fix, retention impact |
| 7 | **EvolveSchema → KVARK integration** | 5 | 4 | 1 | 0.16 | High impact but significant engineering effort |
| 8 | **CLI agent watchers** (Claude Code, Cursor) | 4 | 4 | 2 | 0.26 | Continuous memory harvest from dev tools |
| 9 | **Expand MCP connectors to 50+** | 3 | 3 | 2 | 0.14 | Important but less urgent than Memory Harvest |
| 10 | **Open-source @waggle/core** | 4 | 3 | 3 | 0.29 | Distribution + community. Lower priority now that KVARK pipeline is the goal. |
| 11 | **Web app version** | 3 | 4 | 1 | 0.10 | Desktop-only limits reach but sovereign = on-prem anyway |
| 12 | **Fix accessibility** | 2 | 5 | 3 | 0.24 | Important for enterprise compliance |
| 13 | **Reduce Teams pricing** | 2 | 3 | 5 | 0.24 | May not matter if Teams is just funnel |
| 14 | **Self-improving memory** | 3 | 3 | 2 | 0.14 | Nice but not urgent |
| 15 | **Visual workflow builder** | 2 | 2 | 1 | 0.03 | Future feature, not priority |
### Priority Stack (sorted by strategic impact, not ICE)
**P0 -- Build the Funnel (next 60 days)**
1. Memory Harvest MVP (ChatGPT + Claude parsers + distillation pipeline)
2. Finish Stripe (process a real payment)
3. Add Posthog analytics
**P1 -- Prove the Conversion (days 60-120)**
4. KVARK Nudge optimization (measure click-through, conversion)
5. Claude Code bidirectional sync (CLAUDE.md export/import)
6. First Waggle → KVARK conversion attempt with an existing client
**P2 -- Scale (days 120-180)**
7. Expand Memory Harvest to 10+ platforms
8. EvolveSchema integration into KVARK inference
9. CLI agent watchers for continuous harvest
---
## The EvolveSchema Innovation -- Strategic Significance
The PDF is a research paper on **evolutionary optimization of DSPy output schemas**. Key findings:
1. **Schema structure matters more than instructions**: On HotPotQA, a single structural mutation captures 74% of the total improvement
2. **Composition pipeline** (EvolveSchema → GEPA): +8.1 pp on FIRE NER, +11.9 pp on SGD Hotels
3. **Cross-model insight convergence**: The same task-level discoveries emerge regardless of student model, but scaffolding complexity adapts to model capability
4. **Cost**: $3-7 per optimization run
**For KVARK, this means:**
- Enterprise customers running Qwen 3.5 27B (sovereign, on LM TEK hardware) get automatically optimized prompts
- Small models with EvolveSchema + deep Waggle memory → frontier-comparable quality
- The cost arbitrage (cloud AI bills → one-time CapEx) becomes credible when quality parity is proven
- This is a **continuous improvement loop**: as more tasks are processed, more schemas are evolved, quality improves
**Integration point with Waggle:** Waggle's GEPA system (already built, tested at 96.7%) is the first stage. EvolveSchema adds the schema optimization layer. Together they form the GAPA+BPMN pipeline referenced in the strategy doc.
---
## Go/No-Go Assessment -- Revised
### If I Were a YC Partner
**v1 verdict:** "Impressive tech, no users, no revenue. Come back with 50 users."
**v2 verdict (with strategic context):** "This is not a consumer startup. This is an enterprise platform play with EUR 1.2M contracted and a genuinely clever demand-gen strategy. The question isn't 'does Waggle have users?' -- it's 'does the Waggle → KVARK funnel convert?'"
**The honest assessment:**
**Bull case (7/10 probability):** Memory Harvest ships, creates genuine lock-in, 2-3 existing KVARK clients adopt Waggle as the frontend, enterprise sales team uses "your employees already use Waggle" as a door opener. EUR 3-5M KVARK pipeline by end of 2026. The sovereign regulatory moat in CEE/SEE is real and durable.
**Bear case (3/10 probability):** Memory Harvest is harder than expected (20+ parsers is a lot of surface area), Cloud giants ship "good enough" memory before the funnel is proven, KVARK clients don't see value in Waggle integration. Waggle stays a technically impressive but unused product.
**Key de-risking question:** Has ANY user gone through the Waggle → "wow this remembers everything" → "I want this for my team" → KVARK conversation flow? If not, that's the #1 thing to test. A single conversion proves the thesis.
---
## Revised 90-Day Plan
### Month 1: Build the Hook (Memory Harvest MVP)
**Week 1-2:**
- Build ChatGPT parser (they have the most users, biggest import)
- Build Claude parser (developers, your target persona)
- Build distillation pipeline (4-pass: classify → extract → synthesize → dedup)
- Add Posthog analytics (track: imports started, imports completed, frames created, sessions/week)
**Week 3-4:**
- Finish Stripe (process a test payment, activate tier gating)
- Skip-boot for returning users
- Test Memory Harvest with 5 internal Egzakta employees (your 100 developers use AI daily -- harvest their memories)
### Month 2: Prove the Funnel
**Week 5-6:**
- Pitch Waggle to 1-2 existing KVARK clients as "your employees already use AI -- let us show you what they know"
- Measure: How many employees install Waggle? How many import memories? How many reach 50+ frames?
- KVARK Nudge A/B testing (when/how to surface the enterprise pitch)
**Week 7-8:**
- Claude Code bidirectional sync (CLAUDE.md export → Waggle import → Waggle export → CLAUDE.md)
- Cursor/Windsurf watchers (continuous harvest from dev tools)
- Expand to 5 platform parsers (add Gemini, Perplexity, DeepSeek)
### Month 3: Scale or Pivot
**Week 9-10:**
- If funnel works: Expand Memory Harvest to 10+ platforms, hire 1-2 more engineers
- If funnel doesn't work: Analyze where it breaks (no installs? no imports? no "wow" moment? no enterprise interest?) and fix the specific bottleneck
**Week 11-12:**
- EvolveSchema integration planning (which KVARK workflows benefit most?)
- First enterprise demo: "Here's what your organization knows" (aggregated Waggle frames in KVARK)
- Prepare for EUR 10M EBITDA target: pipeline review, which deals close by Q4?
---
## Bottom Line -- Revised
**Waggle OS is the sharpest part of a well-designed enterprise AI strategy.** It's not a standalone product competing with ChatGPT -- it's a memory harvester and demand-generation engine for a EUR 1.2M+ sovereign AI platform (KVARK) backed by proprietary hardware (LM TEK) and prompt optimization research (EvolveSchema).
The technical execution is world-class (5-layer memory, 80+ tools, 2,000+ tests). The strategic coherence is exceptional (memory lock-in → enterprise conversion → sovereign deployment → hardware economics). The research foundation is strong (EvolveSchema: structure > instructions, GAPA: 96.7% of frontier with Haiku).
**The single biggest risk is that the Waggle → KVARK funnel has never been tested.** The entire strategy rests on this conversion working. Until a real user goes through Waggle memory import → "I can't go back" → enterprise inquiry → KVARK deal, the thesis is elegant but unproven.
**The single highest-leverage action is to build Memory Harvest and test the funnel with one real enterprise.** Everything else is optimization.
---
*This review supersedes FOUNDER-REVIEW.md (v1). Key context additions: Egzakta AI Strategy v1.3, Universal Memory Harvest Spec v1.0, EvolveSchema paper, KVARK GitHub repo (private, Python/TypeScript, production), and EUR 1.2M contracted KVARK revenue.*

View File

@@ -0,0 +1,301 @@
# Waggle OS -- Founder Review (Product Lens)
**Date:** April 2026
**Reviewer:** Automated Product Lens (Opus 4.6, founder/VC perspective)
**Inputs:** 6 analysis documents, full codebase audit, competitive intelligence on 15 products
---
## 1. What Is This Actually Trying To Be?
Strip away the marketing copy. Here is the real thesis:
**Waggle OS is betting that "memory" is the next platform layer for AI -- and that whoever builds the deepest, most structured memory system for knowledge workers will own the workspace AI market before the cloud giants figure it out.**
The product is a desktop-native AI workspace (Tauri, not Electron) with a 5-layer persistent memory system (FrameStore + HybridSearch + KnowledgeGraph + IdentityLayer + AwarenessLayer), 22 behavioral personas with enforced tool boundaries, multi-agent orchestration, and a KVARK enterprise upsell funnel for Egzakta Group's sovereign AI platform.
The strategic logic: Solo (free) teaches individuals what memory-first AI feels like. Basic ($15/mo) creates habit. Teams ($79/seat) creates institutional dependency. Enterprise triggers a KVARK consultative sale. This is a land-and-expand funnel where memory lock-in is the retention mechanism.
**The honest version of the pitch:** "ChatGPT forgets everything. Claude.ai forgets almost everything. We built the AI workspace that actually remembers -- your projects, your preferences, your decisions, your world -- and gets smarter the longer you use it. And your data never leaves your machine."
This is a genuinely differentiated thesis. The question is whether it's differentiated enough to survive the next 12 months of Claude.ai and ChatGPT iterating on memory.
---
## 2. Product-Market Fit Signals
### Usage Growth Trajectory: 1/10
There is no evidence of real users anywhere in this codebase. Specifics:
- The landing page (`apps/www/`) has a **beta signup that opens a mailto: link** to `marko@egzakta.rs`. Not a form. Not a database. A mailto link.
- Download links point to `https://github.com/marolinik/waggle/releases/latest` -- a GitHub releases page. No download tracking, no install analytics, no activation funnel.
- Telemetry is **local-only and off by default**. The `TelemetryStore` in `packages/core/src/telemetry.ts` stores events in a local SQLite file. There is no cloud reporting. You have zero visibility into how many people have downloaded, installed, opened, or used this product.
- No Mixpanel, Posthog, Amplitude, Segment, or any third-party analytics integration exists.
- No waitlist count, no beta user count, no testimonials, no case studies.
- The GitHub repo (`marolinik/waggle-os`) -- there is no evidence of external contributors or community activity.
**Score: 1/10.** The product may have users, but the founder has built zero infrastructure to know. This is flying blind.
### Retention Indicators: 2/10
The product has strong *theoretical* retention mechanics:
- Memory compounds over time (auto-save from every exchange)
- Workspace briefings greet returning users with remembered context
- Session history persists across restarts
- Login briefing summarizes cross-workspace state
But there is zero data on whether anyone actually returns. No cohort analysis, no session frequency tracking (that reports externally), no churn metrics. The local telemetry tracks `session_start` events, but nobody is looking at them because telemetry is off by default and local-only.
The 4.8-second boot screen with no skip for returning users is an active retention killer. Every returning user gets punished with a mandatory wait. This is a basic UX failure that suggests the product has not been tested with real returning users.
**Score: 2/10.** Retention mechanics exist in the architecture but are completely unmeasured.
### Revenue Signals: 3/10
The Stripe integration is more complete than the synthesis document suggested:
- `packages/server/src/stripe/checkout.ts` -- creates Stripe Checkout sessions
- `packages/server/src/stripe/webhook.ts` -- handles `checkout.session.completed`, `subscription.updated`, and `subscription.deleted`
- `packages/server/src/stripe/portal.ts` -- customer portal redirect
- Webhook tests exist (`packages/server/tests/stripe/webhook.test.ts`)
However:
- Success URLs point to `waggle://payment-success` (Tauri deep link). The web app cannot process payments.
- Price IDs come from environment variables (`STRIPE_PRICE_BASIC`, `STRIPE_PRICE_TEAMS`). These need to be created in Stripe Dashboard and configured.
- There is no evidence that Stripe is configured in any deployment. No `.env` with real Stripe keys (correctly -- they shouldn't be committed), but also no deployment docs or CI/CD that provisions them.
- The landing page pricing section has a `stripeCheckout: false` for the Solo tier and presumably true for paid tiers, but the download flow sends users to a GitHub releases page, not a billing flow.
- No revenue dashboard, no MRR tracking, no billing admin panel.
**Score: 3/10.** The plumbing exists but has never processed a real transaction. Revenue is $0.
### Competitive Moat: 7/10
This is where Waggle genuinely shines. The 5-layer memory system is real, built, tested (2,000+ tests), and architecturally sophisticated:
- **I/P/B frame model** with video-compression-inspired state reconstruction -- novel application, no competitor does this.
- **Dual-mind architecture** (personal + workspace) with automatic routing -- solves a real scoping problem.
- **autoSaveFromExchange** with 30+ calibrated regex patterns for passive memory accumulation -- the agent genuinely learns without explicit user action.
- **HybridSearch with Reciprocal Rank Fusion** -- combining keyword, vector, and graph signals with 4 scoring profiles.
- **Knowledge graph with entity extraction and co-occurrence relations** -- builds structured understanding, not just fact lists.
The compound moat is real: no single component is unreproducible, but the integration of all 5 layers into a coherent memory-first agent platform would take a well-funded team 6-12 months to replicate. The I/P/B frame model and dual-mind architecture are genuinely innovative design choices.
**But:** Claude.ai shipped "Long-term Project Memory" in 2026. ChatGPT has "Chat History Insights." Anthropic and OpenAI are moving in this direction. Their implementations are shallow compared to Waggle's, but they have 100M+ users and Waggle has approximately zero. Distribution beats architecture when the incumbent starts closing the gap.
**Score: 7/10.** The moat is real but time-limited. The window is 12-18 months before cloud giants build "good enough" memory.
### Time-to-Value: 4/10
- **Boot screen:** 4.8 seconds mandatory wait. No skip.
- **Onboarding wizard:** 8 steps. Best case (skip everything): ~5 seconds. Typical: 2-3 minutes. Worst case: 5+ minutes.
- **API key requirement:** Step 6 requires an LLM API key. Most non-technical users will hit a wall here. They don't have an OpenAI or Anthropic API key and don't know how to get one.
- **First agent response:** After providing an API key, the user gets a workspace briefing with suggested prompts. Clicking one triggers an agent response. This is the first value moment -- approximately 3-5 minutes from launch.
- **First memory moment:** The user would need to have a conversation, return later, and see the workspace briefing remember their context. This takes a minimum of 2 sessions -- possibly hours or days.
The fundamental time-to-value problem: **Waggle's core value proposition (persistent memory) is invisible until the second session.** The first session feels like a slightly fancier ChatGPT in a desktop window. The magic happens on return visit 2, 3, 10 -- but the user has to survive the API key wall, the boot screen, and the initial "why is this different?" question first.
**Score: 4/10.** The first session doesn't communicate the core value. Memory needs time to compound.
### Overall PMF Score: 2/10
The product is impressive engineering with zero market validation. There are no users, no revenue, no distribution, no community, and no way to measure any of it. The technical moat is real but worthless if nobody uses the product.
**PMF does not exist yet.** What exists is a hypothesis backed by exceptional execution.
---
## 3. The One Thing That Would 10x This
**Open-source the core memory system as a standalone npm package.**
Here is the logic:
1. **The memory system is Waggle's best code.** The I/P/B frame model, HybridSearch, KnowledgeGraph, IdentityLayer, and AwarenessLayer are genuinely innovative and well-built. They work independently of the Waggle desktop app.
2. **The AI ecosystem is starving for memory solutions.** Every developer building agents, RAG systems, or AI assistants needs persistent memory. The current options are: build it yourself, use Mem0 (limited), or use Zep (cloud-only). A local-first, SQLite-based, structured memory system with hybrid search would be immediately useful.
3. **Open-sourcing creates distribution.** Waggle has zero GitHub stars, zero community, zero awareness. An open-source memory package with a strong README and examples could attract thousands of developers in months. Those developers become advocates, contributors, and eventually customers.
4. **It does not cannibalize the commercial product.** The memory system is a library. Waggle OS is the full workspace (desktop app + personas + multi-agent + connectors + onboarding). Open-sourcing the engine does not give away the car.
5. **It creates ecosystem lock-in.** If `@waggle/core` becomes the standard memory layer for AI agents, third-party tools built on it become part of Waggle's ecosystem. MCP servers, agent frameworks, and custom tools that use Waggle memory are distribution channels.
This is the same playbook as React (Facebook open-sourced the rendering engine, kept the social network), Prisma (open-sourced the ORM, monetized the cloud), and Supabase (open-sourced the backend, monetized hosting).
**Expected impact:** 5,000+ GitHub stars in 6 months, 500+ weekly npm downloads, developer community that creates organic demand for the full Waggle OS product.
---
## 4. Things Being Built That Don't Matter (At This Stage)
### Overengineered for Zero Users
| Feature | Status | Why It Doesn't Matter Yet |
|---------|--------|--------------------------|
| 22 personas with failure patterns and denylists | BUILT | 4 personas (General, Researcher, Writer, Coder) would cover 90% of early users. The other 18 add complexity without adding users. |
| 15 onboarding templates | BUILT | 3-4 templates (Blank, Research, Code, Business) are enough. More choices slow down onboarding. |
| 28 connectors with OAuth flows | BUILT | Most connectors are unused because there are no users to connect them. Build connectors when users ask for them. |
| KVARK enterprise integration (4 tools) | BUILT | There is no enterprise pipeline. KVARK tools are dead code until there are Teams-tier customers. |
| Waggle Dance multi-agent protocol | BUILT | A communication protocol for agents that nobody is orchestrating. Cool engineering, zero user value today. |
| Team features (team DB, roles, sync) | PARTIAL | There is no team to use team features. This is months premature. |
| Marketplace with FTS5 search and security scanning | BUILT | A marketplace with no packages and no community. Build the community first. |
| Monthly self-assessment and improvement signals | BUILT | Self-improving AI that has no users to improve for. |
| GDPR export with per-workspace scoping | BUILT | GDPR compliance for a product with zero European customers. |
| 6 browser automation tools | BUILT | Niche power-user feature. Not a growth driver. |
| LSP integration (4 tools) | BUILT | Developer feature that competes with Cursor/Claude Code where Waggle cannot win. |
| Voice app placeholder | PLACEHOLDER | A "Coming Soon" that adds nothing. Hide it entirely. |
### What Should Be Cut or Frozen
1. **Freeze persona expansion.** 8 personas max until there are 100+ active users providing feedback on which personas are actually used.
2. **Freeze connector development.** Keep the top 5 (GitHub, Slack, Google Drive, Notion, Email). Add others only on user request with data showing demand.
3. **Remove the marketplace.** Replace with a simple "Install Skills" page with a curated list. There is nothing to browse.
4. **Hide team features.** Until there are paying solo/basic users, team features are wasted UI space.
5. **Remove the Voice app placeholder.** "Coming Soon" is worse than absent.
6. **Freeze KVARK integration.** It is correctly behind a tier gate. Leave it there and don't invest further until there are enterprise prospects.
---
## 5. Feature Prioritization (ICE Scoring)
| # | Feature | Impact (1-5) | Confidence (1-5) | Effort (1-5) | ICE Score | Priority |
|---|---------|:------------:|:-----------------:|:-------------:|:---------:|:--------:|
| 1 | **Ship Stripe billing (end to end)** | 5 | 5 | 4 | **1.00** | P0 |
| 2 | **Skip boot for returning users** | 4 | 5 | 5 | **1.00** | P0 |
| 3 | **Add cloud telemetry (opt-in Posthog/Plankton)** | 5 | 5 | 4 | **1.00** | P0 |
| 4 | **Open-source memory system** | 5 | 4 | 3 | **0.96** | P0 |
| 5 | **Onboarding flow optimization (remove API key wall)** | 5 | 4 | 3 | **0.96** | P0 |
| 6 | **Fix accessibility (contrast, text sizes)** | 4 | 5 | 3 | **0.96** | P1 |
| 7 | **Landing page improvements (real signup form, download tracking)** | 4 | 5 | 4 | **0.80** | P1 |
| 8 | **Web app version (feature-reduced)** | 5 | 3 | 2 | **0.60** | P1 |
| 9 | **Expand MCP connectors (top 10 work tools)** | 4 | 3 | 2 | **0.48** | P1 |
| 10 | **Self-improving memory/skills** | 4 | 3 | 2 | **0.48** | P2 |
| 11 | **Reduce Teams pricing ($49/seat)** | 3 | 3 | 5 | **0.36** | P2 |
| 12 | **Community/open-source presence** | 4 | 3 | 3 | **0.36** | P1 |
| 13 | **Browser extension** | 3 | 3 | 2 | **0.36** | P2 |
| 14 | **Visual workflow builder** | 3 | 2 | 1 | **0.24** | P3 |
| 15 | **Mobile companion** | 3 | 2 | 1 | **0.24** | P3 |
### ICE Calculation Notes
- **Ship Stripe billing** scores maximum because you cannot have revenue without it. The code is 80% there. Finishing it is high-confidence, moderate effort. This is table stakes.
- **Skip boot** scores maximum because it is a 1-hour fix (`localStorage.getItem('waggle_booted')`) with outsized retention impact. A 4.8-second penalty on every return visit is indefensible.
- **Cloud telemetry** scores maximum because you cannot improve what you cannot measure. Flying blind with zero user data is the single biggest operational failure right now.
- **Open-source memory** scores near-maximum because it is the highest-leverage distribution move available, but confidence is slightly lower because open-source community building is unpredictable.
- **Onboarding optimization** scores high because the API key requirement is a hard wall for non-technical users. Offering a free hosted proxy (even rate-limited) or a built-in local model (Ollama auto-detect) would dramatically lower the barrier.
---
## 6. Go/No-Go Assessment (YC Partner Lens)
### What a YC Partner Would Say
"This is one of the most technically impressive pre-launch products I've seen. The memory architecture is genuinely novel -- the I/P/B frame model, dual-mind, and auto-save pipeline are things I haven't seen in any other product. If this were a Series A company with 10K users, I'd be excited about the moat.
But you don't have users. You have a mailto: beta signup. You have a GitHub releases download link with no tracking. You have local-only telemetry that's off by default. You have zero revenue, zero community, and zero evidence that anyone outside your team has used this product.
Here's my concern: you've spent what looks like 6-12 months of intensive engineering building 22 personas, 80+ tools, 28 connectors, a marketplace, team features, KVARK enterprise integration, a landing page, a Tauri desktop app, and a web app. That's Series B scope for a pre-seed stage. You're building the whole car when you should be validating whether anyone wants to drive.
**The memory system is your product.** Everything else is noise until you have users. Ship the memory, make it work, show me 100 people who come back to Waggle 3 times in their first week because the memory made them more productive. Then we'll talk about personas, connectors, and KVARK.
My recommendation: **Apply, but only after you have 50 active weekly users and evidence they retain because of the memory system.** Right now this is a technical demo, not a business.
If I were investing, I'd want to see:
1. Cloud analytics showing DAU/WAU (not local telemetry)
2. A retention curve (does memory lock-in actually work?)
3. Revenue from at least 10 paying Basic customers
4. An open-source launch with measurable community traction
Score: **6/10 on product quality, 2/10 on business readiness, conditional go.**"
---
## 7. Recommended 90-Day Plan
### Days 1-30: Instrument, Ship, and Open
**Priority 1: Instrument Everything**
- Add Posthog (or equivalent) with opt-in consent. Track: install, onboarding completion, first agent response, return visits, session count, persona usage, memory saves, Stripe events.
- The telemetry infrastructure (`TelemetryStore`) already exists. Pipe it to a cloud dashboard.
- Build a simple internal dashboard (can be a Posthog board) that shows DAU, WAU, onboarding funnel, retention by cohort.
**Priority 2: Remove Friction**
- Add `localStorage` skip-boot for returning users (1-hour fix, ship today).
- Auto-detect Ollama on localhost and skip the API key step if found. Add a "Try without API key" option that uses in-process embeddings + a rate-limited demo proxy.
- Reduce onboarding from 8 steps to 5: Welcome -> Template -> Persona -> API Key (optional) -> Ready.
- Replace mailto: beta signup with a real form (even just a Google Form or Typeform is better).
**Priority 3: Finish Stripe**
- Test the full checkout -> webhook -> tier-update flow with Stripe test mode.
- Create the actual Stripe products and prices.
- Add a billing page to Settings showing current tier, usage, and upgrade/downgrade options.
- Wire the web app to also support Stripe (not just `waggle://` deep links).
**Priority 4: Open-Source @waggle/core**
- Extract `packages/core/` as a standalone npm package.
- Write a standalone README with: install, create a mind, save a memory, search, query knowledge graph.
- Publish to npm as `@waggle/mind` (or similar memorable name).
- Create a GitHub repo with examples, benchmarks, and comparison to alternatives.
- Write a launch post for Hacker News, r/LocalLLaMA, and AI engineering communities.
### Days 31-60: Get 50 Real Users
**Priority 5: Distribution Blitz**
- Post the open-source memory package on Hacker News, Product Hunt, and Reddit.
- Write 2-3 technical blog posts: "How we built a 5-layer memory system for AI agents," "Why AI assistants forget everything (and what we did about it)," "Local-first AI memory with SQLite."
- Create a Discord or community channel.
- Reach out to 20 AI agent developers personally and offer them early access to the full desktop app.
- Track every user who installs, create a personal onboarding channel for the first 50.
**Priority 6: User Feedback Loop**
- Add an in-app feedback widget (thumbs up/down on workspace briefings, "Was this memory useful?" on recalled items).
- Schedule 5 user calls per week for the first month. Ask: "What made you come back? What almost made you leave? What do you wish it remembered?"
- Kill features nobody uses. If data shows only 4 of 22 personas get selected, hide the rest.
### Days 61-90: Revenue and Retention
**Priority 7: First Revenue**
- Target 10 paying Basic ($15/mo) customers from the first 50 users.
- Offer 50% lifetime discount to first 10 paying customers in exchange for testimonials.
- Build the simplest possible "Upgrade" flow: workspace limit hit -> modal with Stripe checkout.
- Measure conversion rate: free -> trial behavior -> paid.
**Priority 8: Retention Hardening**
- Analyze the return-visit data. Do users with more memory frames return more? Is there a magic number of frames?
- If the data shows memory works as a retention driver, double down on auto-save quality and workspace briefing richness.
- If the data shows memory is not driving retention, the thesis needs revisiting. Consider pivoting to emphasize multi-agent orchestration, privacy/local-first, or specific domain value (legal, consulting, finance).
**Priority 9: Accessibility and Polish**
- Fix muted-foreground contrast (3.5:1 -> 5:1+).
- Eliminate all text below 11px (97 instances).
- Unify the two divergent CSS systems.
- These are not cosmetic -- they block enterprise adoption and reduce perceived quality.
---
## Appendix: Honest Scoreboard
| Dimension | Score | What's Behind the Score |
|-----------|:-----:|------------------------|
| **Technical depth** | 9/10 | The memory system is world-class. The architecture is clean. 2,000+ tests, 0 TypeScript errors, 80+ tools. This is genuinely excellent engineering. |
| **Design quality** | 6/10 | The Hive DS is distinctive and the OS metaphor is committed. But accessibility is 3/10, typography is 4/10, and two divergent CSS systems undermine the system. |
| **Product completeness** | 8/10 | Almost everything is built. Stripe is 80% done. The feature surface is enormous for a pre-launch product. |
| **Distribution** | 1/10 | Zero community, zero content marketing, zero social presence, mailto: beta signup, no download tracking. |
| **Revenue** | 0/10 | $0 MRR. No Stripe products created. No paying customers. |
| **User evidence** | 0/10 | No analytics, no user counts, no testimonials, no case studies, no cohort data. |
| **Competitive positioning** | 7/10 | Genuinely differentiated on memory depth, local-first privacy, and knowledge-worker breadth. Time-limited moat. |
| **Founder execution** | 8/10 | The amount of working, tested, architecturally sound code produced is exceptional. The gap is on GTM, not engineering. |
### The Verdict
Waggle OS is one of the most technically impressive pre-revenue AI products in existence. The memory system is a genuine innovation. The engineering execution is exceptional. The strategic logic (memory -> lock-in -> enterprise upsell) is sound.
The problem is that none of this matters without users. The founder has spent 6+ months building a Ferrari and forgotten to open the dealership. The landing page has a mailto: signup. The download link has no tracking. The telemetry is local and off.
**The product is not the problem. Distribution is the problem.** Fix distribution in the next 90 days and this becomes a fundable company. Keep building features for zero users and the window closes as Claude.ai ships "good enough" memory to 100M people.
The clock is ticking. The memory moat is real but shrinking. Ship, measure, sell -- in that order.
---
*Reviewed from: 6 analysis documents (feature inventory, architecture analysis, UX analysis, design audit, competitive intelligence, master synthesis), full codebase inspection of telemetry, Stripe, and landing page code.*

View File

@@ -0,0 +1,293 @@
# Waggle OS -- Product Intelligence Document
**Date:** April 2026
**Classification:** Internal -- Egzakta Group
**Prepared by:** Automated 4-agent deep analysis (feature audit, architecture analysis, UX analysis, competitive intelligence)
---
## Executive Summary
Waggle OS is a **desktop-native AI agent platform with structured persistent memory** -- a category that barely existed 12 months ago and is now emerging as the next frontier of AI tooling. After a deep audit of the entire codebase (50+ source files, 52 route endpoints, 80+ agent tools) and competitive analysis against 15 products, the assessment is:
**Waggle is a genuinely differentiated product with a compound technical moat, but faces critical go-to-market challenges.**
The memory system (5-layer architecture: FrameStore + HybridSearch + KnowledgeGraph + IdentityLayer + AwarenessLayer) is the most sophisticated persistent memory implementation in any shipping AI product. No competitor -- not Claude.ai, not ChatGPT, not Cursor, not Dust -- has anything approaching this depth. This is real, built, working infrastructure, not vapor.
However, Waggle's **integration ecosystem is thin** (28 connectors vs. Claude.ai's 6,000+ MCP connections), **community presence is zero** (vs. OpenClaw's 345K GitHub stars), and **pricing is high** ($79/seat Teams vs. $25-30/seat for Claude Team/ChatGPT Business). The product is a Ferrari engine in a car that most people don't know exists.
---
## I. Product State -- What Waggle OS Actually Is
### The Numbers
| Dimension | Count | Status |
|-----------|-------|--------|
| Agent tools | 80+ | Built |
| Agent personas | 22 | Built with behavioral specs |
| API route files | 52 | Built |
| Built-in connectors | 28 | Built |
| Workflow templates | 5 | Built |
| LLM providers supported | 12+ | Built |
| Billing tiers | 4 (Solo/Basic/Teams/Enterprise) | Defined, Stripe partial |
| Test suite | 2,000+ tests | Passing |
| TypeScript errors | 0 | Clean across all packages |
### Architecture
```
+----------------------------------------------------------------------+
| DESKTOP SHELL |
| Tauri 2.0 (Rust) React 18 + Vite + Tailwind + shadcn/ui |
+-------------------------------+--------------------------------------+
| Tauri IPC
+-------------------------------v--------------------------------------+
| FASTIFY SIDECAR (Node.js) |
| 52 route files -- REST API -- Clerk JWT auth |
+---+------------+------------+------------------+---------------------+
| | | |
v v v v
+--------+ +----------+ +-----------+ +-------------+
| Agent | | Core | | Shared | | Waggle |
| Engine | | Mind | | Types + | | Dance |
| 80+ | | 7-layer | | Tiers | | Protocol |
| tools | | SQLite | | | | (multi- |
| 22 | | + vec | | | | agent) |
| persona| | + KG | | | | |
+--------+ +----------+ +-----------+ +-------------+
|
+-----------v-----------+
| LiteLLM (12+ models) |---> KVARK Enterprise
+------------------------+
```
### Tier System
| Feature | Solo (Free) | Basic ($15/mo) | Teams ($79/seat) | Enterprise |
|---------|:-----------:|:--------------:|:----------------:|:----------:|
| Workspaces | 5 | Unlimited | Unlimited | Unlimited |
| Personas | 8 universal | All 22 | All 22 + custom | Custom |
| Sub-agents | -- | 10 sessions | 25 sessions | 100 |
| Connectors | 5 | All 28 | All + team | All + KVARK |
| MCP servers | 2 | 10 | 25 | Unlimited |
| Skills | Community | Custom | Team library | Enterprise |
| Memory | Personal only | + Workspace | + Team sync | + KVARK |
| Embeddings | In-process | + Ollama/API | + LiteLLM | Full |
---
## II. Crown Jewels -- What Makes Waggle Unique
### Crown Jewel #1: Five-Layer Persistent Memory
This is Waggle's primary moat. The memory system has **no equivalent in any competing product**.
| Layer | What It Does | Why It Matters |
|-------|-------------|----------------|
| **FrameStore** | Video-compression-inspired I/P/B frame model with importance weighting, source provenance, and temporal decay | Memories aren't just stored -- they evolve, link, and self-organize |
| **HybridSearch** | Reciprocal Rank Fusion combining keyword (FTS5) + vector (sqlite-vec) + graph connectivity | Retrieval quality far exceeds single-method search |
| **KnowledgeGraph** | Entity-relation graph with typed ontology, co-occurrence detection, temporal validity | The agent builds a structured understanding of the user's world |
| **IdentityLayer** | Persistent user profile (name, role, personality, preferences, writing style) | The agent adapts to you, not the other way around |
| **AwarenessLayer** | Active task tracking, context flags, priorities, expiration | The agent knows what it's working on and what matters now |
**Competitor comparison:**
- **ChatGPT Memory**: Flat fact list. "User likes dark mode." No structure, no search, no graph.
- **Claude.ai Projects**: Uploaded knowledge files + conversation context. Better than ChatGPT but no semantic search.
- **Cursor/Windsurf**: Code-specific project memory. No knowledge graph, no identity layer.
- **Hermes Agent**: Three-tier memory (working/episodic/semantic). Closest competitor, but no knowledge graph or identity layer.
**Assessment:** Waggle's memory is **2-3 generations ahead** of ChatGPT/Claude and **1 generation ahead** of Hermes.
### Crown Jewel #2: Dual-Mind Architecture with Auto-Save
The `autoSaveFromExchange` system in the orchestrator uses **30+ calibrated regex patterns** to passively extract and store:
- User preferences and style
- Decisions and corrections
- Research findings with sources
- Implicit constraints and deadlines
- Relationship and organizational context
This means **the agent gets smarter with every conversation without the user doing anything**. Combined with the dual-mind routing (personal memories persist across all workspaces; workspace memories stay isolated), this creates a compounding knowledge advantage.
**No competitor has this.** ChatGPT's memory requires explicit "remember this" instructions. Claude.ai relies on project uploads. Waggle learns silently.
### Crown Jewel #3: 22 Behavioral Personas with Guardrails
Each persona is not just a system prompt -- it includes:
- **Tool allowlist/denylist** (enforced, not suggested)
- **Failure patterns** (3+ documented per persona for self-correction)
- **Hard boundaries** (`wontDo` statements)
- **Read-only mode** for planner/verifier (no write tools, ever)
- **Suggested skills, connectors, and MCP servers**
This means a Legal persona won't accidentally run bash commands, and a Planner can't modify files. The behavioral spec includes a **memory conflict protocol** (=== CRITICAL ===) that prevents the agent from silently overwriting contradictory memories.
### Crown Jewel #4: Desktop-Native + Local-First
Tauri 2.0 (not Electron) means:
- **~10MB binary** vs Electron's ~150MB
- **Native performance** with Rust backend
- **Local SQLite** -- data never leaves the machine unless explicitly synced
- **Offline-capable** -- in-process embeddings, local memory, local LLM via Ollama
- **Privacy by architecture** -- not a cloud feature bolt-on
### Crown Jewel #5: Multi-Agent Orchestration for Non-Coding Domains
Most multi-agent systems (CrewAI, AutoGPT) focus on coding. Waggle's 5 workflow templates span:
- **research-team**: Researcher -> Synthesizer -> Reviewer
- **review-pair**: Writer -> Reviewer -> Reviser
- **plan-execute**: Planner -> Executor -> Summarizer
- **ticket-resolve**: Triage -> Investigator -> Responder
- **content-pipeline**: Researcher -> Drafter -> Editor
Combined with the persona system, this enables **multi-agent workflows for lawyers, consultants, marketers, HR, and finance** -- markets that coding-focused tools ignore entirely.
---
## III. UX Assessment
### Strengths
1. **Committed OS metaphor** -- Boot screen, dock, draggable/resizable windows, snap zones, status bar. Feels like a product, not a chat wrapper.
2. **Progressive disclosure via tier-gated dock** -- Solo sees 5 apps, Power users see the full suite. Prevents overwhelm.
3. **WorkspaceBriefing** -- When you open a workspace, you get a contextual greeting with remembered context, active tasks, and suggested prompts. This is a killer feature for returning users.
4. **Global Search / Command Palette** -- Ctrl+K fuzzy search across workspaces, settings, commands.
5. **Two-step onboarding** -- Template (what) + Persona (how) = clear mental model.
6. **3-lane model fallback** -- Primary/Fallback/Budget model chain with automatic switching.
### Weaknesses
1. **Boot screen has no skip** -- 4.8 seconds for returning users is too long.
2. **Very small text** -- 9-10px throughout, accessibility risk.
3. **Desktop-only** -- No responsive design, no mobile, no tablet.
4. **Knowledge graph visualization is primitive** -- Static circular SVG, no interactivity.
5. **Window controls are visually indistinct** -- Three similar circles vs. macOS red/yellow/green.
6. **Several monolithic UI components** -- FilesApp (1,176 LOC), OnboardingWizard (1,028 LOC).
### Design System (Hive DS)
The honey/amber/dark theme is distinctive and memorable:
- Primary: `#e5a000` (honey gold)
- Background: `#08090c` (near-black)
- Accent: `#a78bfa` (purple)
- The bee avatars for personas are charming and on-brand.
---
## IV. Competitive Positioning
### Feature Comparison Matrix
| Capability | Waggle | Claude.ai | ChatGPT | Cursor | Dust | Hermes |
|-----------|:------:|:---------:|:-------:|:------:|:----:|:------:|
| Persistent memory | ***** | ** | * | * | ** | **** |
| Knowledge graph | ***** | -- | -- | -- | -- | -- |
| Workspace isolation | ***** | *** | -- | ** | **** | ** |
| Multi-agent orchestration | **** | -- | -- | ** | *** | *** |
| Persona system | ***** | -- | * | -- | -- | ** |
| Desktop-native | ***** | -- | -- | ***** | -- | -- |
| Integration ecosystem | ** | ***** | **** | *** | **** | ** |
| Coding capabilities | *** | **** | *** | ***** | -- | ** |
| Market presence | * | ***** | ***** | ***** | *** | ** |
| Pricing competitiveness | ** | **** | **** | **** | *** | ***** |
### Where Waggle Wins
1. **Memory depth** -- No contest. 5-layer structured memory vs. flat fact lists.
2. **Privacy/local-first** -- Data stays on machine. Competitors are cloud-only.
3. **Persona specialization** -- 22 domain-specific agents with enforced tool boundaries.
4. **Non-coding knowledge work** -- Legal, finance, HR, consulting, marketing workflows.
5. **Compounding intelligence** -- Gets smarter with every session via auto-save.
### Where Waggle Loses
1. **Integration ecosystem** -- 28 connectors vs. 6,000+ MCP connections on Claude.ai.
2. **Community/awareness** -- Zero open-source presence vs. 345K stars (OpenClaw) or 45K (CrewAI).
3. **Pricing** -- $79/seat Teams is 2-3x more than Claude Team ($25-30) or ChatGPT Business ($25).
4. **Coding depth** -- Cursor/Claude Code/Windsurf are far ahead for pure development workflows.
5. **Mobile/web access** -- Desktop-only limits reach. Claude.ai and ChatGPT work everywhere.
6. **Stripe/billing** -- Not yet live. Can't actually charge users.
### Most Dangerous Competitors
1. **Claude.ai** -- If Anthropic expands its Projects + Memory + MCP into workspace-scoped persistent intelligence, it would directly threaten Waggle's core proposition with vastly more distribution.
2. **Hermes Agent** -- Open-source, three-tier memory, self-improving skills, $10-20/mo total cost. The closest architectural match to Waggle at a fraction of the price.
3. **Dust.tt** -- Team AI platform with strong integrations. If Dust adds structured memory, it becomes a direct competitor for enterprise.
---
## V. Is Waggle Valuable?
### Yes, unambiguously.
The core product solves a **real, painful problem**: AI assistants forget everything. Every conversation starts from zero. Every project loses context. Knowledge workers waste enormous time re-explaining their world to AI tools.
Waggle is the only product where:
- The AI **knows your projects** (workspace memory)
- The AI **knows you** (identity layer + auto-save)
- The AI **builds knowledge over time** (knowledge graph + memory weaver)
- The AI **specializes to your domain** (22 personas)
- Your data **never leaves your machine** (local-first SQLite)
### The product-market fit signal
The product is built. Not "we have a landing page and a waitlist." The codebase contains:
- 80+ working agent tools
- 2,000+ passing tests
- 52 API route files
- A full desktop OS with windows, dock, onboarding, and settings
- Memory system with vector search, knowledge graph, and auto-consolidation
This is **real product** at a level of completeness that most Series A startups don't achieve.
### Comparable to Claude Code?
**No, and it shouldn't try to be.** Claude Code is a coding-focused terminal tool. Waggle is a workspace-native agent platform. They overlap on coding tasks (Waggle has a coder persona), but Waggle's value is in **knowledge work** -- research, writing, analysis, planning, legal review, financial modeling. Claude Code is a power drill; Waggle is a workshop.
### Comparable to ChatGPT?
**Waggle is what ChatGPT should have become.** ChatGPT has massive distribution but shallow memory, no workspace concept, no persona system, and no multi-agent orchestration. Waggle has all of these. The question is whether Waggle can capture even 0.1% of ChatGPT's user base -- which would be enormous.
---
## VI. Strategic Recommendations
### P0 -- Must Do (blocks revenue)
1. **Ship Stripe billing** -- The tier system is defined, the UI exists, but you can't charge money. This is the #1 blocker.
2. **Expand MCP connectors to 50+** -- The integration gap vs. Claude.ai is the biggest competitive vulnerability. Focus on the top-20 work tools: Google Workspace, Slack, Notion, Jira, Linear, GitHub, Salesforce, HubSpot.
3. **Skip-boot for returning users** -- 4.8s boot screen will kill retention. Add localStorage flag.
### P1 -- Should Do (accelerates growth)
4. **Open-source the core memory system** -- The FrameStore + HybridSearch + KnowledgeGraph could be the "React of AI memory." Open-sourcing it builds community, credibility, and ecosystem.
5. **Web app version** -- Desktop-only limits TAM. A web version (even feature-reduced) dramatically expands reach.
6. **Self-improving memory** -- Hermes has this. Memory Weaver consolidation exists but needs auto-skill extraction from patterns.
7. **Reduce Teams pricing** -- $79/seat to $39-49/seat. Still premium, but competitive.
### P2 -- Could Do (market expansion)
8. **Mobile companion app** -- Read-only access to workspace memories + quick chat.
9. **Visual workflow builder** -- Drag-and-drop multi-agent workflow creation.
10. **Claude Code as a backend** -- Instead of competing with Claude Code on coding, integrate it as the coder persona's engine.
---
## VII. Bottom Line
**Waggle OS is a technically impressive, genuinely differentiated product that is pre-revenue and under-distributed.** The memory system is the most sophisticated in any shipping AI product. The persona system solves real workflow problems for knowledge workers. The desktop-native, local-first architecture is a genuine privacy advantage.
The product is **not comparable to Claude Code** (different category), **not comparable to Cursor** (different market), but **directly competitive with Claude.ai + ChatGPT for knowledge workers** and **ahead of both on memory and workspace intelligence**.
The biggest risks are:
1. **Revenue** -- Stripe isn't live. Can't charge users.
2. **Distribution** -- Nobody knows Waggle exists.
3. **Velocity** -- Claude.ai could ship workspace memory + persona switching tomorrow and own the market with their distribution advantage.
The biggest opportunity is:
**Being the "Local-first, privacy-native, memory-first AI workspace" before the cloud giants figure out that memory is the next platform.**
---
*This document was generated by a 4-agent parallel analysis: feature audit (80+ tools catalogued), architecture deep-dive (crown jewels identified), UX analysis (17 views + 10 overlays reviewed), and competitive intelligence (15 competitors profiled). Source data in `docs/product-analysis/`.*

View File

@@ -0,0 +1,587 @@
# Waggle OS -- Technical Architecture Analysis
**Date:** 2026-04-08
**Scope:** Full codebase analysis of packages/core, packages/agent, packages/waggle-dance, packages/shared
**Purpose:** Identify crown jewels, technical moat, differentiation, risks
---
## Architecture Diagram
```
+----------------------------------------------------------------------+
| DESKTOP SHELL |
| Tauri 2.0 (Rust) React 18 + Vite + Tailwind + shadcn/ui |
| IPC allowlist apps/web/ (desktop OS + dock UI) |
+-------------------------------+--------------------------------------+
|
Tauri IPC
|
+-------------------------------v--------------------------------------+
| FASTIFY SIDECAR (Node.js) |
| packages/server -- REST API -- Clerk JWT auth |
+---+------------+------------+------------------+---------------------+
| | | |
v v v v
+--------+ +----------+ +-----------+ +-------------+
| Agent | | Core | | Shared | | Waggle |
| Engine | | Mind | | Types + | | Dance |
| | | | | Tiers | | Protocol |
+---+----+ +----+-----+ +-----------+ +------+------+
| | |
| v |
| +------+-------+ |
| | SQLite + FTS5 | |
| | + sqlite-vec | |
| | (.mind files) | |
| +--------------+ |
| |
v v
+---+--------------------------------------------+---+
| LiteLLM Proxy (model-agnostic) |
| Anthropic | OpenAI | Ollama | LiteLLM gateway |
+------------------------------------------------+---+
|
+-----------v-----------+
| KVARK (Enterprise)|
| Sovereign AI platform|
| SharePoint/Jira/Slack|
+-----------------------+
```
### Data Flow
```
User Message
|
v
buildSystemPrompt() --> Identity + Self-Awareness + Preloaded Context
|
+-- recallMemory(query) --> HybridSearch (FTS5 keyword + sqlite-vec vector)
| |
| +--> RRF fusion + scoring (temporal/importance/graph)
|
v
runAgentLoop()
|-- LiteLLM /chat/completions (streaming SSE)
|-- Tool execution loop (max 10 turns)
| |-- scanForInjection() on every tool output
| |-- HookRegistry pre:/post: events
| |-- LoopGuard (duplicate call detection)
| |-- Governance policy enforcement
|
v
autoSaveFromExchange()
|-- Pattern matching: preferences, decisions, corrections, research
|-- CognifyPipeline: frame save + entity extraction + KG enrichment + vector index
|
v
Response to user (with recalled[] for UI badges)
```
---
## 1. Memory Architecture -- THE Crown Jewel
### 1.1 The MindDB
Each workspace and user gets a separate `.mind` SQLite database. The schema has 7 layers:
| Layer | Table(s) | Purpose |
|-------|----------|---------|
| 0 | `identity` | Single-row user profile (name, role, personality, system_prompt) |
| 1 | `awareness` | Active tasks, pending items, context flags (max 10, with expiry) |
| 2 | `memory_frames` + `memory_frames_fts` + `memory_frames_vec` | I/P/B frame memory with FTS5 keyword search and 1024-dim vector search |
| 3 | `knowledge_entities` + `knowledge_relations` | Entity-relation knowledge graph with temporal validity |
| 4 | `procedures` | GEPA-optimized prompt templates with success rate tracking |
| 5 | `improvement_signals` | Recurring behavioral patterns (capability gaps, corrections, workflow patterns) |
| 6 | `install_audit` | Capability install trust trail (proposed/approved/installed/rejected) |
### 1.2 Frame Architecture (I/P/B Model)
Memory uses a **video compression-inspired** frame model:
- **I-Frame (Intra):** Complete snapshot -- the baseline state of a memory topic. Self-contained.
- **P-Frame (Predictive):** Delta from an I-frame -- captures changes, updates, corrections. References a `base_frame_id`.
- **B-Frame (Bidirectional):** Cross-reference frame linking multiple other frames together. Stores `references[]` as JSON.
Frames are organized by **GOP (Group of Pictures)** mapped through sessions. Each session has a `gop_id`, and frames within it have a monotonically increasing `t` value. State reconstruction: take the latest I-frame for a GOP and apply all P-frames since.
**Importance levels** with multipliers: critical (2.0x), important (1.5x), normal (1.0x), temporary (0.7x), deprecated (0.3x).
**Source provenance:** Every frame tracks how it was created: `user_stated`, `tool_verified`, `agent_inferred`, `import`, `system`, `personal`, `workspace`.
**Deduplication:** SHA-256 content hashing on the last 500 frames prevents duplicate I-frames. Duplicates update access count instead.
### 1.3 Dual-Mind Architecture
The Orchestrator maintains **two simultaneous memory stores**:
- **Personal Mind:** User preferences, communication style, corrections. Persists across ALL workspaces.
- **Workspace Mind:** Project context, decisions, task progress, domain knowledge. Scoped to one workspace.
The `setWorkspaceMind()` method activates a workspace mind alongside the personal mind. Both are queried in parallel during `recallMemory()`. Personal preferences (detected by content prefix patterns like "User preference:", "Style note:", "Correction from user:") are always loaded regardless of active workspace.
**Memory routing rules in autoSaveFromExchange():**
- Preferences, corrections, style notes --> personal mind
- Decisions, research, work output --> workspace mind
### 1.4 HybridSearch -- Retrieval Engine
Search combines three signals using **Reciprocal Rank Fusion (RRF)**:
1. **FTS5 keyword search:** Porter stemming + unicode61 tokenizer, with OR-based matching for better recall. Stop word filtering. Falls back to LIKE on FTS5 parse errors.
2. **sqlite-vec vector search:** 1024-dimensional embeddings via pluggable EmbeddingProvider. Supports InProcess (Xenova/MiniLM), Ollama (nomic-embed-text), Voyage, OpenAI, LiteLLM, with deterministic mock fallback.
3. **Relevance scoring** with 4 configurable profiles:
- Temporal: exponential decay with 30-day half-life, 7-day recency boost
- Popularity: logarithmic access count scaling
- Contextual: knowledge graph BFS distance (0/1/2/3 hops = 1.0/0.7/0.4/0.2)
- Importance: multiplied by the frame's importance level
Four scoring profiles weight these differently: `balanced`, `recent`, `important`, `connected`.
### 1.5 CognifyPipeline -- Memory Extraction
The `cognify()` method is the write-path pipeline:
1. Ensure a session exists (create one if needed)
2. Save frame (I-frame if first in GOP, P-frame otherwise)
3. Extract entities from content via regex-based NER (persons, organizations, technologies, projects, concepts, tools)
4. Upsert entities into KnowledgeGraph
5. Create co-occurrence relations between entities in the same text
6. Extract semantic relations (led_by, reports_to, depends_on, maintained_by, affiliated_with, approved) via pattern matching
7. Index the frame for vector search
8. Optionally find related frames via MemoryLinker
### 1.6 autoSaveFromExchange -- Passive Memory Accumulation
After every user/assistant exchange, the Orchestrator scans for save-worthy signals:
- **Preferences:** 10 regex patterns ("I prefer...", "call me...", "from now on...", etc.)
- **Implicit style detection:** 6 behavioral patterns (bullet preference, concise preference, code-first, etc.)
- **Decisions:** 7 patterns ("let's go with...", "decided to...", "the plan is...", etc.)
- **Corrections:** User disagreements saved as important frames
- **Research findings:** Structured output with URLs saved with source attribution
- **Structured extraction (F29):** Inline decisions, user questions, key bullet points, work output summaries
This is the mechanism by which Waggle "learns" without explicit save commands.
### 1.7 What Makes This Different from ChatGPT Memory / Claude Projects
| Capability | Waggle OS | ChatGPT Memory | Claude Projects |
|------------|-----------|----------------|-----------------|
| Storage | Local SQLite per workspace | Cloud, opaque | Cloud, project-scoped files |
| Persistence | Permanent until deprecated | Session-scoped + background consolidation | Project file lifetime |
| Structure | I/P/B frames + knowledge graph | Flat facts | Flat documents |
| Search | Hybrid (keyword + vector + graph) | Unknown internal | Document-level retrieval |
| Dual scope | Personal + workspace minds | Single global | Per-project only |
| Entity extraction | Automatic with relations | No graph | No graph |
| Provenance | 7 source types tracked | No provenance | File-level only |
| Importance levels | 5 levels with scoring weights | Binary (remembered/not) | No importance |
| Conflict detection | CRITICAL protocol with user confirmation | Silent overwrite | No conflict handling |
| Data locality | User's machine, never leaves | OpenAI servers | Anthropic servers |
| Temporal scoring | Decay + recency boost | Unknown | No temporal weighting |
**The fundamental difference:** Waggle treats memory as a structured, queryable knowledge base with graph relations and temporal scoring. Competitors treat it as a flat fact store or document repository. The I/P/B frame model enables state reconstruction (like git), not just retrieval.
---
## 2. Agent Orchestration
### 2.1 The Agent Loop
`runAgentLoop()` is a clean, well-structured ReAct loop:
- LiteLLM-proxied chat completions (model-agnostic via OpenAI-compatible API)
- SSE streaming with tool call accumulation
- Rate limit handling: exponential backoff with retry cap (3 retries for 429, 502, 503, 504)
- Token budget enforcement (graceful termination when exceeded)
- AbortSignal support for client disconnection
- Injection scanning on every tool output via `scanForInjection()`
- Loop guard preventing identical tool calls from cycling
- Plugin tool merging at runtime
- Team governance policy enforcement (blocked tools list)
- Pre/post hook system (10 event types) for extensibility
### 2.2 System Prompt Construction
`buildSystemPrompt()` assembles 3 sections with section caching:
1. **Identity** (cached -- only recomputes when identity changes): User profile from IdentityLayer
2. **Self-Awareness** (uncached -- changes every call): Tool inventory, memory stats, improvement signals, skills list
3. **Preloaded Context** (uncached): Recent memories (importance-sorted), active awareness items, top knowledge entities, personal preferences
### 2.3 Behavioral Specification v3.0
Split into 5 named sections totaling approximately 290 lines of rules:
- **coreLoop:** 5-step thinking process (RECALL --> ASSESS --> ACT --> LEARN --> RESPOND) with CRITICAL memory conflict protocol
- **qualityRules:** Anti-hallucination discipline, structured output, context grounding, professional disclaimers
- **behavioralRules:** Memory-first, tool intelligence, narration heuristics, error recovery, planning
- **workPatterns:** Drafting from context, decision compression, research in context
- **intelligenceDefaults:** Tool catalog, capability acquisition, sub-agent delegation, workflow composition
### 2.4 Sub-Agent Orchestrator
`SubagentOrchestrator` implements a supervisor/worker pattern:
- **Dependency-ordered execution** with topological sorting
- **Context injection** between steps (step B can access step A's results)
- **Result aggregation** with 3 modes: concatenate, last, synthesize (the synthesize mode spawns a synthesizer sub-agent)
- **EventEmitter-based** status tracking for UI updates
- **7 role presets** with predefined tool sets (researcher, writer, coder, analyst, reviewer, planner, synthesizer)
- **Circular dependency detection** (breaks loops with error state)
### 2.5 Workflow Composer
Implements **lightest sufficient execution mode** selection:
1. `direct` -- Agent handles directly
2. `structured_single_agent` -- Agent follows a plan, no sub-agents
3. `skill_guided` -- Agent uses a loaded skill's workflow
4. `subagent_workflow` -- Full multi-agent orchestration
The composer analyzes task shape (type, phases) and picks the lightest mode that works. This prevents unnecessary sub-agent spawning for simple tasks.
### 2.6 Waggle Dance Protocol
Inter-agent communication protocol with typed messages:
- **Request types:** knowledge_check, task_delegation, skill_request, model_recommendation
- **Response types:** knowledge_match, task_claim
- **Broadcast types:** discovery, routed_share, skill_share, model_recipe
The `WaggleDanceDispatcher` routes messages to real handlers (memory search, worker spawning, skill installation, capability resolution).
---
## 3. Tool Intelligence
### 3.1 Dynamic Tool Filtering
Three filtering mechanisms:
- **Context-based:** Code tools vs research tools vs general (predefined sets)
- **Availability-based:** Runtime `checkAvailability()` on each tool
- **Offline-capable:** Tools tagged with `offlineCapable` for disconnected operation
- **Config-based:** Explicit `enabled_tools` / `disabled_tools` lists
### 3.2 Capability Router
When a tool is not found, `CapabilityRouter` resolves alternatives by searching across 6 sources:
1. Native tools (exact and partial match)
2. Installed skills (keyword matching in content)
3. Plugins (manifest matching)
4. MCP servers (name matching, health-aware)
5. Sub-agent roles (keyword mapping)
6. Connectors (service/action matching)
Falls back to a "missing" route with an install suggestion.
### 3.3 Context Compression
5-step pipeline for long conversations:
1. **Detect:** Estimate tokens (4 chars/token heuristic), check against threshold (default: 50% of 128K)
2. **Prune:** Replace old tool results with "[Cleared]" placeholders (free, no LLM)
3. **Protect:** Split into head (system + first N messages), tail (recent messages), middle (compressible)
4. **Summarize:** Call budget model on the middle using COMPACTION_PROMPT
5. **Inject:** Replace middle with summary message
Iterative: previous summaries are fed back for cumulative compression.
### 3.4 Credential Pool
Round-robin API key rotation with policy-based cooldowns:
- 429 (rate limit) --> 1 hour cooldown, auto-recovers
- 402 (payment required) --> 24 hour cooldown, auto-recovers
- 401 (unauthorized) --> permanently disabled
- Other errors --> 5 minute cooldown
Vault convention: `provider`, `provider-2`, `provider-3`, etc. Supports multiple keys per LLM provider for throughput maximization.
### 3.5 Injection Scanner
Three pattern categories with weighted scoring:
- **Role override patterns** (0.5 weight): "ignore previous instructions", "you are now", multi-language variants, memory wipe attempts
- **Prompt extraction patterns** (0.4 weight): "show your system prompt", "reveal your instructions"
- **Instruction injection patterns** (0.3/0.6 weight): "IMPORTANT: ignore", "[INST]", "<<SYS>>", fake authority claims
Tool outputs are scored higher (0.6) for instruction injection because they are more dangerous attack vectors. Threshold at 0.3 -- anything above is flagged.
### 3.6 Cost Tracker
Per-model pricing table with usage accumulation. Tracks input/output tokens per call with workspace-level cost attribution. Supports real-time daily totals and per-model breakdowns.
### 3.7 Improvement Detector
Three signal categories tracked in `improvement_signals` table:
- **Capability gaps:** When tools are missing, the gap is recorded. After repeated occurrences, it surfaces as an actionable suggestion.
- **Corrections:** User corrections are detected and tracked to prevent repeated mistakes.
- **Workflow patterns:** Recurring multi-step patterns that could benefit from templates.
Signals are surfaced once via the self-awareness system prompt and then marked as surfaced to avoid repetition.
---
## 4. Skill and Plugin System
### 4.1 Skills
Markdown files with optional YAML frontmatter:
```yaml
---
name: Deploy Helper
description: Helps deploy applications
permissions:
codeExecution: true
network: true
---
```
Skills are parsed by `parseSkillFrontmatter()` and loaded into the agent's context. They can be:
- Built-in (shipped with Waggle)
- User-created via the `create_skill` tool
- Shared between agents via Waggle Dance `skill_share` messages
- Discovered and installed via `acquire_capability` / `install_capability`
### 4.2 Hooks
10 lifecycle events with registry pattern:
- `pre:tool` / `post:tool` -- Before/after any tool execution
- `session:start` / `session:end` -- Session lifecycle
- `pre:response` / `post:response` -- Response generation
- `pre:memory-write` / `post:memory-write` -- Memory mutations (can cancel writes)
- `workflow:start` / `workflow:end` -- Workflow lifecycle
Hooks can be scoped to specific workspaces. Pre-hooks can cancel execution. Activity log maintained (last 50 events).
### 4.3 Install Audit Trail
Every capability installation is recorded:
- Timestamp, capability name, type (native/skill/plugin/mcp), source
- Risk level (low/medium/high)
- Trust source, approval class (standard/elevated/critical)
- Action (proposed/approved/installed/rejected/failed)
- Initiator (agent/user/system)
---
## 5. KVARK Integration
4 enterprise tools gated to Business/Enterprise tiers:
- `kvark_search` -- Full-text search across enterprise sources (SharePoint, Jira, Slack)
- `kvark_ask_document` -- Focused Q&A on a specific enterprise document
- `kvark_feedback` -- Relevance feedback loop for retrieval quality improvement
- `kvark_action` -- Governed enterprise actions (create Jira ticket, post Slack message) with audit trail
**Combined Retrieval** merges workspace memory, personal memory, and KVARK results:
- KVARK is only queried when local results are insufficient (< 3 results with score >= 0.7)
- Conflict detection between workspace memory and KVARK results using polarity analysis (positive vs negative status keywords)
- Every result carries explicit source attribution
---
## 6. Technology Decisions
### Why Tauri (not Electron)
- **Binary size:** Tauri 2.0 binaries are 5-15 MB vs Electron's 150+ MB (uses system WebView)
- **Memory footprint:** Significantly lower -- critical for a desktop AI app that already needs memory for embeddings and SQLite
- **Security:** Explicit IPC allowlist in `tauri.conf.json` (no "allow all" wildcard). Rust shell provides memory safety.
- **Cross-platform:** Windows + macOS from single codebase with Rust's cross-compilation
### Why SQLite + sqlite-vec (not Postgres + pgvector)
- **Desktop-first:** No database server to install. The `.mind` file IS the database. Zero config.
- **Portability:** Copy the file, move it between machines. Backup is a file copy.
- **Performance:** WAL mode for concurrent reads, FTS5 is compiled into SQLite. sqlite-vec provides HNSW-like approximate nearest neighbor search.
- **Privacy:** Data never leaves the user's machine. No connection string, no cloud database.
- **Cost:** Zero infrastructure cost. Perfect for a free-tier product.
### Why Fastify (not Express)
- **Performance:** Fastify is 2-5x faster than Express for JSON serialization, which matters for the streaming agent loop.
- **Schema validation:** Built-in JSON schema validation on routes.
- **Plugin system:** Clean plugin architecture for modular route registration.
### LiteLLM -- Model Agnostic Design
- **Single proxy endpoint:** Agent loop talks to one URL regardless of model provider.
- **Key rotation:** Combined with CredentialPool for multi-key management.
- **Model switching:** Users can change models without code changes. Personas declare `modelPreference` but users override.
- **Offline capability:** When LiteLLM is unavailable, offline-capable tools still work.
---
## 7. Technical Moat Assessment
### Strong Moats (Hard to Replicate)
| Component | Moat Strength | Why |
|-----------|--------------|-----|
| I/P/B Frame Model | **High** | Novel application of video compression concepts to memory. The frame-based state reconstruction with GOPs is architecturally unique. No competitor does this. |
| Dual-Mind Architecture | **High** | Personal + workspace memory with automatic routing is a system design insight. Requires deep thinking about scoping that simple RAG does not address. |
| autoSaveFromExchange | **Medium-High** | 30+ regex patterns for passive memory accumulation. The pattern library represents significant behavioral tuning that requires real user testing to calibrate. |
| HybridSearch with RRF | **Medium** | RRF fusion of keyword + vector + graph signals is well-known in IR research but uncommon in desktop AI. The 4 scoring profiles are a usability advantage. |
| CognifyPipeline | **Medium** | End-to-end write path from text to frames + entities + relations + vectors. Straightforward but well-integrated. |
| Behavioral Spec v3.0 | **Medium** | 290 lines of carefully tuned agent rules. The memory conflict protocol is a genuine innovation -- no other agent platform prevents memory drift this way. |
| Context Compression | **Medium** | 5-step pipeline with iterative summaries. The head/middle/tail splitting with budget model summarization is clever. |
| Improvement Signals | **Medium** | Self-correcting agent behavior via recurring pattern detection. Novel concept for consumer AI. |
### Weak Moats (Easily Replicated)
| Component | Moat Strength | Why |
|-----------|--------------|-----|
| Injection Scanner | **Low** | 20 regex patterns. Any team can build equivalent in a day. |
| Cost Tracker | **Low** | Simple pricing table + usage accumulation. |
| Credential Pool | **Low** | Standard round-robin with cooldowns. |
| Tool Filtering | **Low** | Predefined tool sets by context. |
| Entity Extractor | **Low** | Regex-based NER without ML. Accuracy is limited compared to spaCy or LLM-based extraction. |
### Compound Moat
The real moat is not any single component but **the integration of all of them into a coherent memory-first agent platform**. The combination of I/P/B frames + dual-mind + hybrid search + auto-save + behavioral spec + improvement signals creates a system where the agent genuinely gets better over time in a way that is structurally different from competitors.
---
## 8. Technical Debt and Risks
### High Priority
1. **Entity extraction is regex-only.** The `extractEntities()` function uses pattern matching with a hardcoded list of tech terms and proper noun heuristics. This will miss domain-specific entities and produce false positives. An LLM-based or spaCy-based extraction step would dramatically improve KnowledgeGraph quality.
2. **Knowledge graph queries are O(n) scans.** `getEntitiesByType('')` fetches ALL entities, then filters in JavaScript. For large knowledge bases, this will degrade. The graph needs indexed queries and possibly a proper graph traversal engine.
3. **No vector index maintenance.** sqlite-vec does not have automatic index rebuilding. As frames are deleted or updated, orphan vectors accumulate. No vacuum or reindexing mechanism exists.
4. **Token estimation is 4-chars-per-token heuristic.** The context compressor uses this approximation. For non-English text or code-heavy conversations, this can be off by 30-50%, causing premature or late compression.
5. **No memory compaction/consolidation.** Frames accumulate indefinitely. There is no mechanism to merge old P-frames into new I-frames, or to prune deprecated frames. Over months of use, the `.mind` file will grow unboundedly.
### Medium Priority
6. **Scoring profiles are static.** The 4 scoring profiles have hardcoded weights. There is no adaptive scoring that learns which profile works best for a given user or workspace.
7. **Conflict detection is keyword-based.** The `detectConflict()` function uses simple polarity word lists. It will miss semantic conflicts and produce false positives on keyword collisions.
8. **No embedding dimension migration.** If the embedding model changes (different dimension count), existing vectors in `memory_frames_vec` become incompatible. No migration path exists.
9. **Stripe integration is incomplete.** The tier system is defined but `stripePriceId` values come from environment variables. No billing webhook handling visible in the codebase.
10. **Waggle Dance protocol is partially implemented.** The dispatcher handles 4 of 8 message subtypes. `model_recommendation`, `knowledge_match`, `task_claim`, and `discovery` are defined but not dispatched.
### Low Priority
11. **No rate limiting on sidecar API routes.** The Fastify server exposes endpoints without throttling.
12. **Improvement signals are never pruned.** The `improvement_signals` table grows indefinitely with no archival.
---
## 9. Comparison to Competitors
### vs. ChatGPT (OpenAI)
| Dimension | Waggle OS | ChatGPT |
|-----------|-----------|---------|
| Memory model | Structured frames with I/P/B + knowledge graph | Flat fact store, opaque consolidation |
| Data location | Local (user's machine) | OpenAI cloud |
| Search | Hybrid (keyword + vector + graph) | Unknown internal |
| Multi-workspace | Dual-mind (personal + workspace) | Single global memory |
| Tool extensibility | Skills + plugins + MCP + connectors | GPT Actions (HTTP endpoints) |
| Enterprise bridge | KVARK integration with governed actions | No self-hosted option |
| Cost visibility | Per-model tracking with daily totals | Hidden in subscription |
| Offline | Partial (offline-capable tools) | None |
**Waggle advantage:** Memory depth, data sovereignty, enterprise bridge
**ChatGPT advantage:** Scale, model quality (GPT-4 family), ecosystem (millions of GPTs)
### vs. Claude Projects (Anthropic)
| Dimension | Waggle OS | Claude Projects |
|-----------|-----------|-----------------|
| Memory model | I/P/B frames + auto-save from conversations | Static files uploaded to project |
| Persistence | Permanent, cross-session, auto-enriched | File lifetime only |
| Context | Automatic memory recall per query | Full project files in context window |
| Desktop | Native Tauri app | Web-only |
| Agent tools | 30+ tools with plugin system | Limited tool use |
| Multi-agent | SubagentOrchestrator with dependency DAG | No multi-agent |
| Enterprise | KVARK with governed actions | No enterprise bridge |
**Waggle advantage:** Automatic memory, desktop, multi-agent, enterprise
**Claude advantage:** Model quality (Claude 4), massive context window (1M tokens), simpler UX
### vs. Cursor / Windsurf / Cline (AI Code Editors)
| Dimension | Waggle OS | AI Code Editors |
|-----------|-----------|-----------------|
| Scope | General-purpose workspace AI | Code-focused |
| Memory | Persistent knowledge graph | Code index only |
| Personas | 22 domain-specific roles | Single coding persona |
| Document output | DOCX generation, reports, briefs | Code output only |
| Enterprise | KVARK + governed actions | GitHub/GitLab integration |
**Waggle advantage:** Breadth (not just code), persistent memory, enterprise
**Code editor advantage:** Deeper code understanding, LSP integration, inline editing
### vs. Notion AI / Mem.ai
| Dimension | Waggle OS | Notion AI / Mem.ai |
|-----------|-----------|---------------------|
| Agent capability | Full ReAct loop with tools | Q&A over documents |
| Memory | Auto-extracted structured frames | Document-level |
| Privacy | Local-only SQLite | Cloud |
| Multi-agent | Yes | No |
| Extensibility | Skills + plugins + MCP | Limited |
**Waggle advantage:** True agent with tools, local data, extensibility
**Notion/Mem advantage:** Better collaborative editing, richer document UX
---
## 10. Summary of Crown Jewels
### Tier 1 -- Genuinely Innovative
1. **I/P/B Frame Model with GOP Sessions** -- Novel application of video compression to AI memory. Enables state reconstruction, importance-weighted retrieval, and provenance tracking in a way no competitor does.
2. **Dual-Mind Architecture** -- Separating personal identity/preferences from workspace knowledge, with automatic routing, is a system design insight that solves a real problem (cross-project preference continuity).
3. **Memory Conflict Protocol** -- The CRITICAL block in the behavioral spec that prevents memory drift through contradiction detection and user confirmation is a safety innovation absent from all competitors.
4. **autoSaveFromExchange** -- Passive memory accumulation from every conversation turn, with 30+ calibrated patterns for preferences, decisions, corrections, and research findings. This is what makes the memory system feel "alive."
### Tier 2 -- Well-Engineered Differentiators
5. **HybridSearch with Multi-Signal Scoring** -- RRF fusion of keyword + vector + knowledge graph with 4 configurable profiles and temporal decay. Solid IR engineering.
6. **Context Compression Pipeline** -- 5-step iterative compression that preserves critical information while managing context window limits. The head/middle/tail split with budget model summarization is well-designed.
7. **KVARK Combined Retrieval with Conflict Detection** -- Merging local memory with enterprise knowledge, only querying KVARK when local results are insufficient, with polarity-based conflict detection.
8. **Improvement Signal System** -- Self-correcting agent behavior through recurring pattern detection. The agent learns from its own failures.
### Tier 3 -- Solid Infrastructure
9. **Tier-Gated Capabilities** -- Clean tier architecture (SOLO/BASIC/TEAMS/ENTERPRISE) with per-capability enforcement including embedding quotas.
10. **CredentialPool with Policy-Based Cooldowns** -- Production-grade key rotation for multi-provider LLM access.
11. **Hook System** -- 10-event lifecycle with workspace scoping and cancellation support. Enables governance and extensibility.
12. **Waggle Dance Protocol** -- Inter-agent communication with typed messages for team collaboration.
---
*End of analysis.*

View File

@@ -0,0 +1,921 @@
# Waggle OS Competitive Analysis
## April 2026
---
## Table of Contents
1. [Executive Summary](#executive-summary)
2. [Competitor Profiles](#competitor-profiles)
- [Claude Code (Anthropic)](#1-claude-code-anthropic)
- [Claude.ai / Claude Pro / Claude Team](#2-claudeai--claude-pro--claude-team)
- [ChatGPT / GPT-4o / Custom GPTs](#3-chatgpt--gpt-4o--custom-gpts)
- [Cursor](#4-cursor)
- [Windsurf](#5-windsurf-formerly-codeium)
- [Devin](#6-devin-cognition-ai)
- [GitHub Copilot](#7-github-copilot)
- [Dust.tt](#8-dusttt)
- [Notion AI](#9-notion-ai)
- [Hermes Agent](#10-hermes-agent-nous-research)
- [Paperclip AI](#11-paperclip-ai)
- [CrewAI](#12-crewai)
- [Relevance AI](#13-relevance-ai)
- [AutoGPT / AgentGPT](#14-autogpt--agentgpt)
- [OpenClaw](#15-openclaw)
3. [Feature Comparison Matrix](#feature-comparison-matrix)
4. [Waggle's Unique Differentiators](#waggles-unique-differentiators)
5. [Waggle's Competitive Gaps](#waggles-competitive-gaps)
6. [Market Positioning Recommendation](#market-positioning-recommendation)
---
## Executive Summary
The AI agent platform market in 2026 has exploded into a $56B+ landscape spanning three distinct lanes: **chat-based AI assistants** (Claude.ai, ChatGPT), **agentic code editors** (Cursor, Windsurf, Copilot), and **agent orchestration platforms** (CrewAI, Dust, Relevance AI). A new fourth category is emerging: **persistent agent platforms** (Hermes Agent, OpenClaw) that maintain state and identity across sessions.
Waggle OS occupies a unique intersection: it is the only **desktop-native, workspace-scoped AI agent platform with structured persistent memory** (SQLite + vector search + knowledge graph). No competitor combines all of these attributes in a single product. However, Waggle faces intense competition on individual axes -- Claude Code and Cursor dominate developer workflows, ChatGPT and Claude.ai own the general assistant space, and Dust/Notion AI compete for team workspace intelligence.
The most direct emerging threats are **Hermes Agent** (open-source persistent agent with self-improving memory) and **OpenClaw** (viral open-source agent with 345K+ GitHub stars and cross-channel persistence), both of which overlap significantly with Waggle's memory-first value proposition.
---
## Competitor Profiles
### 1. Claude Code (Anthropic)
**What it is:** An agentic coding tool that lives in the terminal, IDE, desktop app, and browser. It reads entire codebases, makes multi-file changes, runs tests, manages git workflows, and submits PRs -- all through natural language commands.
**Key Features:**
- Full codebase awareness with automatic indexing
- Multi-file editing and refactoring
- Test execution and debugging
- Git workflow automation (commits, PRs, branch management)
- CLAUDE.md project memory files (persistent project context across sessions)
- Auto-memory (Claude writes notes for itself that persist)
- Scheduled tasks via loop command (cron-style operations)
- Background agents with worktree isolation for parallel subtasks
- Voice mode supporting 20 languages
- Remote control via phone or web (Dispatch feature)
- MCP (Model Context Protocol) server support
- Skills and hooks extensibility system
**Memory/Persistence:**
- CLAUDE.md files provide layered persistent context (global, project, user levels)
- Auto-memory accumulates knowledge across sessions without user intervention
- Project memory committed to git and shared with teams
- Memory is markdown-based, loaded into context at session start
- NOT structured memory -- no database, no vector search, no knowledge graph
**Pricing:**
- Requires a Claude subscription (Pro $20/mo, Max $100-200/mo) or Anthropic Console account
- As of April 2026, usage with third-party tools billed separately on pay-as-you-go basis
- API-based usage charged per token
**Strengths:**
- Best-in-class coding agent capabilities
- Deep integration with development workflows (GitHub, GitLab)
- CLAUDE.md system provides simple but effective project context persistence
- Extensible via MCP, skills, and hooks
- Growing ecosystem of community skills and plugins
- Background agents enable true parallel work
**Weaknesses:**
- Developer-focused only -- not a general workspace tool
- Memory is flat markdown files, not structured/queryable
- No workspace concept beyond project directories
- No built-in persona system
- No desktop-native UI (terminal + IDE extension + web)
- No knowledge graph or semantic memory
- No multi-agent persona orchestration for non-coding tasks
**Waggle Comparison:** Claude Code is narrowly superior for coding workflows but lacks Waggle's structured memory, workspace abstraction, persona system, and breadth of non-coding use cases. Waggle could integrate Claude Code as a backend tool rather than competing head-to-head on coding.
---
### 2. Claude.ai / Claude Pro / Claude Team
**What it is:** Anthropic's consumer and team chat interface for Claude models. Includes Projects for organized conversations, MCP integrations for external tool access, and recently added persistent memory.
**Key Features:**
- Projects: organize conversations with custom instructions and uploaded knowledge
- MCP Integration: connects to 6,000+ apps (Google Drive, Slack, GitHub, Jira, Notion, Stripe, Figma, Zapier)
- Long-term Project Memory (2026): remembers architectural decisions and style preferences across sessions
- Artifacts: interactive code, documents, and visualizations
- Claude Code integration for developer workflows
- Multi-model access (Opus 4.5, Sonnet 4.6, Haiku 4.5)
**Pricing:**
- Free: basic access with usage limits
- Pro: $20/mo ($17/mo annual) -- higher limits
- Max: $100-200/mo -- 5x-20x usage, persistent memory, early access
- Team: $25-30/user/mo standard, $150/user/mo premium (includes Claude Code)
**Memory/Persistence:**
- Long-term Project Memory (new in 2026): reduces need to re-upload context
- Projects serve as persistent knowledge containers
- MCP connections provide live data access
- No structured database or knowledge graph -- relies on conversation context and project uploads
**Strengths:**
- Massive MCP ecosystem (6,000+ integrations)
- Projects provide organized workspaces
- Best-in-class reasoning (Claude models)
- Simple, polished UI
- Strong team collaboration features
**Weaknesses:**
- Cloud-only (no desktop-native app for the full experience)
- Memory is limited compared to structured systems
- No persona switching within a workspace
- No multi-agent orchestration
- No local data processing
- No knowledge graph or semantic search over memory
- Limited to Anthropic models
**Waggle Comparison:** Claude.ai is Waggle's most direct competitor for knowledge workers. It has a vastly larger integration ecosystem via MCP, but Waggle offers deeper memory (SQLite + vector + knowledge graph vs. flat project context), desktop-native performance, persona specialization, and multi-agent workflows. The MCP gap is the most concerning competitive issue.
---
### 3. ChatGPT / GPT-4o / Custom GPTs
**What it is:** OpenAI's flagship AI assistant with the largest user base in the world. Offers memory, custom GPTs, Canvas for collaborative editing, code interpreter, DALL-E image generation, web browsing, and extensive plugin ecosystem.
**Key Features:**
- Memory: saves facts across conversations (preferences, name, role)
- Chat history: insights gathered from past chats to improve future ones
- Custom GPTs: user-created specialized assistants with custom instructions, knowledge files, and model selection (GPT-4o, o3, o4-mini)
- Canvas: collaborative document and code editing
- Code Interpreter / Advanced Data Analysis
- DALL-E 3 image generation
- Web browsing
- Voice mode
- GPT Store with community-built GPTs
**Pricing:**
- Free: basic GPT-4o access with limits
- Go: $8/mo -- lightweight tier
- Plus: $20/mo -- full GPT-4o, DALL-E, code interpreter, Custom GPTs
- Pro: $200/mo -- unlimited access, o1-pro model
- Business: $25/user/mo -- Team workspace, admin controls, data not used for training
- Enterprise: custom pricing -- SOC 2, SSO, custom retention
**Memory/Persistence:**
- Saved memories: explicit facts the user asks ChatGPT to remember
- Chat history insights: implicit learning from past conversations
- **Critical limitation**: memory is a flat list of facts, NOT contextual understanding
- Cannot store templates or large blocks of text
- Free users get lightweight short-term continuity only
- Plus/Pro get longer-term memory
- Context window limit: ~32,768 tokens per conversation (GPT-4)
- Older context silently trimmed when window fills
**Strengths:**
- Largest user base and brand recognition
- Broadest feature set (images, voice, code, canvas, browsing)
- Custom GPTs create a marketplace/ecosystem effect
- Multimodal capabilities (vision, audio, images)
- Enterprise-grade Team/Business tiers
- Lowest entry price with Go tier at $8/mo
**Weaknesses:**
- Memory is superficial -- facts list, not structured understanding
- No workspace concept -- conversations are flat
- No knowledge graph or semantic memory
- Custom GPTs are siloed, not orchestrated
- No multi-agent coordination
- No local/desktop-native option
- No persistent project context like CLAUDE.md
- Context window truncation loses early conversation context
**Waggle Comparison:** ChatGPT has overwhelming market share and multimodal breadth, but its memory system is the weakest of any major competitor. Waggle's structured memory (FrameStore + HybridSearch + KnowledgeGraph + IdentityLayer) is vastly superior. ChatGPT has no workspace concept, no persona system, and no multi-agent orchestration. The gap is clear: ChatGPT is a general-purpose assistant; Waggle is a workspace-native agent platform.
---
### 4. Cursor
**What it is:** The fastest-growing AI code editor in history ($2B+ ARR, 1M+ paying customers as of February 2026). Built on VS Code, it provides AI-native code editing with multi-model support, background agents, and project-aware intelligence.
**Key Features:**
- Supermaven autocomplete (industry-leading)
- Agent mode: multi-file edits, terminal commands, full codebase awareness
- Background agents: spin up parallel tasks while you focus on the main problem
- Multi-model support: Claude, GPT, Gemini within the same editor
- Chat with full repository context
- Bug fixing from error traces
- Semantic code search
**Pricing:**
- Free: 2,000 completions/mo, 50 slow premium requests
- Pro: $20/mo -- 500 fast premium requests (credit-based since June 2025)
- Pro+: $60/mo -- 3x credit pool
- Business: team pricing with admin controls
**Memory/Persistence:**
- Local indexing of project codebase
- Project-aware context through indexing
- No cross-session memory system
- No knowledge graph
- Performance degrades on very large repositories
**Strengths:**
- Fastest product-market fit in SaaS history
- Background agents enable true parallel development
- Multi-model flexibility avoids vendor lock-in
- Familiar VS Code base reduces switching cost
- Strong autocomplete and inline suggestions
- Active community and rapid iteration
**Weaknesses:**
- Coding-only -- no general workspace capabilities
- No persistent memory across sessions
- No persona system
- Performance issues on large repos
- Credit-based pricing can be unpredictable (225 requests vs. old 500 under Pro)
- No structured memory or knowledge graph
- VS Code dependency limits innovation
**Waggle Comparison:** Cursor dominates the AI code editor market and is not a direct competitor to Waggle's workspace vision. However, Waggle's coder persona competes with Cursor for coding tasks. Cursor's background agents and multi-model flexibility are ahead of Waggle's current agent capabilities for pure coding. The markets are adjacent, not overlapping.
---
### 5. Windsurf (formerly Codeium)
**What it is:** An agentic AI code editor now owned by Cognition AI (acquired for ~$250M in December 2025). Its core feature is Cascade, an AI system that understands entire codebases and acts as a coding partner.
**Key Features:**
- Cascade: multi-file editing, terminal commands, full codebase understanding
- Memories: persists knowledge about codebase and workflow across sessions
- MCP support: connects Figma, Slack, Stripe, PostgreSQL, Playwright
- Code maps for codebase visualization
- SWE-1.5 model for specialized coding tasks
- App Previews and deploy functionality
**Pricing:**
- Free: 25 prompt credits/mo, unlimited Tab completions
- Pro: $15/mo -- 500 prompt credits
- Teams: $30/user/mo
- Enterprise: $60/user/mo
**Memory/Persistence:**
- Memories feature remembers coding patterns, project structure, and preferred frameworks across sessions
- More sophisticated cross-session persistence than Cursor
- Still focused on coding context, not general knowledge
**Strengths:**
- Ranked #1 in LogRocket AI Dev Tool Power Rankings (February 2026)
- Memories feature provides cross-session coding context
- MCP support for external integrations
- Competitive pricing ($15/mo Pro vs. Cursor's $20/mo)
- Cognition AI backing (also owns Devin)
- $82M ARR at time of acquisition, enterprise revenue doubling quarterly
**Weaknesses:**
- Coding-only scope
- Smaller ecosystem than Cursor or Copilot
- Cognition AI acquisition creates strategic uncertainty
- No workspace concept beyond code projects
- No multi-agent orchestration
- No general-purpose persona system
**Waggle Comparison:** Windsurf's Memories feature is the closest thing to Waggle's persistent memory in the code editor space, but it is limited to coding context. Waggle's memory system is far more comprehensive (knowledge graph, identity layer, awareness layer). Different market segment.
---
### 6. Devin (Cognition AI)
**What it is:** The first "AI software engineer" -- a fully autonomous coding agent that plans, writes, tests, deploys, and monitors code independently. Operates in its own cloud IDE with shell and browser.
**Key Features:**
- Autonomous ticket-to-PR workflow (Linear, Jira, Slack integration)
- Own cloud IDE, shell, and browser
- Dependency installation, build scripts, test execution
- Devin Wiki: auto-generated documentation with architecture diagrams
- Parallel task execution (multiple Devins simultaneously)
- Interactive cloud-based IDE environment
- Iterates on code review feedback
**Pricing:**
- Core: Pay-as-you-go starting at $20/mo minimum ($2.25/ACU, ~15 min of work per ACU)
- Team: $500/mo with 250 ACUs ($2.00/ACU)
- Enterprise: custom pricing with VPC deployment and SAML SSO
- Roughly $8-9/hour of active Devin work
**Memory/Persistence:**
- Devin Wiki provides persistent documentation
- Cloud-based state persistence within tasks
- No cross-project memory system
- No knowledge graph or semantic search
**Strengths:**
- Most autonomous coding agent available
- Full environment (IDE + shell + browser) -- no human setup needed
- Parallel execution of multiple tasks
- Strong benchmark results (83% improvement in Devin 2.0)
- Price dramatically reduced from $500/mo to $20/mo entry
- Integrates with existing project management tools
**Weaknesses:**
- Expensive at scale ($8-9/hour of work)
- Coding-only -- no general workspace capabilities
- SWE-bench score (13.86%) still shows significant limitations
- Cloud-dependent -- no local/desktop option
- No workspace or persona system
- Limited to software development tasks
**Waggle Comparison:** Devin represents a different philosophy -- fully autonomous coding vs. Waggle's human-collaborative workspace. Devin is narrower but deeper in autonomous coding. Waggle serves a broader audience with more use cases. Not directly competitive except for the coder persona.
---
### 7. GitHub Copilot
**What it is:** GitHub's AI coding assistant, integrated across VS Code, JetBrains, GitHub.com, and CLI. Offers autocomplete, chat, agent mode, autonomous coding agent, and agentic code review.
**Key Features:**
- Code completions and inline suggestions
- Chat with repository context
- Agent mode (GA on VS Code and JetBrains as of March 2026)
- Autonomous coding agent for background PR creation
- Agentic code review
- GitHub Spark for natural language app building
- Semantic code search
- Knowledge bases for Enterprise
**Pricing:**
- Free: 2,000 completions/mo, 50 chat messages
- Pro: $10/mo -- 300 premium requests
- Pro+: $39/mo -- 1,500 premium requests, all AI models (Claude Opus 4, o3)
- Business: $19/user/mo
- Enterprise: $39/user/mo -- knowledge bases, custom models
- Overage: $0.04/request
**Memory/Persistence:**
- Knowledge bases (Enterprise) for organizational context
- Repository-scoped context
- No cross-session memory
- No persistent agent state
**Strengths:**
- Deepest GitHub integration (issues, PRs, Actions, code search)
- Largest developer tool ecosystem
- Competitive pricing ($10/mo entry)
- Multi-model access at Pro+ tier
- Enterprise-grade with SSO, compliance
- Autonomous coding agent is generally available
**Weaknesses:**
- GitHub ecosystem lock-in
- No general-purpose AI capabilities
- No workspace concept
- No persistent memory
- No persona system
- Credit consumption varies unpredictably by model
**Waggle Comparison:** Copilot is the default coding AI due to GitHub integration but has no overlap with Waggle's workspace, memory, or multi-domain agent features. Complementary rather than competitive.
---
### 8. Dust.tt
**What it is:** A collaborative AI agent workspace for teams. Build custom agents, connect to company tools and knowledge, and deploy them across workflows -- all without code.
**Key Features:**
- Custom AI agent builder (no-code)
- Cross-platform knowledge access (Google Drive, Notion, Slack, Zendesk, GitHub)
- Multiple model support (GPT-4, Claude)
- "Dust Apps" for custom actions
- Enterprise controls (SSO, SCIM, SOC 2)
- Chrome extension
- Optional zero data retention
- Native integrations with business tools
**Pricing:**
- Pro: EUR 29/user/mo (~$31 USD) -- for small teams and startups
- Enterprise: custom pricing (100+ users, multiple workspaces, SSO)
- 14-day free trial
**Memory/Persistence:**
- Knowledge bases from connected tools
- Conversation history within workspace
- No structured memory system
- No knowledge graph
- Relies on connected tool data rather than built-in persistence
**Strengths:**
- Purpose-built for teams -- not adapted from a developer tool
- Wide integration ecosystem (business tools focus)
- No-code agent building accessible to non-developers
- SOC 2 compliance and enterprise security
- Clean separation between agent logic and data sources
**Weaknesses:**
- No desktop app -- web-only
- No persistent agent memory (relies on live data connections)
- No local data processing
- Expensive per-user pricing for small teams
- Limited to team/business use cases
- No coding capabilities
- No persona system with behavioral differentiation
**Waggle Comparison:** Dust is the closest team-workspace competitor to Waggle. However, Dust lacks desktop-native deployment, persistent structured memory, persona specialization, and coding capabilities. Dust's strength is its no-code agent builder and breadth of business integrations -- an area where Waggle needs improvement. Waggle's memory system and desktop-native architecture are clear differentiators.
---
### 9. Notion AI
**What it is:** AI capabilities embedded into Notion's workspace platform. Includes writing assistance, Q&A, AI Agents for multi-step tasks, Enterprise Search, and connectors to external tools.
**Key Features:**
- AI writing assistance throughout the workspace
- Ask Notion: Q&A across entire workspace
- AI Agents (Notion 3.0): autonomous multi-step tasks, up to 20 minutes of work
- Custom Agents (Notion 3.3): scheduled/triggered specialized workflows
- Dashboard views for data visualization
- Enterprise Search across connected apps (Salesforce, Slack, Google Drive)
- AI Connectors to external data sources
- Multi-model support (GPT-5.2, Claude Opus 4.5, Gemini 3)
- Mobile agent support (Notion 3.2)
**Pricing:**
- Plus: $12/user/mo (annual) -- basic AI
- Business: $20-24/user/mo -- full AI access (agents, connectors, search)
- Enterprise: custom pricing
- Custom Agent runs: $10/1,000 Notion credits (usage-based)
**Memory/Persistence:**
- Workspace IS the memory -- all Notion pages, databases, and content are persistent
- AI learns from workspace content
- No separate memory system needed -- the workspace itself is the knowledge base
- Custom Agents operate on workspace data
- No knowledge graph or vector search beyond workspace
**Strengths:**
- Largest workspace platform -- AI is embedded where people already work
- Massive existing user base
- Agents operate autonomously for up to 20 minutes
- Custom Agents enable tailored automation
- Multi-model selection
- Strong enterprise presence
- The workspace IS the persistent context
**Weaknesses:**
- Tied to Notion's workspace format
- AI capabilities are add-ons to an existing product, not core
- No desktop-native AI processing
- Agent capabilities limited to Notion operations
- Custom Agent credits add up (usage-based cost)
- No multi-agent orchestration
- No persona system
- Cannot operate on data outside Notion ecosystem without connectors
**Waggle Comparison:** Notion AI has the advantage of an enormous existing workspace user base -- AI meets users where they already are. However, Notion's AI is an enhancement to a document platform, not a purpose-built agent system. Waggle's purpose-built memory architecture, persona system, and multi-agent orchestration are more sophisticated. The key risk is that Notion's AI becomes "good enough" for most users.
---
### 10. Hermes Agent (Nous Research)
**What it is:** An open-source, self-improving AI agent with persistent memory, cross-platform messaging, and 40+ built-in tools. Launched February 2026 from Nous Research.
**Key Features:**
- Self-improving learning loop: creates skills from experience
- Three-tier memory: session, persistent, and skill memory
- 40+ built-in tools (web search, browser, file system, vision, image gen, TTS, code execution)
- Cross-platform messaging: Telegram, Discord, Slack, WhatsApp, CLI
- Subagent delegation
- Cron scheduling for recurring tasks
- SQLite + FTS5 full-text search for memory
- Multiple deployment options (local, Docker, SSH, Daytona, Modal)
- Six terminal backends
- Serverless persistence (hibernates when idle)
**Pricing:**
- Software: Free (MIT license)
- Hosting: ~$5/mo for a VPS
- AI API costs: $5-15/mo for personal use (model-dependent), up to $470+/mo for heavy enterprise usage
- Total typical cost: $10-20/mo
**Memory/Persistence:**
- Three-tier memory system is the standout feature
- Session memory: current conversation context
- Persistent memory: facts, preferences, and context surviving across weeks
- Skill memory: procedural skills created from experience that improve over time
- SQLite + FTS5 for search
- Cross-session and cross-platform persistence
**Strengths:**
- Most sophisticated open-source memory system available
- Self-improving skills learned from usage
- Extremely low cost ($10-20/mo for personal use)
- Cross-platform reach (any messaging app)
- Open source with MIT license
- Active development (v0.7.0 April 2026)
- Privacy-first (self-hosted)
- Model agnostic
**Weaknesses:**
- Requires technical setup (self-hosted)
- No GUI workspace/dashboard
- No team features or collaboration
- Early stage (v0.7.0)
- No enterprise support or SLAs
- No workspace concept
- No visual agent builder
- Small community compared to OpenClaw
**Waggle Comparison:** Hermes Agent is the most architecturally similar competitor to Waggle's memory system. Both use SQLite-based persistent memory with semantic search. However, Hermes is a personal agent with no workspace, no team features, and no GUI -- while Waggle is a full workspace platform with desktop UI, personas, and team collaboration. Waggle should study Hermes's three-tier memory and self-improving skills as inspiration for its own memory evolution.
---
### 11. Paperclip AI
**What it is:** An open-source Node.js + React platform for orchestrating teams of AI agents into structured organizations. Designed for "zero-human companies" where AI agents operate autonomously.
**Key Features:**
- Org charts, goals, tasks, and budgets for AI agent teams
- Atomic budget enforcement (no double-work, no runaway spend)
- Full traceability (every instruction, response, tool call recorded)
- Multi-agent coordination across tools (Claude Code, OpenClaw, Codex, HTTP)
- Multi-company support (one deployment, many organizations)
- React dashboard for management
**Pricing:**
- Free and open source
- 30,000+ GitHub stars within three weeks of launch (March 2026)
**Memory/Persistence:**
- Task and goal state persistence
- Audit trail as persistent record
- No personal memory system
- No knowledge graph
- Focus is on organizational state, not agent memory
**Strengths:**
- Unique "AI company" concept
- Strong governance and traceability
- Budget management prevents cost overruns
- Works with any agent backend
- Active open-source community
- Multi-company isolation
**Weaknesses:**
- Niche concept (zero-human companies)
- No personal agent use cases
- No memory/learning system
- No workspace for human users
- Requires significant technical setup
- Very early stage
**Waggle Comparison:** Paperclip operates at a different abstraction level -- it orchestrates agent companies, not human-agent workspaces. Not a direct competitor, but Waggle could learn from Paperclip's budget management and traceability patterns for its own multi-agent workflows.
---
### 12. CrewAI
**What it is:** The leading multi-agent orchestration framework. Open source with a hosted platform (CrewAI Studio). Powers 12M+ daily agent executions in production.
**Key Features:**
- Crews: teams of AI agents with role-based collaboration
- Flows: event-driven production workflows
- CrewAI Studio: visual agent builder
- Real-time tracing and observability
- Native MCP and A2A (Agent-to-Agent) support
- Integrations (Gmail, Teams, Notion, HubSpot, Salesforce, Slack)
- Self-hosted K8s/VPC deployment option
**Pricing:**
- Open source framework: Free
- Free hosted: 50 executions/mo
- Professional: $25/mo -- 100 executions
- Enterprise: custom -- up to 30,000 executions, SOC 2, SSO, PII masking
**Memory/Persistence:**
- Agent state within crew execution
- No persistent cross-session memory
- No knowledge graph
- Focused on workflow execution, not memory
**Strengths:**
- 45,900+ GitHub stars, largest multi-agent community
- 12M+ daily executions in production
- Visual studio for non-developers
- Strong enterprise features
- MCP + A2A protocol support
- Cloud and self-hosted options
**Weaknesses:**
- Framework, not end-user product
- No persistent memory
- No workspace concept
- Requires technical knowledge to build crews
- No desktop app
- No personal agent capabilities
**Waggle Comparison:** CrewAI is infrastructure for building multi-agent systems; Waggle is a finished product that includes multi-agent capabilities. CrewAI could potentially power Waggle's backend orchestration. Not competitive at the end-user level, but CrewAI's MCP + A2A support sets a standard Waggle should match.
---
### 13. Relevance AI
**What it is:** A low-code platform for building AI agent workflows, focused on sales, marketing, operations, and support use cases.
**Key Features:**
- Visual drag-and-drop workflow builder
- 9,000+ integrations (HubSpot, Salesforce, Slack, Gmail)
- Multi-agent orchestration
- Custom GPT integration
- Calling and meeting agents
- Analytics dashboard
**Pricing:**
- Free: 200 Actions/mo, 1 user
- Team: $234-349/mo -- 7,000 Actions, 5 build users, 45 end users
- Enterprise: custom
- Separate billing for Actions (workflow steps) and Vendor Credits (AI inference)
**Memory/Persistence:**
- Workflow state persistence
- No cross-session agent memory
- No knowledge graph
- Data stored in connected tools, not in platform
**Strengths:**
- Broadest integration ecosystem (9,000+)
- Visual builder accessible to non-developers
- Multi-agent workflows
- Strong sales/GTM focus
- ChatGPT integration
**Weaknesses:**
- Steep pricing jump (Free to $234/mo)
- Unpredictable credit consumption
- Steep learning curve
- No desktop app
- No persistent memory
- No workspace concept for individual users
**Waggle Comparison:** Relevance AI targets sales/GTM teams with workflow automation. Waggle targets knowledge workers with persistent memory and workspace intelligence. Different market segments with some overlap in the "AI for teams" space. Relevance's 9,000+ integrations dwarf Waggle's connector ecosystem.
---
### 14. AutoGPT / AgentGPT
**What it is:** The original autonomous AI agent projects. AutoGPT (CLI/server) and AgentGPT (browser-based) let users set goals and watch AI agents work autonomously.
**Key Features:**
- AutoGPT: visual Agent Builder, persistent AutoGPT Server, plugin system
- AgentGPT: browser-based, no setup required
- Goal decomposition and autonomous execution
- Web browsing, file interaction, data analysis
- Multiple LLM backend support
- Modular skill system (2026)
**Pricing:**
- AutoGPT: Free (open source) + API costs
- AgentGPT: Free browser version
**Memory/Persistence:**
- Improved memory management in 2026 version
- Agent state persistence within tasks
- Limited cross-session memory
**Strengths:**
- Pioneered the autonomous agent category
- Free and open source
- Large community (166K+ GitHub stars for AutoGPT)
- No setup required for AgentGPT
**Weaknesses:**
- Known for getting stuck in loops and hallucinating
- High API costs for extended tasks
- Limited reliability for production use
- No workspace concept
- No team features
- Inconsistent quality
**Waggle Comparison:** AutoGPT/AgentGPT pioneered the space but have not matured into reliable products. Waggle's supervised multi-agent approach is more practical than fully autonomous execution. Not a direct threat.
---
### 15. OpenClaw
**What it is:** The viral open-source personal AI agent (345K+ GitHub stars as of April 2026). Cross-channel persistent agent that lives across messaging platforms.
**Key Features:**
- Cross-channel persistence (start on one platform, continue on another)
- Terminal, messaging, and web interfaces
- Wide tool ecosystem
- Self-hosted with multiple deployment options
- Community plugins
**Pricing:**
- Free (open source) + hosting + API costs
**Memory/Persistence:**
- Cross-session persistence
- Cross-channel state continuity
- Less sophisticated than Hermes's three-tier system
**Strengths:**
- Massive community (345K+ GitHub stars)
- Cross-channel persistence drove viral adoption
- Active ecosystem
- Free and self-hosted
**Weaknesses:**
- Security concerns (430K+ lines of code = large attack surface)
- Inconsistency in multi-tool workflows
- No workspace or team features
- No GUI dashboard
- Requires technical setup
- No enterprise support
**Waggle Comparison:** OpenClaw demonstrates massive demand for persistent AI agents but lacks Waggle's structured memory, workspace UI, team features, and enterprise readiness. OpenClaw's popularity validates Waggle's core thesis.
---
## Feature Comparison Matrix
| Feature | Waggle OS | Claude.ai | ChatGPT | Cursor | Dust.tt | Notion AI |
|---------|-----------|-----------|---------|--------|---------|-----------|
| **Desktop Native App** | Yes (Tauri) | No | No (Electron wrapper) | Yes (VS Code) | No | Yes (Electron) |
| **Persistent Memory** | SQLite + Vector + KG | Project Memory | Fact list | Local index | Via connections | Workspace data |
| **Knowledge Graph** | Yes | No | No | No | No | No |
| **Vector/Semantic Search** | Yes (sqlite-vec) | No | No | Yes (local) | No | No |
| **Persona System** | 22 personas | No | Custom GPTs | No | Custom agents | Custom agents |
| **Multi-Agent Orchestration** | Yes (sub-agents) | Background agents | No | Background agents | Yes | Custom agents |
| **Workspace Concept** | Yes (per-project) | Projects | No | Project dirs | Team workspace | Full workspace |
| **Team Collaboration** | Teams tier | Team plan | Team/Business | Business | Yes (core) | Yes (core) |
| **Coding Capabilities** | Yes (coder persona) | Yes (Claude Code) | Yes (interpreter) | Yes (core) | No | No |
| **Non-Coding Work** | Yes (13+ domain personas) | Yes (general) | Yes (general) | No | Yes (general) | Yes (general) |
| **MCP Support** | Yes | Yes (6,000+ apps) | Plugins/GPTs | No | Native integrations | Connectors |
| **Skill Marketplace** | Yes | Skills ecosystem | GPT Store | Extensions | Dust Apps | Templates |
| **Local Data Processing** | Yes (SQLite) | No | No | Yes | No | No |
| **Self-Hosted Option** | Desktop app | No | No | No | No | No |
| **Enterprise Tier** | Yes (KVARK) | Team/Enterprise | Enterprise | Business | Enterprise | Enterprise |
| **Offline Capability** | Partial | No | No | Partial | No | No |
| **Identity Persistence** | IdentityLayer | Flat memory | Fact list | None | None | Workspace |
| **Behavioral Spec** | BEHAVIORAL_SPEC v2.0 | CLAUDE.md | System prompt | None | Agent config | Agent config |
| **Model Flexibility** | Multiple | Anthropic only | OpenAI only | Multi-model | Multi-model | Multi-model |
**Pricing Comparison:**
| Tier | Waggle OS | Claude.ai | ChatGPT | Cursor | Dust.tt | Notion AI |
|------|-----------|-----------|---------|--------|---------|-----------|
| **Free** | Solo (Free) | Free | Free | Free | 14-day trial | Plus ($12/user/mo) |
| **Individual** | Basic ($15/mo) | Pro ($20/mo) | Plus ($20/mo) | Pro ($20/mo) | N/A | N/A |
| **Team** | Teams ($79/mo/seat) | Team ($25-30/user/mo) | Business ($25/user/mo) | Business (TBD) | EUR 29/user/mo | Business ($20-24/user/mo) |
| **Enterprise** | KVARK (custom) | Enterprise | Enterprise | Enterprise | Custom | Custom |
---
## Waggle's Unique Differentiators
### 1. Structured Persistent Memory Architecture
No competitor has Waggle's five-layer memory system: FrameStore + HybridSearch + KnowledgeGraph + IdentityLayer + AwarenessLayer. Claude Code uses flat markdown files. ChatGPT uses a fact list. Notion relies on workspace data. Only Hermes Agent approaches this sophistication, and it lacks a GUI.
### 2. Desktop-Native + Local-First
Waggle is the only full workspace AI platform built on Tauri 2.0 with local SQLite processing. This provides privacy, offline capability, and lower latency. Competitors are either cloud-only (Claude.ai, ChatGPT, Dust) or editor-only (Cursor, Windsurf).
### 3. Persona Specialization System
22 domain-specific personas with behavioral specs, tool filtering, and workspace affinity. No competitor offers this depth of role specialization within a single platform. Custom GPTs are the closest equivalent but lack behavioral enforcement and workspace integration.
### 4. Workspace-Scoped Intelligence
One brain per project with persistent context that compounds over time. The workspace concept goes beyond Claude.ai's Projects or Notion's pages -- it includes memory, personas, workflows, and connectors all scoped to a single work context.
### 5. KVARK Enterprise Funnel
The strategic architecture of Solo (free) through Teams to KVARK enterprise creates a unique go-to-market path. No competitor has a desktop-to-enterprise-platform upsell pathway like this.
### 6. Multi-Agent Orchestration for Non-Coding Tasks
While Cursor and Claude Code offer background agents for coding, Waggle provides multi-agent orchestration across business domains (research, writing, analysis, sales, marketing, legal, finance). This breadth is unique.
---
## Waggle's Competitive Gaps
### Critical Gaps
1. **Integration Ecosystem Size**: Claude.ai has 6,000+ MCP connections, Relevance AI has 9,000+ integrations, and Waggle's connector system is comparatively limited. This is the single biggest competitive weakness for team adoption.
2. **Market Awareness and Community**: OpenClaw has 345K GitHub stars, CrewAI has 45K, AutoGPT has 166K. Waggle has minimal open-source presence and community. In a market where community drives adoption, this is a significant disadvantage.
3. **Model Quality Gap**: Waggle wraps models from providers who also compete directly (Anthropic's Claude, OpenAI's GPT). If Claude.ai or ChatGPT memory improves significantly, Waggle's value proposition narrows. Waggle does not control the core intelligence layer.
### Significant Gaps
4. **Mobile Experience**: Notion AI is on mobile. ChatGPT is on mobile. Claude.ai has mobile apps. Waggle is desktop-only. Knowledge workers increasingly work across devices.
5. **No-Code Agent Building**: Dust, Relevance AI, and CrewAI Studio all offer visual agent builders. Waggle's persona system is pre-built, not user-customizable through a visual builder.
6. **Real-Time Collaboration**: Notion and Dust are built for real-time team collaboration. Waggle's team features are still developing.
7. **Pricing Perception at Team Tier**: Waggle's Teams at $79/mo/seat is significantly higher than Claude Team ($25-30), ChatGPT Business ($25), Dust (EUR 29), and Notion Business ($20-24). The memory and workspace advantages must clearly justify the 2-3x premium.
### Emerging Gaps
8. **Self-Improving Agents**: Hermes Agent's learning loop (skills from experience that improve over time) is a capability Waggle does not yet have. If persistent agents become the standard, self-improvement will be expected.
9. **A2A Protocol Support**: CrewAI supports the Agent-to-Agent protocol. As multi-agent interoperability becomes important, Waggle needs to support emerging standards.
10. **Background/Autonomous Execution**: Claude Code's Dispatch feature and Cursor's background agents let work continue without user presence. Waggle's agent execution model requires more active user involvement.
---
## Market Positioning Recommendation
### Current Market Segments
```
CODING FOCUS
|
Cursor | Claude Code
Windsurf | GitHub Copilot
Devin |
|
DEVELOPER ----------------+---------------- KNOWLEDGE WORKER
|
CrewAI | Claude.ai
AutoGPT | ChatGPT
OpenClaw | Notion AI
| Dust.tt
GENERAL FOCUS
```
### Waggle's Target Position
Waggle should position itself at the intersection of **knowledge worker** and **general focus**, with strong overlap into the developer quadrant through its coder persona. The specific positioning:
**"The workspace OS that remembers everything and gets smarter over time."**
### Positioning Pillars
1. **Memory-First**: Lead with the structured memory story. No competitor matches Waggle's five-layer memory architecture. Position against ChatGPT's "fact list" and Claude.ai's "project files" with a clear narrative: "Other AI assistants forget. Waggle remembers, connects, and learns."
2. **Workspace-Native**: Unlike chat tools (Claude.ai, ChatGPT) that treat each conversation as ephemeral, Waggle creates a persistent workspace where context compounds. Unlike Notion AI that bolts AI onto a document tool, Waggle is AI-first with workspace as the delivery mechanism.
3. **Desktop-First Privacy**: In a market moving toward cloud-only SaaS, Waggle's Tauri desktop app with local SQLite processing is a genuine differentiator for privacy-conscious professionals and regulated industries. Position against cloud-only competitors on data sovereignty.
4. **Persona Specialization**: 22 personas vs. ChatGPT's generic assistant or Claude.ai's single personality. The right persona for the right task -- researcher, analyst, legal professional, finance owner -- each with domain-tuned behavior.
5. **KVARK Enterprise Pathway**: For enterprise sales, Waggle is not just a tool -- it is the on-ramp to KVARK's sovereign enterprise AI platform. This creates a unique strategic narrative unavailable to any competitor.
### Recommended Competitive Priorities
| Priority | Action | Rationale |
|----------|--------|-----------|
| **P0** | Expand MCP connector ecosystem to 50+ integrations | Closes the biggest gap vs. Claude.ai and Dust |
| **P0** | Ship Stripe billing and tier enforcement | Unlocks revenue and validates pricing |
| **P1** | Build self-improving memory (learn from usage patterns) | Matches Hermes Agent capability, extends lead |
| **P1** | Launch public community / open-source components | Builds awareness in a market driven by GitHub stars |
| **P2** | Mobile companion app (read-only + voice) | Addresses cross-device gap vs. ChatGPT/Claude/Notion |
| **P2** | Visual workflow/agent builder | Matches Dust/Relevance/CrewAI studio capabilities |
| **P3** | A2A protocol support | Future-proofs for multi-agent interoperability |
| **P3** | Background autonomous execution | Matches Claude Code Dispatch / Cursor background agents |
### Key Competitive Messaging
**vs. ChatGPT/Claude.ai:** "They chat. We work. Waggle is not a conversation -- it is your AI workspace that remembers every insight, connects every dot, and gets smarter with every session."
**vs. Cursor/Windsurf:** "They code. We do everything. From research to writing to analysis to coding -- 22 specialized personas in one workspace."
**vs. Dust/Notion AI:** "They add AI to existing tools. We built the tool around AI. Desktop-native, memory-first, workspace-scoped intelligence."
**vs. Hermes/OpenClaw:** "They require you to be a developer. Waggle gives you persistent AI with a polished workspace anyone can use."
---
*Analysis conducted April 2026. Market data sourced from web research, product documentation, and pricing pages.*
Sources:
- [Claude Code Overview](https://code.claude.com/docs/en/overview)
- [Claude Code Product Page](https://www.anthropic.com/product/claude-code)
- [Claude Pricing](https://claude.com/pricing)
- [Anthropic Pricing Updates](https://theaiinsider.tech/2026/04/06/anthropic-updates-pricing-model-for-claude-code-restricts-third-party-tool-usage/)
- [Claude Code Memory Documentation](https://code.claude.com/docs/en/memory)
- [ChatGPT Plans Comparison](https://intuitionlabs.ai/articles/chatgpt-plans-comparison)
- [ChatGPT Pricing](https://chatgpt.com/pricing/)
- [ChatGPT Memory FAQ](https://help.openai.com/en/articles/8590148-memory-faq)
- [Cursor Pricing](https://cursor.com/pricing)
- [Cursor Review 2026](https://www.nxcode.io/resources/news/cursor-ai-review-2026-features-pricing-worth-it)
- [Windsurf Pricing](https://windsurf.com/pricing)
- [Windsurf Review 2026](https://hackceleration.com/windsurf-review/)
- [Devin 2.0 Launch](https://venturebeat.com/programming-development/devin-2-0-is-here-cognition-slashes-price-of-ai-software-engineer-to-20-per-month-from-500)
- [Devin Pricing](https://www.lindy.ai/blog/devin-pricing)
- [GitHub Copilot Plans](https://github.com/features/copilot/plans)
- [GitHub Copilot 2026 Guide](https://www.nxcode.io/resources/news/github-copilot-complete-guide-2026-features-pricing-agents)
- [Dust.tt Pricing](https://dust.tt/home/pricing)
- [Dust.tt Platform](https://dust.tt/)
- [Notion AI Pricing](https://www.notion.com/pricing)
- [Notion AI Review 2026](https://max-productive.ai/ai-tools/notion-ai/)
- [Notion Custom Agent Pricing](https://www.notion.com/help/custom-agent-pricing)
- [Hermes Agent](https://hermes-agent.nousresearch.com/)
- [Hermes Agent Cost Analysis](https://www.getopenclaw.ai/blog/hermes-agent-cost)
- [Paperclip AI](https://paperclip.ing/)
- [Paperclip on Medium](https://medium.com/@creativeaininja/paperclip-the-open-source-platform-turning-ai-agents-into-an-actual-company-7348015c5bf7)
- [CrewAI Platform](https://crewai.com/)
- [CrewAI Pricing](https://www.lindy.ai/blog/crew-ai-pricing)
- [Relevance AI Pricing](https://relevanceai.com/pricing)
- [Relevance AI Review](https://www.salesrobot.co/blogs/relevance-ai-review)
- [AutoGPT](https://agpt.co/)
- [AgentGPT](https://agentgpt.reworkd.ai/)
- [OpenClaw vs Hermes Agent](https://thenewstack.io/persistent-ai-agents-compared/)
- [AI Agent Market Landscape 2026](https://www.stackone.com/blog/ai-agent-tools-landscape-2026/)
- [Top AI Agent Workspace Platforms](https://fast.io/resources/top-ai-agent-workspace-platforms/)

View File

@@ -0,0 +1,432 @@
# Waggle OS -- Design System Audit
**Date:** April 2026
**Scope:** `apps/web/` (primary frontend), `app/` (Tauri app), shared CSS and design tokens
**Method:** Automated deep scan of all CSS files, component source, and design token definitions
---
## Summary
**Overall Score: 6.3 / 10**
Waggle OS has a distinctive and intentional design identity ("Honey on Dark Steel") that is rare among AI products. The Hive DS token system is well-defined at the CSS variable level. However, there is a significant gap between the *defined* design system and its *applied* usage. Arbitrary Tailwind values are rampant (433 instances of `text-[Npx]` across the web app), two separate CSS systems exist for the two app targets with divergent token definitions, and accessibility is weak at the fundamentals level (tiny text, no responsive design, inconsistent focus states). The product looks good in screenshots but would not survive a WCAG audit.
---
## Dimension Scores
### 1. Color Consistency -- 7/10
**What exists:**
The Hive DS defines a comprehensive palette in `app/src/styles/globals.css`:
- Hive gray scale: 12 stops (`--hive-950` through `--hive-50`)
- Honey scale: 8 stops (`--honey-600` through `--honey-50`) plus `--honey-glow` and `--honey-pulse`
- Status colors: 5 named (`--status-healthy`, `--status-warning`, `--status-error`, `--status-info`, `--status-ai`)
- Semantic surfaces: 5 (`--surface-card`, `--surface-panel`, `--surface-overlay`, `--surface-hover`, `--surface-selected`)
- Shadows: 4 (`--shadow-card`, `--shadow-elevated`, `--shadow-overlay`, `--shadow-honey`)
- Knowledge graph node colors: 5 (`--kg-person`, `--kg-project`, `--kg-concept`, `--kg-org`, `--kg-default`)
**What is actually used:**
Components mostly use the semantic Tailwind tokens (`text-foreground`, `bg-card`, `text-primary`, etc.) which is correct. However, there are systemic leaks:
- **Direct Tailwind color classes bypass the design system.** Status colors are applied via `text-emerald-400`, `text-amber-400`, `text-violet-400`, `text-cyan-400`, `text-orange-400`, `text-sky-400`, `text-destructive` rather than through the defined `--status-*` tokens. This means status colors are hardcoded in 50+ locations across OS component files.
- `CockpitApp.tsx:66` -- `text-emerald-400` / `text-amber-400` inline instead of referencing status tokens
- `Desktop.tsx:63-75` -- Each app icon uses a different Tailwind color (`text-amber-300`, `text-cyan-400`, `text-emerald-400`, `text-violet-400`, `text-orange-400`)
- `VaultApp.tsx:66-71` -- TYPE_BADGES use `bg-sky-500/20 text-sky-400`, `bg-emerald-500/20 text-emerald-400`, etc.
- `CapabilitiesApp.tsx:7-16` -- Trust levels and category colors hardcoded as Tailwind classes
- **Two divergent CSS systems exist.** `app/src/styles/globals.css` defines HSL values one way (`--background: 222 20% 4%`), while `apps/web/src/index.css` defines them differently (`--background: 30 6% 8%`). The hue families are completely different (222 cold blue vs 30 warm amber). This means the Tauri app and web app render different colors from the "same" design system.
- **Inline hex values in SVG.** `MemoryApp.tsx:62,73` uses `stroke="hsl(38, 92%, 50%)"` and `fill="hsl(38, 92%, 50%)"` directly instead of referencing a CSS variable.
- **UserProfileApp.tsx:59-61** -- Default brand colors hardcoded as hex (`#D4A84B`, `#1a1a1a`, `#3b82f6`). The accent `#3b82f6` (Tailwind blue-500) is not part of the Hive DS palette at all.
**Fix recommendations:**
1. Create Tailwind theme extensions for status colors: `text-status-healthy`, `bg-status-warning/20`, etc., mapped to the existing `--status-*` CSS variables.
2. Reconcile the two CSS systems. The `apps/web/src/index.css` warm-amber base and `app/src/styles/globals.css` cold-blue base need to converge on one.
3. Replace all inline `hsl()` and hex values in TSX files with CSS variable references.
---
### 2. Typography Hierarchy -- 4/10
**What exists:**
- Display font: Space Grotesk (headings, labels) via `.font-display` utility
- Body font: DM Sans (web app) / Inter (Tauri app) -- another divergence
- Mono font: JetBrains Mono / Cascadia Code / Fira Code
- Body font size set to `13px` in `app/src/styles/globals.css`
- Chat prose styles are well-defined: h1=18px, h2=16px, h3=14px, p=14px, code=13px
**What is actually used -- the font size disaster:**
Arbitrary `text-[Npx]` values across `apps/web/src/**/*.tsx`: **433 total instances**.
Breakdown by size:
| Size | Count | WCAG Status |
|------|-------|-------------|
| `text-[7px]` | ~2 | FAIL -- unreadable |
| `text-[8px]` | ~8 | FAIL -- nearly unreadable |
| `text-[9px]` | ~25 | FAIL -- below minimum |
| `text-[10px]` | ~45 | FAIL -- below WCAG 12px minimum for body text |
| `text-[11px]` | ~10 | BORDERLINE |
| `text-[12px]` | ~7 | PASS (barely) |
Plus standard Tailwind classes in OS components: **460 instances** of `text-xs` (12px), `text-sm` (14px), `text-base`, `text-lg`, `text-xl`, `text-2xl`, `text-3xl`.
The worst offenders:
- `StatusBar.tsx` -- Almost all content is `text-[10px]`: workspace name, model name, token count, cost. This is the bar users see constantly.
- `ModelPilotCard.tsx` -- 16 instances of arbitrary sizes from `text-[8px]` to `text-[10px]`. The 3-lane model selector is a wall of microscopic text.
- `Dock.tsx:121,144` -- Hover labels are `text-[10px]`.
- `WorkspaceBriefing.tsx:70` -- Memory stats at `text-[11px]`.
- `SpawnAgentDialog.tsx` -- 11 instances of `text-[10px]`.
**The core problem:** There is no defined type scale. Developers pick whatever pixel value feels right at the time. The result is at least **10 distinct font sizes** (`7px, 8px, 9px, 10px, 11px, 12px, 13px, 14px, 16px, 18px`) used across the app, with no documented hierarchy.
**Fix recommendations:**
1. Define a type scale in the design tokens: `--text-micro: 11px`, `--text-caption: 12px`, `--text-body-sm: 13px`, `--text-body: 14px`, `--text-title: 16px`, `--text-heading: 20px`, `--text-display: 24px`.
2. Map these to Tailwind utilities and ban arbitrary `text-[Npx]` values via ESLint.
3. **Eliminate all text below 11px.** The `text-[7px]`, `text-[8px]`, and `text-[9px]` instances need to be bumped to at minimum 11px. Nothing in a productivity app needs to be 8 pixels tall.
4. The StatusBar and ModelPilotCard need a redesign to work at readable sizes.
---
### 3. Spacing Rhythm -- 7/10
**What exists:**
The Tailwind 4px grid is used consistently in most places. Components use standard Tailwind spacing: `p-2`, `p-3`, `p-4`, `gap-1.5`, `gap-2`, `gap-3`, `mb-4`, etc.
**What is used well:**
- Very few arbitrary spacing values. The grep for `p-[`, `m-[`, `gap-[`, `space-[` found almost no custom component instances (only shadcn UI library internals like `p-[1px]` in scroll-area).
- Border radius is consistent at `--radius: 0.75rem` (12px) with `rounded-xl`, `rounded-lg` variations.
- Cards use consistent padding patterns: `p-3` for compact, `p-4` for standard.
**Minor issues:**
- Window sizes are hardcoded pixel values in `Desktop.tsx:58-76`: `"520px"`, `"560px"`, `"640px"`, `"480px"`, etc. These should be tokens or at minimum constants.
- `EventsApp.tsx:176` uses `paddingLeft: ${depth * 20 + 8}px` for tree indentation -- calculated inline.
**Fix recommendations:**
1. Extract window dimensions to a constant map or config.
2. Replace calculated inline padding with Tailwind `pl-*` classes using data attributes or CSS custom properties for depth.
---
### 4. Component Consistency -- 6/10
**What exists:**
Two separate shadcn/ui component libraries:
- `app/src/components/ui/` -- 21 components (Tauri app). Uses `@base-ui/react` primitives, newer shadcn patterns with `data-slot` attributes and `class-variance-authority`.
- `apps/web/src/components/ui/` -- 49 components (web app). Uses `@radix-ui/react-*` primitives, standard shadcn patterns with `forwardRef`.
These are **two completely different component libraries** with different underlying primitives, different APIs, and different styling approaches. The `app/` Button uses `@base-ui/react/button` with CVA variants including `xs`, `sm`, `default`, `lg`, `icon`, `icon-xs`, `icon-sm`, `icon-lg`. The `apps/web/` Button uses `@radix-ui` with `default`, `sm`, `lg`, `icon` sizes.
**Custom components in `apps/web/src/components/os/`:**
- **Buttons are inconsistent.** Some views use the shadcn `<Button>` component, but many views construct buttons inline:
- `AgentsApp.tsx:237` -- `<input ... className="w-full text-xs bg-secondary/30 border border-border/30 rounded-lg pl-8 pr-3 py-2">` (hand-rolled input, not shadcn Input)
- `CreateAgentForm.tsx:68,85,88,91` -- All inputs are hand-rolled `<input>` elements with bespoke classes
- `CreateGroupForm.tsx:66,68` -- Same pattern: hand-rolled inputs
- `SettingsApp.tsx:166,269` -- `<input>` with custom `bg-muted/50 border border-border/50 rounded-lg`
- `GroupDetail.tsx:201` -- Another hand-rolled input
- **Cards are mostly consistent.** Most views use `bg-card`, `border border-border/30`, `rounded-xl` patterns consistently, though not all use the shadcn `<Card>` component.
- **Focus styles diverge.** Hand-rolled inputs use `focus:outline-none focus:border-primary/50` while shadcn components use `focus-visible:ring-2 focus-visible:ring-ring`. These are visually different focus indicators.
**Fix recommendations:**
1. Pick ONE component library. The web app (`apps/web/`) is the primary frontend per project memory. Standardize on its shadcn/ui library.
2. Replace all hand-rolled `<input>` elements with the shadcn `<Input>` component. There are at least 10-15 instances of bespoke inputs.
3. Create an `<IconButton>` wrapper if the shadcn Button icon variant doesn't cover all use cases.
4. Standardize focus styles project-wide: `focus-visible:ring-2 focus-visible:ring-ring` (the shadcn pattern).
---
### 5. Responsive Behavior -- 2/10
**This is intentionally desktop-only**, which is acknowledged in the UX analysis. However, even for a desktop-only app, there are problems.
**Evidence:**
- Responsive breakpoint utilities (`sm:`, `md:`, `lg:`, `xl:`) appear in the web app, but **only inside shadcn/ui library components** (alert-dialog, dialog, sheet, sidebar, calendar, breadcrumb). Zero custom OS components use responsive utilities.
- Root container: `w-screen h-screen overflow-hidden` -- no flexibility.
- Window sizes are hardcoded pixels.
- The 5-column template grid in `OnboardingWizard.tsx` and the 4-column persona grid have no responsive fallbacks.
- No `min-width` media query or warning for narrow viewports.
**Fix recommendations:**
1. Add a minimum viewport warning: "Waggle requires a screen width of at least 1024px."
2. Make the OnboardingWizard grids responsive: 5 columns on wide screens, 3 on narrower, 2 on smallest.
3. Add `min-w-[1024px]` to the root container to prevent layout breakage.
---
### 6. Dark Mode -- 8/10
**Strengths:**
- The dark theme is the primary and well-defined theme. Every token has a dark value.
- **A full light theme exists** in `app/src/styles/globals.css` under `:root[data-theme="light"]`, with warm beeswax/ivory palette. This includes inverted hive scale, adjusted honey values for contrast, light shadows, and light semantic surfaces. The scrollbar and honeycomb background also have light variants.
- Bee image variants for light mode exist (`bee-orchestrator-light.png`, etc.).
- The `apps/web/src/index.css` does NOT define a light theme, meaning the web app is dark-only.
**Weaknesses:**
- Light theme exists in CSS but there appears to be no UI toggle to activate it (per UX analysis: "No dark/light mode toggle -- only dark theme exists").
- The light theme only exists in the Tauri app's CSS, not the web app's. This is a gap.
**Fix recommendations:**
1. Add a theme toggle to Settings (General tab).
2. Port the light theme from `app/src/styles/globals.css` to `apps/web/src/index.css`.
3. Test all components in light mode -- the status colors (`emerald-400`, `amber-400`, etc.) will likely have contrast issues on a light background.
---
### 7. Animation -- 8/10
**Strengths:**
The animations are purposeful, restrained, and on-brand:
- **Boot sequence:** Spring-based logo entrance, sequential phase text with fade transitions, progress bar animation, phase dot scaling. All using framer-motion. Duration is proportional (600ms per phase). (`BootScreen.tsx`)
- **Window management:** `window-open` animation (scale 0.9 + translateY to normal), minimize shrinks to dock. (`AppWindow.tsx`, `tailwind.config.ts`)
- **Dock:** Spring-based hover animation (scale 1.2, y: -8) with `dock-bounce` keyframe. Playful without being distracting. (`Dock.tsx`)
- **Overlays:** Consistent pattern -- backdrop fade + panel scale from 0.95 to 1. (`GlobalSearch.tsx`, `PersonaSwitcher.tsx`, etc.)
- **Custom Hive animations in CSS:** `honey-pulse` (memory save), `heartbeat` (health dot), `float` (bee mascot), `hex-cursor` (streaming), `token-fade` (token streaming), `send-flash` (input border), `hex-spin` (loading), `card-enter` (card entrance). All defined in `globals.css`.
- **Loading states:** Consistent use of `Loader2` from Lucide with `animate-spin`, found in 25+ components.
- **Streaming indicator:** Three bouncing dots with staggered `animationDelay` (`TextBlock.tsx:17-19`) plus a pulsing cursor bar.
**Minor issues:**
- `FilesApp.tsx:450` uses `animate-bounce` on the upload icon, which feels more playful than necessary for a file upload zone.
- The `fade-up` animation (0.4s) is defined but usage is limited.
**Fix recommendations:**
1. Consider reducing the boot screen total duration for returning users (currently ~4.8s).
2. The `animate-bounce` on file upload could be toned down to `animate-pulse`.
---
### 8. Accessibility -- 3/10
**This is the weakest dimension.**
**Text size failures:**
- 97 instances of text below 10px (`text-[7px]`, `text-[8px]`, `text-[9px]`) across the web app.
- The StatusBar, ModelPilotCard, and ModelSelector are built almost entirely at 9-10px sizes.
- WCAG SC 1.4.4 requires text to be resizable to 200% without loss of content. At 8-9px base, 200% zoom is still only 16-18px -- barely readable.
**Contrast concerns:**
- `text-muted-foreground` (`#5a6380` / HSL 225 12% 50%) on `--background` (`#08090c`): contrast ratio is approximately 3.5:1. WCAG AA requires 4.5:1 for normal text. This fails.
- `honey-500` (`#e5a000`) on dark background (`#08090c`): approximately 7.5:1 -- passes AA.
- `text-emerald-400` on dark: approximately 8:1 -- passes.
- `text-amber-400` on dark: approximately 7:1 -- passes.
- The muted foreground color is used extensively across all apps for secondary text, labels, and helper text. This is a systematic contrast failure.
**ARIA attributes:**
- **Good:** `AppWindow.tsx` has `role="dialog"` and `aria-label={title}`. Window control buttons have `aria-label` ("Minimize window", "Toggle fullscreen", "Close window"). StatusBar buttons have `aria-label`. Dock items have `aria-label`. The shadcn components include proper ARIA attributes from Radix primitives.
- **Bad:** Most custom interactive elements (cards that act as buttons, clickable divs, tab-like interfaces built with `<button>` arrays) lack ARIA roles and states. The tab interfaces in `AgentsApp.tsx`, `VaultApp.tsx`, `SettingsApp.tsx`, and `CapabilitiesApp.tsx` are all built with `<button>` elements styled as tabs but without `role="tablist"`, `role="tab"`, or `aria-selected`.
**Focus management:**
- shadcn components use `focus-visible:ring-2 focus-visible:ring-ring` consistently.
- Hand-rolled inputs use `focus:outline-none focus:border-primary/50` -- visible but less prominent.
- Many interactive divs (clickable cards, persona grid items, template selections in onboarding) have no visible focus indicator at all.
- No skip-to-content link.
- No focus trap in overlays (though click-outside-to-close exists).
**Keyboard navigation:**
- Global keyboard shortcuts are comprehensive (Ctrl+K, Ctrl+Tab, Ctrl+Shift+P, etc.).
- Within individual apps, keyboard navigation is limited. Tab order follows DOM order but many interactive elements are not focusable.
**Fix recommendations (priority order):**
1. **Increase `--muted-foreground` contrast.** Change from `#5a6380` to at minimum `#7d869e` (`--hive-300`) for AA compliance.
2. **Eliminate all text below 11px.** This is a hard accessibility requirement.
3. **Add `role="tablist"` / `role="tab"` / `aria-selected`** to all custom tab interfaces (at least 5 views).
4. **Add focus-visible indicators** to all interactive elements (clickable cards, persona items, template selections).
5. **Add focus trap** to overlay components (or verify framer-motion handles it).
6. **Add skip link** for keyboard users.
---
### 9. Information Density -- 6/10
**Well-balanced views:**
- `DashboardApp.tsx` -- Clean 2-column grid with cards. Good use of whitespace.
- `ChatApp.tsx` -- The chat area itself is clean. The block-based rendering prevents wall-of-text.
- `BootScreen.tsx` -- Minimal and focused.
- `Desktop.tsx` (empty state) -- Beautiful: centered logo, subtle animation, dock hint.
**Overly dense views:**
- **StatusBar** -- Packs workspace name, model, token count, cost, search, notifications, wifi status, decorative volume/battery, date, and clock into a 32px bar. At `text-[10px]`, this is a pixel-packed nightmare.
- **ModelPilotCard** -- The 3-lane model selector crams lane title, description, model name, cost indicator, provider, current badge, and switch buttons into tiny cards. Text ranges from 8px to 10px. Users will need a magnifying glass.
- **OnboardingWizard Step 4** -- 15 templates in a 5-column grid. Each card has icon, name, and description. On screens narrower than 1400px, this will be unreadable.
- **SettingsApp.tsx** -- 7 tabs with dense content in each. The Permissions tab alone has auto-approve toggle, always-require list, and explanatory text in a small window.
- **FilesApp.tsx** -- At 1,176 lines, the file manager tries to be a full IDE: tree view, preview, upload, rename, delete, context menu, syntax highlighting, drag-drop. The split-pane layout works but the metadata badges use `text-[9px]`.
**Fix recommendations:**
1. StatusBar: Remove decorative Volume/Battery icons. Move token count and cost to a hover tooltip or the Cockpit view.
2. ModelPilotCard: Increase minimum text to 11px. Consider a different layout (vertical stack instead of 3-column).
3. OnboardingWizard: Use 3 columns max for templates, with a category filter or search.
---
### 10. Polish -- 7/10
**Loading states -- GOOD:**
Loading states are consistently handled across the app. Every data-fetching view has a loading spinner:
- `Loader2 className="animate-spin"` pattern used in 25+ components
- `CockpitApp.tsx` shows `RefreshCw` icon spinning during refresh
- `CreateWorkspaceDialog.tsx` shows loading spinners during folder creation, AI generation, and saving
- Consistent pattern: centered spinner with optional text
**Empty states -- MODERATE:**
- `MemoryApp.tsx:211` -- "No memories found" with muted text
- `AgentsApp.tsx:253` -- "No agents found" with muted text
- `CapabilitiesApp.tsx:222` -- "No {tab} packs found"
- `FilesApp.tsx:648` -- "Empty directory"
- `MarketplaceApp.tsx:171` -- Context-aware empty state ("No packages installed yet" vs "No results for...")
- `KGViewer` (MemoryApp) -- Network icon + "No knowledge graph data"
- **Missing:** No empty state for DashboardApp when there are no workspaces. No empty state for EventsApp when there are no events.
**Error states -- GOOD:**
- `CockpitApp.tsx:77-80` -- Offline banner with AlertTriangle icon and destructive styling
- `ErrorBoundary.tsx` -- App-level error catch
- `VaultApp.tsx` -- Toast notifications for validation errors
- Network offline detection throughout (`useOfflineStatus` hook)
**Hover states -- EXCELLENT:**
- 272 `hover:` utility uses across OS components
- 298 `transition` uses across OS components
- Consistent hover patterns: `hover:bg-muted`, `hover:text-foreground`, `hover:border-primary/50`
- The `waggle-interactive`, `waggle-card-lift`, `waggle-nav-hover`, and `waggle-press` utility classes in `waggle-theme.css` provide standardized hover/active behaviors
- Chat messages show copy and pin buttons on hover
**Micro-interactions:**
- `send-flash` animation on chat send
- `honey-pulse` animation on memory save
- `heartbeat` animation on health dots
- `hex-cursor` blinking for streaming state
- Dock items bounce on hover (spring animation)
- Window snap preview shows before drop
**Fix recommendations:**
1. Add empty state illustrations for DashboardApp (no workspaces) and EventsApp (no events).
2. Consider skeleton loading states instead of spinner-only for content-heavy views (DashboardApp, AgentsApp).
---
## AI Slop Detection
**Score: 2/10 sloppiness (meaning: mostly clean)**
**Gratuitous gradients:**
- Only one gradient found: `Desktop.tsx:203` uses `linear-gradient(90deg, transparent, hsl(var(--primary) / 0.3), transparent)` for a decorative divider line on the empty desktop. This is tasteful, not gratuitous.
- `Desktop.tsx:189-190` uses a radial gradient mask on the logo. Functional, not decorative.
- No purple-to-blue gradient defaults anywhere. The accent purple (`#a78bfa`) is used sparingly and intentionally for AI activity indicators.
**Glass morphism:**
- Used extensively: `glass` and `glass-strong` utility classes. Found in 17 components (`backdrop-blur-sm` or `backdrop-blur`).
- The glass morphism is part of the intentional OS metaphor (Dock, StatusBar, window snap preview, overlays). It is consistent and purposeful, not slapped on randomly.
- Overlay backdrops consistently use `bg-background/60 backdrop-blur-sm` -- a unified pattern.
- **Verdict:** Intentional design choice, not AI slop.
**Generic patterns:**
- `App.css` in the web app (`apps/web/src/App.css`) is **pure Vite scaffold CSS** that was never cleaned up. It contains `.logo`, `.card`, `.read-the-docs`, and `logo-spin` animation from the default Vite React template. This is dead code.
- No "inspired by Vercel" black-and-white defaults. The Hive DS color palette is distinctive.
- No gratuitous purple-to-blue gradients.
- No generic "glassmorphism card with gradient border" patterns that scream AI-generated.
**Verdict:** The design is authentically crafted, not AI-generated slop. The honey/dark theme is distinctive and consistent. The one flag is the dead `App.css` scaffold that should be deleted.
---
## Design Token Inventory
### What Exists (Defined)
| Category | Count | Location |
|----------|-------|----------|
| Hive gray scale | 12 stops | `app/src/styles/globals.css` |
| Honey scale | 8 stops + 2 special | `app/src/styles/globals.css` |
| shadcn semantic colors | 16 vars | `app/src/styles/globals.css` |
| Status colors | 5 | `app/src/styles/globals.css` |
| Semantic surfaces | 5 | `app/src/styles/globals.css` |
| Shadows | 4 | `app/src/styles/globals.css` |
| KG node colors | 5 | `app/src/styles/waggle-theme.css` |
| Step/event stream colors | 10 | `app/src/styles/waggle-theme.css` |
| Chat bubble colors | 2 | `app/src/styles/waggle-theme.css` |
| Legacy component tokens | 8 | `app/src/styles/waggle-theme.css` |
| Glass utility | 2 classes | `apps/web/src/index.css` |
| Interaction utilities | 4 classes | `app/src/styles/waggle-theme.css` |
| Animations | 9 keyframes | `app/src/styles/globals.css` |
| Light theme | Full set | `app/src/styles/globals.css` |
| Tailwind custom keyframes | 4 | `apps/web/tailwind.config.ts` |
### What Is Needed But Missing
| Token | Why |
|-------|-----|
| **Type scale** | No defined set of font sizes. Currently 10+ arbitrary sizes used. Need 6-7 named stops. |
| **Status color Tailwind mappings** | `--status-healthy` exists but no `text-status-healthy` Tailwind utility. Devs use `text-emerald-400` instead. |
| **Tier colors** | Solo/Basic/Teams/Enterprise tiers have no defined color tokens. Templates and personas also lack color tokens. |
| **Icon size scale** | Icons range from `w-2.5` to `w-10` with no defined scale. Need `--icon-xs`, `--icon-sm`, `--icon-md`, `--icon-lg`. |
| **Spacing tokens for layout** | Window dimensions, dock height, status bar height, sidebar width -- all hardcoded. Should be design tokens. |
| **Z-index scale** | Z-indexes range from 1 to 9999 with no defined layers. Need named layers: `--z-dock`, `--z-window`, `--z-overlay`, `--z-boot`. |
| **Breakpoint tokens** | No responsive breakpoints defined. Need at minimum a `--min-viewport` token. |
| **Focus ring token** | Already exists via shadcn `--ring` but not used consistently in hand-rolled components. |
---
## Critical Finding: Two Divergent CSS Systems
The most significant structural problem is that `app/` (Tauri) and `apps/web/` (web) have completely different CSS foundations:
| Property | `app/src/styles/globals.css` | `apps/web/src/index.css` |
|----------|------------------------------|--------------------------|
| Tailwind version | v4 (`@import "tailwindcss"`) | v3 (`@tailwind base/components/utilities`) |
| Background hue | `222` (cold blue) | `30` (warm amber) |
| Card hue | `222` (cold blue) | `30` (warm amber) |
| Primary | `40 100% 45%` | `38 92% 50%` |
| Accent | `270 60% 68%` (purple) | `38 92% 50%` (same as primary!) |
| Body font | Inter (bundled) | DM Sans (Google CDN) |
| Display font | (not explicitly set) | Space Grotesk (Google CDN) |
| Glass utility | Not defined in CSS | Defined in `@layer utilities` |
| Extended palette | Full hive/honey/status/semantic | None |
| Light theme | Full definition | None |
| Chat prose | Full definition | None |
| Animations | 9 custom keyframes | None |
| Interaction utilities | 4 utility classes | None |
**The web app is missing the entire extended Hive DS palette, light theme, animations, and interaction utilities.** It relies on inline `style={{ color: 'var(--hive-400)' }}` references to CSS variables that are not defined in its own stylesheet (they would only work if the `app/` CSS were also loaded, which it is not in the web build).
**This means:** Every `style={{ color: 'var(--hive-XXX)' }}` in the web app components is referencing **undefined variables**. These will render as black or the initial value. There are 35 such references across 13 files in `apps/web/src/`.
**Fix recommendations:**
1. **Port the extended Hive DS palette** from `app/src/styles/globals.css` to `apps/web/src/index.css`.
2. **Reconcile the base HSL values** -- pick either warm-amber or cold-blue, not both.
3. **Fix the accent divergence** -- in the web app, `--accent` equals `--primary` (both honey). In the Tauri app, `--accent` is purple. This breaks any component that differentiates between primary and accent colors.
4. Consider a shared `packages/ui/styles/tokens.css` that both apps import.
---
## Summary and Priority Matrix
| Dimension | Score | Priority |
|-----------|-------|----------|
| 1. Color consistency | 7/10 | P1 -- Status color tokens needed |
| 2. Typography hierarchy | 4/10 | **P0 -- Type scale is absent, accessibility failure** |
| 3. Spacing rhythm | 7/10 | P2 -- Minor cleanup |
| 4. Component consistency | 6/10 | P1 -- Hand-rolled inputs, dual libraries |
| 5. Responsive behavior | 2/10 | P2 -- Intentional but needs minimum safeguards |
| 6. Dark mode | 8/10 | P2 -- Light theme exists but is inaccessible |
| 7. Animation | 8/10 | P3 -- Minor polish |
| 8. Accessibility | 3/10 | **P0 -- Contrast failure, tiny text, missing ARIA** |
| 9. Information density | 6/10 | P1 -- StatusBar and ModelPilot too dense |
| 10. Polish | 7/10 | P2 -- Missing some empty states |
| **AI Slop** | **Clean** | P3 -- Delete dead `App.css` |
| **CSS divergence** | **Critical** | **P0 -- Two incompatible CSS systems** |
**Overall: 6.3 / 10**
### Top 5 Actions (In Order)
1. **Unify the CSS systems.** Port the Hive DS extended palette, light theme, animations, and interaction utilities from `app/src/styles/globals.css` into a shared location that `apps/web/src/index.css` imports. Fix the 35 undefined CSS variable references in web app components.
2. **Define and enforce a type scale.** Create 6-7 named size tokens, add Tailwind utilities, ban arbitrary `text-[Npx]`. Eliminate all text below 11px (97 instances).
3. **Fix muted-foreground contrast.** Increase from `#5a6380` (3.5:1) to at minimum `#7d869e` (5:1) for WCAG AA. This affects every component in the app.
4. **Create status color Tailwind utilities.** Map `--status-healthy`, `--status-warning`, `--status-error`, `--status-info`, `--status-ai` to Tailwind classes so developers stop using raw `text-emerald-400` (50+ instances to replace).
5. **Replace hand-rolled form inputs with shadcn components.** At least 15 `<input>` elements across AgentsApp, SettingsApp, CreateAgentForm, CreateGroupForm, and GroupDetail are styled inconsistently and have different focus behaviors than the shadcn Input component.
---
*Audit conducted via automated source scan of all CSS files, Tailwind configs, and 45+ component files in `apps/web/src/components/os/`. All line references are from the current HEAD.*

View File

@@ -0,0 +1,744 @@
# Waggle OS -- Comprehensive Feature Inventory
> Generated from codebase audit, April 2026.
> Status key: **BUILT** = fully implemented and wired, **PARTIAL** = backend exists but UI incomplete or gaps remain, **PLACEHOLDER** = route/type exists but minimal logic.
---
## 1. PERSISTENT MEMORY SYSTEM (Crown Jewel #1)
Waggle's memory system is a multi-layered, dual-mind architecture that gives the AI agent persistent, cross-session knowledge. Nothing comparable exists in competing products at this depth.
### 1.1 Dual-Mind Architecture
| Feature | Description | Status |
|---------|-------------|--------|
| Personal Mind | SQLite DB (`~/.waggle/.mind/`) stores user-level knowledge shared across all workspaces | **BUILT** |
| Workspace Mind | Separate SQLite DB per workspace, fully isolated -- client data never leaks between projects | **BUILT** |
| MultiMind Router | Automatically routes memory queries/saves to the correct mind based on context | **BUILT** |
| Cross-Mind Dedup | Before saving, checks BOTH personal and workspace minds for exact, normalized, and semantic (cosine > 0.95) duplicates | **BUILT** |
| Workspace-Specific Routing Guard | If `target=personal` but content contains confidential signals ($amounts, client names, NDA, SOW), auto-redirects to workspace mind | **BUILT** |
| Cross-Workspace Search | `search_all_workspaces` tool queries ALL workspace minds + personal simultaneously | **BUILT** |
### 1.2 FrameStore (Memory Frames)
| Feature | Description | Status |
|---------|-------------|--------|
| I-Frames | Initial frames -- standalone memory units | **BUILT** |
| P-Frames | Predictive/update frames -- linked to a base I-frame, representing changes or additions | **BUILT** |
| B-Frames | Bridge frames -- cross-reference multiple other frames with structured references | **BUILT** |
| Importance Levels | `critical`, `important`, `normal`, `temporary`, `deprecated` -- with score multipliers (2.0x to 0.3x) | **BUILT** |
| Source Provenance | `user_stated`, `tool_verified`, `agent_inferred`, `import`, `system` -- tracked per frame | **BUILT** |
| Confidence Derivation | Auto-derives confidence from source: tool_verified->high, user_stated->medium, agent_inferred->low | **BUILT** |
| Dramatic Claim Detection | Detects dramatic statements (shutdown, bankrupt, emergency) and downgrades importance to `temporary` | **BUILT** |
| Rate Limiting | Max 50 memory saves per session to prevent flooding attacks | **BUILT** |
| FTS5 Indexing | Full-text search index on all frame content | **BUILT** |
| Dedup on Create | I-Frame creation checks for exact duplicates before inserting | **BUILT** |
### 1.3 HybridSearch (Vector + Keyword Fusion)
| Feature | Description | Status |
|---------|-------------|--------|
| Keyword Search | SQLite FTS5 full-text search | **BUILT** |
| Vector Search | Embedding-based similarity via sqlite-vec | **BUILT** |
| Reciprocal Rank Fusion (RRF) | Combines keyword and vector results using RRF (k=60) | **BUILT** |
| Scoring Profiles | `balanced`, `recent`, `important`, `connected` -- weighted scoring across recency, importance, access, and connections | **BUILT** |
| Temporal Filtering | `since` and `until` ISO date filters on search | **BUILT** |
| Importance Filtering | Filter results by importance level (critical, important, normal, temporary) | **BUILT** |
| Contradiction Detection | Flags potential contradictions when results contain conflict signals ("however", "no longer", "changed to") | **BUILT** |
| LIKE Fallback | When vector/FTS return nothing, falls back to SQL LIKE scan on keywords | **BUILT** |
### 1.4 Knowledge Graph
| Feature | Description | Status |
|---------|-------------|--------|
| Entity Extraction | Regex-based extraction of persons, organizations, technologies, projects, concepts from text | **BUILT** |
| Entity Normalization | Normalizes entity names for consistent graph storage | **BUILT** |
| Relation Extraction | Semantic relations: led_by, reports_to, depends_on, co-occurrence | **BUILT** |
| Wildcard Query | `query_knowledge("*")` lists all known entities (capped at 50) | **BUILT** |
| Entity Correction | `correct_knowledge` tool to update or invalidate entities via feedback handler | **BUILT** |
| Ontology | Structured ontology definitions for entity types | **BUILT** |
| Graph Visualization API | `GET /api/memory/graph` returns entities + relations for UI rendering | **BUILT** |
### 1.5 CognifyPipeline
| Feature | Description | Status |
|---------|-------------|--------|
| Full Pipeline | Save frame -> extract entities -> enrich knowledge graph -> create relations -> index for search | **BUILT** |
| Memory Linking | Optional MemoryLinker finds related frames after saving | **BUILT** |
| Co-occurrence Relations | Entities found in same text automatically get relation edges | **BUILT** |
### 1.6 IdentityLayer
| Feature | Description | Status |
|---------|-------------|--------|
| Agent Identity | Persists name, role, department, personality, capabilities, system_prompt | **BUILT** |
| Identity Context | `get_identity` tool returns who the agent is | **BUILT** |
| Auto-Setup | `ensureIdentity` runs on server startup | **BUILT** |
### 1.7 AwarenessLayer
| Feature | Description | Status |
|---------|-------------|--------|
| Active Task Tracking | Categories: task, action, pending, flag | **BUILT** |
| Priority System | 0-10 priority per awareness item | **BUILT** |
| Expiration | Optional expires_at for time-limited items | **BUILT** |
| Metadata | JSON metadata per item (context, status, result) | **BUILT** |
| Tool Utilization Tracking | Tracks unique tools used per session, reports utilization percentage | **BUILT** |
### 1.8 SessionStore
| Feature | Description | Status |
|---------|-------------|--------|
| GOP-based Sessions | Sessions identified by gop_id, with timestamps | **BUILT** |
| Session Distillation | `findUndistilledSessions` + `markSessionDistilled` for memory consolidation | **BUILT** |
| Session Search | Full-text search across session transcripts | **BUILT** |
| Session Timeline | `parseSessionTimeline` extracts chronological events from sessions | **BUILT** |
| Session Export | Export sessions to Markdown format | **BUILT** |
| Session Outcome Extraction | Extracts and persists structured outcomes from sessions | **BUILT** |
| Thread Classification | Classifies conversation threads by freshness (active, stale, dormant) | **BUILT** |
| Open Question Extraction | Identifies unresolved questions from session transcripts | **BUILT** |
### 1.9 Memory Weaver (Consolidation)
| Feature | Description | Status |
|---------|-------------|--------|
| MemoryWeaver | Consolidates and compacts memory frames over time | **BUILT** |
| Skill Extraction | Extracts reusable skills from session transcripts | **BUILT** |
| Memory Decay | Time-based decay for less important memories | **BUILT** |
| Manual Trigger | `POST /api/weaver/trigger` for on-demand consolidation | **BUILT** |
| Status API | `GET /api/weaver/status` shows last consolidation times | **BUILT** |
### 1.10 Embedding System
| Feature | Description | Status |
|---------|-------------|--------|
| Multi-Provider Chain | InProcess -> Ollama -> Voyage -> OpenAI -> LiteLLM -> Mock fallback | **BUILT** |
| Tier-Gated Providers | SOLO gets inprocess+mock; BASIC adds ollama/voyage/openai; TEAMS adds litellm | **BUILT** |
| Monthly Quota | Tracked in `embedding_usage` table, enforced per tier | **BUILT** |
| In-Process Embeddings | Local transformer model via @xenova/transformers (no API key needed) | **BUILT** |
| LiteLLM Embedder | Proxy through LiteLLM for any compatible model | **BUILT** |
| Ollama Embedder | Local Ollama server for embeddings | **BUILT** |
| API Embedder | Direct Voyage AI / OpenAI API calls | **BUILT** |
---
## 2. AGENT PERSONA SYSTEM (Crown Jewel #2)
22 fully-defined personas with distinct system prompts, tool allowlists/denylists, failure patterns, and behavioral guardrails.
### 2.1 Universal Personas (8)
| Persona | Tools | Key Capability |
|---------|-------|----------------|
| General Purpose | Full tool set (30+) | Adapts to any task, suggests specialists |
| Researcher | web_search, web_fetch, search_memory, save_memory, generate_docx | Multi-source investigation, citation tracking |
| Writer | read/write/edit_file, search_memory, generate_docx | Document creation, tone adaptation, no bash/git |
| Analyst | bash, read/write_file, web_search, generate_docx | Data analysis, frameworks, quantified outputs |
| Coder | bash, all file ops, full git suite | Code review, debugging, architecture |
| Project Manager | plan tools, memory, file ops | Task tracking, status reports, no git/bash |
| Planner (read-only) | read_file, search, memory, plan tools | Strategic planning only, no write tools |
| Verifier (read-only) | read_file, search, bash (read-only) | Adversarial QA, VERDICT output format |
### 2.2 Domain Specialists (14)
| Persona | Domain |
|---------|--------|
| Executive Assistant | Email drafting, meeting prep, calendar |
| Sales Rep | Lead research, outreach, pipeline |
| Marketer | Content, campaigns, SEO, social media |
| Senior PM | PRD drafting, RICE scoring, roadmap |
| HR Manager | Policy, onboarding, compliance |
| Legal Counsel | Contract review, compliance, jurisdiction |
| Business Finance | Budget analysis, projections, invoicing |
| Strategy Consultant | Frameworks (MECE, Porter), client deliverables |
| Coordinator | Pure orchestrator -- only spawn_agent, list_agents, get_agent_result |
| Customer Support | Ticket resolution, KB management, escalation |
| Operations Manager | SOPs, vendor management, process optimization |
| Data Engineer | SQL, pipelines, dashboards, data quality |
| Recruiter | Job descriptions, screening scorecards, interview prep |
| Creative Director | Creative briefs, feedback synthesis, brand consistency |
### 2.3 Persona Features
| Feature | Description | Status |
|---------|-------------|--------|
| Per-Persona Tool Allowlist | Each persona declares which tools it can use | **BUILT** |
| Per-Persona Denylist | `disallowedTools` enforced at pool level | **BUILT** |
| Read-Only Mode | `isReadOnly` flag prevents all write operations | **BUILT** |
| Failure Patterns | 3+ documented failure modes per persona for self-correction | **BUILT** |
| Tagline + BestFor + WontDo | User-facing hover metadata | **BUILT** |
| Suggested Skills/Connectors/MCP | Each persona suggests relevant capabilities | **BUILT** |
| Default Workflow | Persona maps to a workflow template (research-team, plan-execute, etc.) | **BUILT** |
| Custom Personas | `loadCustomPersonas()` from disk + POST /api/personas | **BUILT** |
---
## 3. MULTI-AGENT ORCHESTRATION (Crown Jewel #3)
### 3.1 Sub-Agent System
| Feature | Description | Status |
|---------|-------------|--------|
| spawn_agent | Launches specialist agents with specific tasks and persona roles | **BUILT** |
| list_agents | Check status of running agents | **BUILT** |
| get_agent_result | Retrieve completed agent output | **BUILT** |
| Agent Communication | send_agent_message / check_agent_messages for inter-agent messaging | **BUILT** |
| SubagentOrchestrator | Full orchestration with dependency ordering and context flow between steps | **BUILT** |
| Agent Groups | CRUD for multi-agent group configurations (parallel/sequential/coordinator strategies) | **BUILT** |
### 3.2 Workflow Templates (Built-in)
| Template | Description | Status |
|----------|-------------|--------|
| research-team | Researcher -> Synthesizer -> Reviewer (3 agents) | **BUILT** |
| review-pair | Writer -> Reviewer -> Reviser (draft/critique/revise cycle) | **BUILT** |
| plan-execute | Planner -> Executor -> Summarizer | **BUILT** |
| ticket-resolve | Triage -> Investigator -> Responder (support workflow) | **BUILT** |
| content-pipeline | Researcher -> Drafter -> Editor (content creation) | **BUILT** |
### 3.3 Workflow Composer
| Feature | Description | Status |
|---------|-------------|--------|
| Task Shape Detection | Analyzes user message to detect task type/complexity | **BUILT** |
| Execution Mode Selection | Chooses lightest sufficient mode: direct, structured_single_agent, skill_guided, subagent_workflow | **BUILT** |
| Custom Workflows | Create/delete custom workflow templates via API | **BUILT** |
### 3.4 Waggle Dance Protocol (Team Communication)
| Feature | Description | Status |
|---------|-------------|--------|
| Message Types | request, response, broadcast with typed subtypes | **BUILT** |
| Task Delegation | Dispatches task_delegation messages to spawn workers | **BUILT** |
| Knowledge Check | Searches memory to answer knowledge_check requests | **BUILT** |
| Skill Request/Share | Routes skill requests and shares between agents | **BUILT** |
### 3.5 Fleet Management
| Feature | Description | Status |
|---------|-------------|--------|
| Fleet Status | GET /api/fleet -- lists all active workspace sessions with model, cost, tool count | **BUILT** |
| Spawn Agent | POST /api/fleet/spawn -- create new agent session (BASIC+ tier) | **BUILT** |
| Pause/Resume/Kill | Per-workspace session controls | **BUILT** |
| Max Sessions by Tier | SOLO=3, BASIC=10, TEAMS=25, ENTERPRISE=100 | **BUILT** |
---
## 4. TOOL ECOSYSTEM
### 4.1 System Tools (12)
| Tool | Description | Status |
|------|-------------|--------|
| bash | Shell command execution | **BUILT** |
| read_file | Read file content | **BUILT** |
| write_file | Write file content | **BUILT** |
| edit_file | Edit file with patch | **BUILT** |
| multi_edit | Batch edit multiple files | **BUILT** |
| search_files | Glob-pattern file search | **BUILT** |
| search_content | Content/regex search across files | **BUILT** |
| web_search | LLM-powered web search | **BUILT** |
| web_fetch | Fetch URL content | **BUILT** |
| run_code | Execute code in sandboxed runtime | **BUILT** |
| get_task_output | Get output from background task | **BUILT** |
| kill_task | Kill a running background task | **BUILT** |
### 4.2 Mind Tools (7)
| Tool | Description | Status |
|------|-------------|--------|
| get_identity | Agent identity context | **BUILT** |
| get_awareness | Current tasks, flags, tool utilization | **BUILT** |
| search_memory | Hybrid search across personal + workspace memory | **BUILT** |
| search_all_workspaces | Cross-workspace search | **BUILT** |
| save_memory | Save to workspace or personal mind with routing guards | **BUILT** |
| query_knowledge | Query knowledge graph entities and relations | **BUILT** |
| add_task | Add task to awareness layer | **BUILT** |
| correct_knowledge | Correct or invalidate knowledge entities | **BUILT** |
### 4.3 Git Tools (11)
| Tool | Description | Status |
|------|-------------|--------|
| git_status, git_diff, git_log | Read operations | **BUILT** |
| git_commit, git_branch, git_stash | Write operations | **BUILT** |
| git_push, git_pull, git_merge | Remote operations | **BUILT** |
| git_pr | Create pull requests | **BUILT** |
### 4.4 Plan Tools (4)
| Tool | Description | Status |
|------|-------------|--------|
| create_plan | Create structured multi-step plan | **BUILT** |
| add_plan_step | Add step to existing plan | **BUILT** |
| execute_step | Execute a plan step | **BUILT** |
| show_plan | Display current plan status | **BUILT** |
### 4.5 Document Tools (1)
| Tool | Description | Status |
|------|-------------|--------|
| generate_docx | Generate Word documents with formatting | **BUILT** |
### 4.6 Skill Tools (7)
| Tool | Description | Status |
|------|-------------|--------|
| list_skills | List installed skills | **BUILT** |
| create_skill | Create new skill | **BUILT** |
| delete_skill | Remove skill | **BUILT** |
| read_skill | Read skill content | **BUILT** |
| search_skills | Search skills by keyword | **BUILT** |
| suggest_skill | Recommend skills for current context | **BUILT** |
| acquire_capability / install_capability | Install from marketplace or starter pack | **BUILT** |
### 4.7 Search Provider Tools (3)
| Tool | Description | Status |
|------|-------------|--------|
| perplexity_search | Perplexity AI search (requires API key) | **BUILT** |
| tavily_search | Tavily search (requires API key) | **BUILT** |
| brave_search | Brave Search (requires API key) | **BUILT** |
### 4.8 Browser Tools (6)
| Tool | Description | Status |
|------|-------------|--------|
| browser_navigate | Navigate to URL | **BUILT** |
| browser_screenshot | Take page screenshot | **BUILT** |
| browser_click | Click element | **BUILT** |
| browser_fill | Fill form field | **BUILT** |
| browser_evaluate | Execute JavaScript | **BUILT** |
| browser_snapshot | Accessibility snapshot | **BUILT** |
### 4.9 LSP Tools (4)
| Tool | Description | Status |
|------|-------------|--------|
| lsp_diagnostics | Get code diagnostics | **BUILT** |
| lsp_definition | Go to definition | **BUILT** |
| lsp_references | Find references | **BUILT** |
| lsp_hover | Hover info | **BUILT** |
### 4.10 CLI Discovery Tools (2)
| Tool | Description | Status |
|------|-------------|--------|
| cli_discover | Detect installed CLI tools (git, node, docker, aws, etc. -- 26 tools) | **BUILT** |
| cli_execute | Execute a discovered CLI tool safely | **BUILT** |
### 4.11 Cron Tools (4)
| Tool | Description | Status |
|------|-------------|--------|
| create_schedule | Create cron schedule | **BUILT** |
| list_schedules | List all schedules | **BUILT** |
| delete_schedule | Remove schedule | **BUILT** |
| trigger_schedule | Manually trigger | **BUILT** |
### 4.12 Team Tools (9)
| Tool | Description | Status |
|------|-------------|--------|
| check_hive | Check team status | **BUILT** |
| share_to_team | Share content with team | **BUILT** |
| create_team_task | Create task for team | **BUILT** |
| claim_team_task | Claim a team task | **BUILT** |
| send_waggle_message | Send Waggle Dance protocol message | **BUILT** |
| request_team_capability | Request capability from team | **BUILT** |
| team_activity | View team activity feed | **BUILT** |
| team_tasks / team_members | List tasks and members | **BUILT** |
| assign_task / complete_task | Task lifecycle management | **BUILT** |
### 4.13 KVARK Tools (4)
| Tool | Description | Status |
|------|-------------|--------|
| kvark_search | Search KVARK enterprise platform | **BUILT** |
| kvark_feedback | Submit feedback to KVARK | **BUILT** |
| kvark_action | Execute KVARK action | **BUILT** |
| kvark_ask_document | Query KVARK document | **BUILT** |
### 4.14 Audit Tools (1)
| Tool | Description | Status |
|------|-------------|--------|
| query_audit | Query audit trail events | **BUILT** |
### 4.15 Workflow Tools (2)
| Tool | Description | Status |
|------|-------------|--------|
| compose_workflow | Generate workflow plan from task description | **BUILT** |
| orchestrate_workflow | Execute a multi-agent workflow template | **BUILT** |
**Total: ~80+ distinct agent tools**
---
## 5. WORKSPACE SYSTEM
### 5.1 Workspace CRUD
| Feature | Description | Status |
|---------|-------------|--------|
| Create Workspace | With name, description, path, persona, model, template | **BUILT** |
| List Workspaces | With group and teamId filters | **BUILT** |
| Get Workspace Detail | Full config + memory stats + recent decisions + summary | **BUILT** |
| Update Workspace | Config, persona, model changes | **BUILT** |
| Delete Workspace | With mind DB cleanup | **BUILT** |
| Workspace Summary | Narrative summary with activity status, memory count, key topics | **BUILT** |
### 5.2 Workspace Templates (15)
| Template | Persona | Category |
|----------|---------|----------|
| Sales Pipeline | sales-rep | sales |
| Research Project | researcher | research |
| Code Review | coder | engineering |
| Marketing Campaign | marketer | marketing |
| Product Launch | product-manager-senior | operations |
| Legal Review | legal-professional | legal |
| Agency/Consulting | consultant | custom |
| + 8 more via template system | various | various |
Template features:
- Starter memory (pre-seeded workspace context)
- Suggested commands
- Welcome messages per template
- Template-to-capability-pack mapping (auto-installs relevant skills)
### 5.3 Workspace Context
| Feature | Description | Status |
|---------|-------------|--------|
| Time-Aware Greeting | Morning/afternoon/evening contextual greetings | **BUILT** |
| Upcoming Schedules | Shows next cron jobs for the workspace | **BUILT** |
| Workspace State | Activity level, memory count, decisions, progress | **BUILT** |
| Recent Decisions | Extracted from memory for quick context | **BUILT** |
### 5.4 File Management
| Feature | Description | Status |
|---------|-------------|--------|
| File Registry | Track ingested files per workspace | **BUILT** |
| File Ingestion | Process images, documents (PDF, DOCX, PPTX), spreadsheets (XLSX, CSV), code files, archives | **BUILT** |
| Directory Browser | Browse local filesystem for workspace path selection | **BUILT** |
| Document Version Registry | Track document versions within a workspace | **BUILT** |
### 5.5 Pins
| Feature | Description | Status |
|---------|-------------|--------|
| Pin Messages | Favorite/bookmark messages within workspace | **BUILT** |
| Draft/Final Status | W7.4 -- mark pinned outputs as draft or final | **BUILT** |
| Per-Workspace Storage | JSON file in workspace directory | **BUILT** |
---
## 6. CONNECTOR / INTEGRATION SYSTEM
### 6.1 Built-in Connectors (28)
| Category | Connectors |
|----------|------------|
| Code | GitHub, GitLab, Bitbucket |
| Communication | Slack, Discord, MS Teams, Gmail, Outlook, Email |
| Project Management | Jira, Linear, Asana, Trello, Monday |
| Knowledge | Notion, Confluence, Obsidian |
| CRM | HubSpot, Salesforce, Pipedrive |
| Cloud Storage | Google Drive, Google Docs, Google Sheets, OneDrive, Dropbox |
| Calendar | Google Calendar |
| Data | Airtable, PostgreSQL |
| Meta | Composio (250+ integrations gateway) |
| Mock | MockSlack, MockTeams, MockDiscord (for testing) |
### 6.2 Connector Features
| Feature | Description | Status |
|---------|-------------|--------|
| Connect/Disconnect | Store/remove credentials in vault | **BUILT** |
| Health Check | Per-connector health status (connected, expired, disconnected) | **BUILT** |
| OAuth Flow | Full OAuth for GitHub, Slack, Google, Notion, Jira | **BUILT** |
| Connector Registry | Dynamic registry with definitions and live status | **BUILT** |
### 6.3 MCP (Model Context Protocol) Runtime
| Feature | Description | Status |
|---------|-------------|--------|
| MCP Server Lifecycle | Start/stop/health for stdio-based MCP servers | **BUILT** |
| JSON-RPC 2.0 | Full protocol implementation | **BUILT** |
| Tool Discovery | Lists tools from connected MCP servers | **BUILT** |
| Per-Workspace MCP | Servers can be scoped to specific workspaces | **BUILT** |
### 6.4 Plugin System
| Feature | Description | Status |
|---------|-------------|--------|
| PluginManager | Load/install/uninstall plugins from ~/.waggle/plugins/ | **BUILT** |
| Plugin Runtime | PluginRuntimeManager for lifecycle management | **BUILT** |
| Plugin Validation | Manifest validation via SDK | **BUILT** |
| Starter Skills | Auto-install starter skills on first run | **BUILT** |
| Capability Packs | Grouped skill bundles (developer_workspace, research_analyst, etc.) | **BUILT** |
---
## 7. MARKETPLACE
| Feature | Description | Status |
|---------|-------------|--------|
| FTS5 Search | Full-text search across package catalog | **BUILT** |
| Faceted Filters | Filter by type, category, pack, source | **BUILT** |
| Sort Options | relevance, popular, recent, name | **BUILT** |
| Install/Uninstall | Package lifecycle management | **BUILT** |
| Security Gate | Cisco scanner integration for package security scanning | **BUILT** |
| Scan Status | passed/failed/not_scanned per package | **BUILT** |
| Enterprise Packs | Curated package bundles for specific use cases | **BUILT** |
| Package Categories | Structured categorization system | **BUILT** |
| Install Audit | Track all marketplace installs with timestamps | **BUILT** |
| Skill Hash Tracking | Detect if installed skills have been modified | **BUILT** |
---
## 8. TIER / BILLING SYSTEM
### 8.1 Tier Architecture
| Tier | Price | Key Limits |
|------|-------|------------|
| SOLO | Free | 5 workspaces, 10 connectors, 500 embeddings/mo, no sub-agents, no custom skills |
| BASIC | $15/mo | Unlimited workspaces/connectors, 5000 embeddings/mo, sub-agents, custom skills |
| TEAMS | $79/mo/seat | Everything + team library, cloud sync, shared workspaces, admin panel, audit log |
| ENTERPRISE | Consultative | Everything + self-hosted, full audit, KVARK integration |
### 8.2 Feature Gating
| Feature | Description | Status |
|---------|-------------|--------|
| TierCapabilities | 17 capability flags per tier | **BUILT** |
| requireTier Middleware | Fastify preHandler that enforces minimum tier | **BUILT** |
| tierSatisfies | Comparison function for tier ordering | **BUILT** |
| parseTier | Handles legacy lowercase tier names -> canonical uppercase | **BUILT** |
### 8.3 Stripe Integration
| Feature | Description | Status |
|---------|-------------|--------|
| Checkout | Stripe Checkout session creation | **BUILT** |
| Webhooks | Stripe webhook handling (subscription events) | **BUILT** |
| Customer Portal | Stripe customer portal redirect | **BUILT** |
| Tier-from-Price Mapping | Map Stripe price IDs back to canonical tiers | **BUILT** |
| Lazy SDK Init | Stripe SDK only loaded if STRIPE_SECRET_KEY is set | **BUILT** |
---
## 9. LLM PROVIDER SYSTEM
### 9.1 Provider Registry
| Feature | Description | Status |
|---------|-------------|--------|
| Multi-Provider | Anthropic, OpenAI, Google, DeepSeek, xAI, Mistral, Alibaba/Qwen, MiniMax, GLM/Zhipu, OpenRouter, Perplexity, Moonshot | **BUILT** |
| Model Catalog | Per-provider model list with cost/speed ratings | **BUILT** |
| Vault Key Status | Shows which providers have API keys configured | **BUILT** |
| LiteLLM Proxy | Routes through LiteLLM for model abstraction | **BUILT** |
| Anthropic Direct Proxy | Fallback direct Anthropic proxy when LiteLLM is down | **BUILT** |
| Health Check | Provider health: healthy, degraded, unavailable | **BUILT** |
| Credential Pool | Round-robin + cooldown across multiple keys per provider | **BUILT** |
### 9.2 Cost Tracking
| Feature | Description | Status |
|---------|-------------|--------|
| Per-Model Pricing | Default pricing for Claude, GPT, etc. (input + output per 1k tokens) | **BUILT** |
| Usage Recording | Track input/output tokens per request with workspace attribution | **BUILT** |
| By-Model Breakdown | Aggregate cost/tokens per model | **BUILT** |
| By-Workspace Cost | GET /api/cost/by-workspace (TEAMS+) | **BUILT** |
| Cost Reset | POST /api/agent/cost/reset | **BUILT** |
| Iteration Budget | Per-session budget tracking with isWithinBudget check | **BUILT** |
---
## 10. SECURITY FEATURES
| Feature | Description | Status |
|---------|-------------|--------|
| Injection Scanner | 3 pattern sets: role_override (12 patterns), prompt_extraction (6 patterns), instruction_injection (7 patterns) | **BUILT** |
| Multi-Language Patterns | Detects injection in English, German, Spanish, French | **BUILT** |
| Memory Wipe Detection | Catches "forget everything", "erase all context" attempts | **BUILT** |
| Authority Claim Detection | Detects fake system/admin messages, debug mode claims | **BUILT** |
| XSS Sanitization | Memory frame content sanitized (script tags, event handlers, javascript: URIs) | **BUILT** |
| Vault (Encrypted Secrets) | AES-encrypted secret storage for API keys and tokens | **BUILT** |
| Vault Categories | LLM Providers, Embedding, Search, Code/DevOps, Communication, Business, Storage | **BUILT** |
| Secret Reveal | POST /api/vault/:name/reveal -- explicit decrypt action | **BUILT** |
| Rate Limiter | Server-level rate limiting middleware | **BUILT** |
| CORS Configuration | Allowed origins list with validation | **BUILT** |
| Input Validation | assertSafeSegment for path traversal prevention | **BUILT** |
| Parameterized Queries | All SQL uses parameterized queries (no string interpolation) | **BUILT** |
| Trust Assessment | assessTrust function for evaluating content trustworthiness | **BUILT** |
---
## 11. PROACTIVE / AUTONOMOUS FEATURES
### 11.1 Cron Scheduling
| Feature | Description | Status |
|---------|-------------|--------|
| Cron CRUD | Create, read, update, delete schedules via REST API | **BUILT** |
| Job Types | Multiple job types with configurable payloads | **BUILT** |
| Manual Trigger | POST /api/cron/:id/trigger | **BUILT** |
| Cross-Workspace | `workspaceId="*"` for global cron jobs | **BUILT** |
| Default Crons | Auto-seed default cron schedules on first run | **BUILT** |
| Delivery System | Email delivery of cron results with HTML escaping (XSS safe) | **BUILT** |
| Delivery Preferences | Configurable delivery channels per schedule | **BUILT** |
### 11.2 Proactive Handlers
| Feature | Description | Status |
|---------|-------------|--------|
| Morning Briefing | Daily summary of workspace state and priorities | **BUILT** |
| Stale Workspace Detection | Flags workspaces with no recent activity | **BUILT** |
| Pending Task Reminders | Alerts for unresolved awareness items | **BUILT** |
| Capability Suggestions | Recommends skills/tools based on usage patterns | **BUILT** |
### 11.3 Monthly Self-Assessment
| Feature | Description | Status |
|---------|-------------|--------|
| Performance Report | Total interactions, correction rate, improvement trend | **BUILT** |
| Strengths/Weaknesses | Auto-derived from optimization logs and feedback | **BUILT** |
| Capability Gaps | Detected gaps from improvement signals | **BUILT** |
| Saved to Memory | Assessment becomes part of long-term self-awareness | **BUILT** |
---
## 12. DATA MANAGEMENT
### 12.1 Backup & Restore
| Feature | Description | Status |
|---------|-------------|--------|
| Encrypted Backup | AES-256-GCM encrypted ZIP archive of ~/.waggle/ | **BUILT** |
| Stream Download | POST /api/backup streams the archive | **BUILT** |
| Restore | POST /api/restore accepts encrypted backup | **BUILT** |
| Metadata | GET /api/backup/metadata -- last backup info | **BUILT** |
| Size Limit | 500 MB max, batched file reads to limit memory pressure | **BUILT** |
| Exclusions | node_modules, .git, marketplace.db excluded | **BUILT** |
### 12.2 Import / Export
| Feature | Description | Status |
|---------|-------------|--------|
| ChatGPT Import | Preview and commit ChatGPT conversation exports | **BUILT** |
| Claude Import | Preview and commit Claude conversation exports | **BUILT** |
| Knowledge Extraction | Extracts knowledge items from imported conversations | **BUILT** |
| GDPR Export | ZIP file with memories, sessions, workspaces, settings (keys masked), vault metadata | **BUILT** |
| Per-Workspace Export | Scoped export for agency/multi-client privacy | **BUILT** |
| Audit Event on Export | Every export operation logged to audit trail | **BUILT** |
---
## 13. REAL-TIME & COMMUNICATION
### 13.1 Notifications
| Feature | Description | Status |
|---------|-------------|--------|
| SSE Stream | Server-Sent Events for live notifications | **BUILT** |
| Categories | cron, approval, task, message, agent | **BUILT** |
| Sub-Agent Status | Real-time status updates for running sub-agents | **BUILT** |
| Workflow Suggestions | Pattern detection prompts for workflow capture | **BUILT** |
### 13.2 Waggle Signals
| Feature | Description | Status |
|---------|-------------|--------|
| Signal Types | agent:started, tool:called, memory:saved, agent:completed | **BUILT** |
| SSE Stream | GET /api/waggle/stream for real-time signal feed | **BUILT** |
| Acknowledgment | PATCH /api/waggle/signals/:id/ack | **BUILT** |
| In-Memory Store | Capped at 500 signals | **BUILT** |
### 13.3 Audit Trail
| Feature | Description | Status |
|---------|-------------|--------|
| Event Types | 14 types: tool_call, tool_result, memory_write, memory_delete, workspace CRUD, session lifecycle, approvals, exports, cron_trigger | **BUILT** |
| Separate Database | audit.db in dataDir (not in .mind) | **BUILT** |
| Paginated Listing | GET /api/events with filters | **BUILT** |
| Aggregate Stats | GET /api/events/stats by type and day | **BUILT** |
| SSE Stream | GET /api/events/stream for live Cockpit feed | **BUILT** |
| Retention | 90-day default, auto-cleanup via cron | **BUILT** |
---
## 14. USER PROFILE & PERSONALIZATION
| Feature | Description | Status |
|---------|-------------|--------|
| Identity Profile | Name, role, company, industry, bio, avatar | **BUILT** |
| Writing Style Analysis | Tone, sentence length, vocabulary, structure -- analyzed from text samples | **BUILT** |
| Brand Profile | Company colors (primary/secondary/accent), fonts, logo description | **BUILT** |
| Per-Format Styles | DOCX, PPTX, PDF, XLSX style preferences | **BUILT** |
| Online Research | POST /api/profile/research -- research user/company online | **BUILT** |
| Agent-Accessible | GET /api/profile/style and /api/profile/brand for agent tools | **BUILT** |
| Memory Integration | Key profile fields saved to personal memory for agent access | **BUILT** |
---
## 15. CHAT SYSTEM
| Feature | Description | Status |
|---------|-------------|--------|
| WebSocket Chat | Real-time bidirectional chat via WebSocket | **BUILT** |
| Session Persistence | Messages persisted to JSONL files per workspace | **BUILT** |
| Context Window Management | Configurable MAX_CONTEXT_MESSAGES with intelligent pruning | **BUILT** |
| Context Compression | Iterative conversation compression for long sessions | **BUILT** |
| Skill Prompt Injection | Active skills appended to system prompt per message | **BUILT** |
| Governance Permissions | Per-workspace tool/action permissions | **BUILT** |
| Dramatic Claim Hook | pre:memory-write hook flags dramatic claims before saving | **BUILT** |
| System Prompt Caching | Cached per session to avoid rebuilding on every message | **BUILT** |
| Ambiguity Detection | Detects ambiguous messages and prompts for clarification | **BUILT** |
| Schedule Suggestions | Detects recurring task patterns and suggests cron schedules | **BUILT** |
| Regulated Content Detection | Flags legal/financial/medical content for disclaimers | **BUILT** |
| Retry Logic | Retryable error detection for transient LLM failures | **BUILT** |
| Approval System | Human-in-the-loop approval for sensitive tool calls | **BUILT** |
| Capability Gap Recording | Records when agent cannot fulfill a request | **BUILT** |
| Correction Analysis | Analyzes user corrections to improve future responses | **BUILT** |
| Workflow Capture Suggestion | Detects repeatable patterns and suggests saving as workflow | **BUILT** |
---
## 16. OFFLINE MODE
| Feature | Description | Status |
|---------|-------------|--------|
| Offline Detection | OfflineManager tracks connectivity state | **BUILT** |
| Message Queue | Queue messages for when connection restores | **BUILT** |
| Offline-Capable Tools | Tools marked with `offlineCapable: true` (all mind tools) | **BUILT** |
| Status API | GET /api/offline/status | **BUILT** |
| Queue Management | List, clear, and delete individual queued messages | **BUILT** |
---
## 17. TEAM FEATURES
| Feature | Description | Status |
|---------|-------------|--------|
| Team DB | SQLite database for teams and members with role-based access | **BUILT** |
| Team Connect/Disconnect | Connect desktop app to team server | **BUILT** |
| Team Roles | owner, admin, member, viewer | **BUILT** |
| Team Sync | TeamSync from @waggle/core for cross-team data synchronization | **BUILT** |
| Cloud Sync | Tier-gated (TEAMS+) cloud synchronization | **PARTIAL** |
| Admin Panel | Admin overview endpoint (TEAMS+) | **BUILT** |
| Shared Workspaces | Tier-gated shared workspace access | **PARTIAL** |
---
## 18. TELEMETRY & OBSERVABILITY
| Feature | Description | Status |
|---------|-------------|--------|
| Telemetry Store | SQLite-backed event telemetry | **BUILT** |
| Summary API | GET /api/telemetry/summary | **BUILT** |
| Event Cleanup | DELETE /api/telemetry/events | **BUILT** |
| Status | GET /api/telemetry/status | **BUILT** |
---
## 19. ONBOARDING
| Feature | Description | Status |
|---------|-------------|--------|
| 7-Step Wizard | Welcome -> WhyWaggle -> MemoryImport -> Template -> Persona -> APIKey -> HiveReady | **BUILT** |
| Template Selection | 7+ workspace templates to choose from | **BUILT** |
| Persona Selection | Subset of personas for initial configuration | **BUILT** |
| API Key Setup | Guided key entry with provider selection | **BUILT** |
| Memory Import | Import from ChatGPT/Claude on first run | **BUILT** |
---
## 20. BEHAVIORAL SPEC & INTELLIGENCE
| Feature | Description | Status |
|---------|-------------|--------|
| BEHAVIORAL_SPEC | 273-line rules covering core loop, quality, behavior, work patterns, tools, intelligence defaults | **BUILT** |
| Smart Router | routeMessage() for intelligent message routing | **BUILT** |
| Capability Router | Resolves capabilities across native tools, skills, plugins, MCP, sub-agents, connectors | **BUILT** |
| Tool Filter | filterToolsForContext() with allowlist/denylist enforcement | **BUILT** |
| Tool Availability Check | Dynamic `checkAvailability()` per tool (e.g., browser connected, git repo present) | **BUILT** |
| Skill Recommender | Context-aware skill suggestions based on current task | **BUILT** |
| Hook Registry | Pre/post tool use hooks for validation and auto-formatting | **BUILT** |
| Command Registry | Slash command system with workflow and marketplace commands | **BUILT** |
| Optimization Logging | Track agent performance for self-improvement | **BUILT** |
| Improvement Signals | ImprovementSignalStore for detecting recurring issues | **BUILT** |
---
## CROWN JEWELS -- What Makes Waggle OS Unique
1. **Dual-Mind Persistent Memory** -- No other AI agent platform has workspace-isolated memory with cross-mind dedup, knowledge graph extraction, provenance tracking, and confidence derivation. The memory survives across sessions and grows smarter over time.
2. **22 Specialized Personas with Behavioral Guardrails** -- Not just "system prompts" but full personas with tool allowlists, denylists, failure pattern documentation, read-only enforcement, and suggested capability stacks. The Coordinator persona that can only delegate is particularly unique.
3. **Multi-Agent Orchestration with Workflow Templates** -- Built-in multi-agent workflows (research-team, review-pair, plan-execute, ticket-resolve, content-pipeline) with dependency ordering, context flow between steps, and automatic result aggregation.
4. **Memory Weaver** -- Automatic consolidation, decay, and strengthening of memories over time. Combined with monthly self-assessment that saves performance reports back into the agent's own memory, creating a genuine self-improvement loop.
5. **80+ Agent Tools** -- Comprehensive tool ecosystem spanning system ops, git, planning, documents, web, browser, LSP, CLI discovery, cron scheduling, team collaboration, and KVARK enterprise integration.
6. **28 Built-in Connectors + MCP Runtime** -- Native integrations for GitHub, Slack, Jira, Salesforce, Google Workspace, etc., plus MCP server support for extensibility. OAuth flows for major platforms.
7. **Encrypted Backup/Restore + GDPR Export** -- AES-256-GCM encrypted backup with per-workspace scoped export for agency privacy compliance.
8. **Tiered Feature Gating with Stripe** -- Full SOLO -> BASIC -> TEAMS -> ENTERPRISE tier system with per-feature capability gating, Stripe checkout/webhook/portal integration, and KVARK enterprise upsell funnel.
9. **Proactive Intelligence** -- Morning briefings, stale workspace detection, task reminders, capability suggestions, and monthly self-assessments -- all running on cron without user prompting.
10. **Security-First Design** -- Injection scanner with 25+ patterns (multilingual), XSS sanitization on memory writes, workspace-level data isolation, encrypted vault, rate limiting, parameterized SQL, and trust assessment on all external content.

View File

@@ -0,0 +1,651 @@
# Waggle OS -- Comprehensive UX Analysis
**Date:** April 2026
**Scope:** `apps/web/` (primary frontend), with references to `app/` (legacy Tauri app)
**Analyst:** Automated deep-read of all views, overlays, hooks, and design tokens
---
## 1. Architecture Overview
Waggle OS presents itself as an "Autonomous Agent OS" -- a full desktop operating system metaphor running inside a browser window. The experience is structured as:
```
Index page
-> BootScreen (animated boot sequence)
-> Desktop (the full OS environment)
-> StatusBar (top menu bar)
-> AppWindow instances (draggable/resizable windows)
-> Dock (bottom app launcher)
-> Overlays (modal dialogs/command palette)
```
This is a React SPA using React Router with a single route (`/`). There is no multi-page navigation. All state lives in hooks managed by the `Desktop` component.
---
## 2. The Desktop OS Metaphor
### 2.1 Boot Screen (`BootScreen.tsx`)
On first load, the user sees an animated boot sequence with five phases:
1. "Initializing core systems..."
2. "Loading agent kernel..."
3. "Connecting to hive network..."
4. "Mounting workspaces..."
5. "Ready."
Each phase displays for 600ms with a progress bar. The logo pulses with a honey-gold glow. After "Ready," the boot screen fades out and the Desktop appears. Total boot time: approximately 4.8 seconds.
**UX Assessment:** The boot animation strongly reinforces the OS metaphor and creates a premium first impression. However, 4.8 seconds is long for a returning user. There is no "skip boot" mechanism or localStorage-based fast boot for repeat visits.
### 2.2 Desktop (`Desktop.tsx`)
The desktop has three layers:
1. **Wallpaper** -- A full-screen background image (`wallpaper.jpg`) with a 20% dark overlay
2. **Content area** -- When no windows are open, shows a large Waggle AI logo with the tagline "Autonomous Agent OS" and a hint: "Click an app in the dock - Ctrl+` to switch windows"
3. **Windows** -- AppWindow instances rendered with absolute positioning, z-index management, and framer-motion animations
The empty desktop state is well-designed: the logo fades in with letter-spacing animation, and there is a subtle pulsing hint at the bottom.
### 2.3 Status Bar (`StatusBar.tsx`)
A fixed 32px-tall bar at the top of the screen. Left side shows:
- Waggle logo (16x16)
- "Waggle AI" brand text
- Active workspace name (dot-separated)
- Current model name (honey-colored)
- Token count and cost (when > 0)
Right side shows:
- Search icon (triggers Global Search)
- Notification bell (with unread badge)
- WiFi/WifiOff status indicator
- Volume and Battery icons (decorative -- not functional)
- Date and live clock
**UX Assessment:** The status bar effectively communicates system state (online/offline, model, cost). The decorative Volume and Battery icons feel like unnecessary OS-ism that could confuse users since they don't reflect actual device state.
### 2.4 App Windows (`AppWindow.tsx`)
Each app opens in a draggable, resizable window with:
- **Title bar** with icon, title, and three traffic-light buttons (minimize/maximize/close as colored circles)
- **Drag** via framer-motion drag controls on the title bar
- **Resize** via 8 edge/corner handles (N, S, E, W, NE, NW, SE, SW)
- **Snap zones** -- drag to left/right edges snaps to half-screen; drag to top maximizes
- **Snap preview** -- a translucent overlay shows where the window will snap during drag
- **Minimize** animates the window down to the dock area (opacity: 0, scale: 0.3)
- **Maximize** fills the usable area (between StatusBar and Dock)
- **Double-click** title bar toggles maximize
- **Escape** closes the focused window
- **Position persistence** via `window-positions.ts` (saves to localStorage)
- **Cascade offset** -- new windows open slightly offset from the previous
**UX Strengths:**
- Window management feels polished and responsive
- Snap zones mirror Windows 11 / macOS behavior
- Position persistence is smart for power users
**UX Weaknesses:**
- No way to tile or arrange multiple windows automatically (no "tile all" command)
- Escape closing the focused window could be surprising -- it conflicts with standard "close overlay" behavior in many of the overlays
- The minimize/maximize/close buttons are styled as three identical small circles (only close is red-tinted) -- difficult to distinguish visually, unlike macOS traffic lights which are red/yellow/green
### 2.5 Window Manager (`useWindowManager.ts`)
Manages all open windows with:
- **Multi-instance chat** -- Multiple chat windows can coexist for different workspaces
- **Single instance for other apps** -- Opening an already-open app brings it to focus
- **Z-index management** -- Click to focus, incremental z-index
- **Ctrl+`** cycles window focus
- **Title generation** -- Chat windows show "WorkspaceName - Template - Persona"
### 2.6 Dock (`Dock.tsx`)
A centered, fixed bottom dock with glassmorphism styling (`glass-strong`). Features:
- **Icons** with hover labels and spring animations (scale 1.2, y: -8 on hover)
- **Open indicator** -- small dot below open apps (solid for visible, faded for minimized)
- **Zone parents** -- grouped items (Ops, Extend) that expand into a DockTray popup
- **Spawn Agent** shortcut at the far right with a separator
- **Badge count** on Waggle Dance icon for unacknowledged signals
**Tier-based dock configuration:**
| Tier | Apps Shown |
|------|-----------|
| Simple | Home, Chat, Files, Vault, Settings (5 items) |
| Professional | Home, Chat, Agents, Files, Memory, Vault, Settings (7 items) |
| Power/Admin | Home, Chat, Agents, Files, Waggle Dance, Ops zone, Extend zone, Vault, Settings (full set) |
**UX Assessment:** The dock is well-executed. Hover animations feel playful without being distracting. The tier-based progressive disclosure is excellent -- new users see a simple dock that does not overwhelm. The zone-parent grouping (Ops, Extend) is a clever way to hide complexity.
**Weakness:** The DockTray popup for zones appears directly above the clicked icon but has no arrow/pointer connecting it to the parent, which could feel disconnected.
---
## 3. All Application Views (17 Apps)
### 3.1 Chat App (`ChatApp.tsx` + `ChatWindowInstance.tsx`)
The primary application. ~730 lines of well-structured UI code.
**Layout:**
- Optional session sidebar (collapsible, 192px wide) listing past sessions
- Header bar with: session toggle, persona picker dropdown, team presence avatars, model picker dropdown
- Collapsible "Agent Profile" panel showing persona avatar, template badge, model badge
- Pin bar (if pins exist) -- shows count, expandable to see pinned messages
- Message area with auto-scroll
- Input area with slash command support, file attachment, and send button
**Message Rendering:**
- User messages: right-aligned, honey/primary background
- Assistant messages: left-aligned with persona avatar, secondary background, Sparkles icon
- System messages: muted, italic, smaller
- Block renderer: supports TextBlock, ToolUseBlock, StepBlock, ModelSwitchBlock for structured agent output
- Tool cards: expandable with status icons (running/done/error/denied/pending), raw JSON toggle
- Copy button: appears on hover (top-right of message)
- Pin button: appears on hover for assistant messages
- Feedback buttons: thumbs up/down with reason picker for negative feedback (wrong answer, too verbose, wrong tool, too slow, other)
**Slash Commands (11):**
`/model`, `/models`, `/cost`, `/clear`, `/skills`, `/help`, `/research`, `/draft`, `/review`, `/spawn`, `/plan`
**File Handling:**
- Drag-and-drop zone over entire chat area
- File picker via paperclip button
- Supports PDF, CSV, TXT, images
**Approval Gate:**
- When the agent requests dangerous actions, an amber-bordered card appears
- Shows tool name, description, Approve/Deny/Raw JSON buttons
**Workspace Briefing:**
- When a chat has no messages, it shows a rich "home screen" (`WorkspaceBriefing.tsx`)
- Fetches workspace context: greeting, summary, memory stats, pending tasks, recent decisions, key memories, recent threads, cross-workspace hints, suggested prompts, upcoming schedules
- Suggested prompts are clickable to pre-fill the input
**Team Presence:**
- Shows online team members as overlapping avatars (max 4 visible + count)
- Each avatar has a green/gray online status dot and hover tooltip
**UX Strengths:**
- The WorkspaceBriefing is outstanding -- it grounds the user in context before they start chatting
- Block-based rendering means the agent can produce structured output, not just text
- Feedback mechanism with reasons is valuable for ML quality improvement
- Pin system lets users save important responses
- Multi-session support with sidebar navigation
**UX Weaknesses:**
- The chat header is information-dense: persona picker, team presence, model picker, session toggle, agent profile -- this creates visual clutter in a small window
- No markdown rendering in the basic text path (only `whitespace-pre-wrap`)
- Copy button uses the Code icon which could be confused with "view code"
- Textarea doesn't auto-resize based on content (fixed rows=1, max-h only from CSS)
### 3.2 Dashboard App (`DashboardApp.tsx`)
Workspace overview with:
- "Workspaces" heading + "New" button
- Group filter tabs (All, Personal, Work, Research, custom groups)
- Workspace cards in a 2-column grid, each showing:
- Persona avatar
- Workspace name + group badge
- Template label + persona label
- Health indicator dot (healthy/degraded/error)
- Hue-tinted left border
- Quick tasks section (fetches from `/api/tasks?status=open`)
**UX Assessment:** Clean and functional. The group filtering is useful for power users with many workspaces. The health indicator dots are subtle but informative.
### 3.3 Settings App (`SettingsApp.tsx`)
Tabbed interface with 7 tabs: General, Models, Permissions, Team, Backup, Enterprise, Advanced.
- **Models tab** includes ModelPilotCard (3-lane model selector: Primary/Fallback/Budget Saver)
- **General tab** includes dock tier selector (Simple/Professional/Full Control)
- **Team and Enterprise** tabs can be locked behind feature gates
- Uses `LockedFeature` component to show blurred content with upgrade prompt
**UX Assessment:** The ModelPilotCard is a standout UX pattern -- visually showing the fallback chain helps users understand how model routing works. The tier-gated tabs with blur effect communicate upgrade paths without being aggressive.
### 3.4 Memory App (`MemoryApp.tsx`)
Two views: Timeline (list) and Graph (SVG visualization).
**Timeline view:**
- Search bar with type filters (fact, event, insight, decision, task, entity)
- Importance slider filter
- Memory frames listed with type emoji, content preview, importance coloring
- Right-click context menu (View, Copy, Delete)
- Detail panel for selected frame
**Graph view:**
- SVG circular layout of knowledge graph nodes and edges
- Nodes colored with honey/primary, edges as semi-transparent lines
- Labels truncated to 12 characters
**UX Assessment:** The timeline view is functional but the graph visualization is extremely basic -- a simple circular layout with no interactivity, no zoom, no click-to-focus. For a product that positions memory as a core differentiator, this visualization needs significant investment.
### 3.5 Agents App (`AgentsApp.tsx`)
Two tabs: Agents and Groups.
**Agents tab:**
- Search bar + "Create Agent" button
- Cards for each persona (backend or local fallback)
- Agent detail panel with edit/delete
- Create agent form with: name, description, icon, system prompt, tool selection
**Groups tab:**
- Agent groups with strategy (parallel/sequential/consensus)
- Group execution panel with real-time member status
- Create/edit/duplicate group forms
**UX Assessment:** The agent management UI is comprehensive. The group execution panel showing real-time status of each member in a multi-agent execution is a differentiating feature.
### 3.6 Files App (`FilesApp.tsx`)
At ~56K, this is the largest single component. Features file management with:
- Tree view of workspace files
- Syntax-highlighted preview (via `SyntaxPreview.tsx`)
- Upload, rename, delete operations
- File type icons and metadata
### 3.7 Cockpit App (`CockpitApp.tsx`)
Operational dashboard with cards for:
- System health (service status list)
- Cost tracking (total tokens, estimated cost, budget)
- Connectors status
- Cron jobs
- Memory stats
- Weaver (memory consolidation) status
- Event statistics
- Auto-refresh every 30 seconds
Handles offline state gracefully with an error banner.
### 3.8 Events App (`EventsApp.tsx`)
Real-time event stream showing agent execution steps. Features:
- Auto-scroll toggle
- Filter by event type
- Abort button to stop running agents
- Step status coloring (running, done, error, etc.)
### 3.9 Other Apps
| App | Status | Description |
|-----|--------|-------------|
| Connectors | Complete | Grid of service integrations with install/uninstall |
| Vault | Complete | API key management with validation, multi-provider |
| User Profile | Complete | Identity questionnaire, preferences |
| Mission Control | Complete | Agent monitoring + spawn shortcut |
| Capabilities | Complete | Skills/plugins/MCP servers management |
| Waggle Dance | Complete | Multi-agent collaboration signals |
| Scheduled Jobs | Complete | Cron job list with enable/disable |
| Marketplace | Complete | Browse and install extensions |
| Voice | Placeholder | "Coming Soon" with microphone icon |
---
## 4. Overlay System (10 Overlays)
All overlays share a consistent pattern:
- Fixed full-screen backdrop with `bg-background/60 backdrop-blur-sm`
- Centered (or positioned) panel with `glass-strong` or `glass` styling
- Click-outside-to-close behavior
- framer-motion enter/exit animations (scale 0.95 -> 1)
### 4.1 Onboarding Wizard (`OnboardingWizard.tsx`)
An 8-step full-screen wizard (~800 lines). Steps:
| Step | Name | Content |
|------|------|---------|
| 0 | Welcome | Logo + "Welcome to the Hive" (auto-advances in 3s) |
| 1 | Why Waggle | 3 value props: memory, workspace-native, real tools |
| 2 | Choose Experience | Tier selector: Simple / Professional / Full Control |
| 3 | Memory Import | Import from ChatGPT or Claude (JSON upload + preview) |
| 4 | Choose Template | 15 templates in a 5-column grid + workspace name input |
| 5 | Choose Persona | 19 personas in a 4-column grid + custom persona creation |
| 6 | API Key | Provider selector + key input + validation |
| 7 | Ready | Auto-launches workspace (auto-advances in 2s) |
**Templates (15):** Sales Pipeline, Research Hub, Engineering, Marketing & Content, Product Management, Legal & Compliance, Consulting, Customer Support, Finance, HR & People, Operations, Data & Analytics, Recruiting, Design Studio, Blank Workspace.
**Personas (19):** General Purpose, Researcher, Writer, Analyst, Coder, Project Manager, Exec Assistant, Sales Rep, Marketer, Senior PM, HR Manager, Legal Counsel, Business Finance, Consultant, Support Agent, Ops Manager, Data Engineer, Recruiter, Creative Director.
**Key UX features:**
- Progress bar at top + step dots
- "Skip setup" link always visible
- Template-to-persona auto-mapping (e.g., selecting "Sales Pipeline" pre-selects "Sales Rep")
- Agent explainer tips between template and persona steps explaining the relationship
- "Recommended" badge on the auto-mapped persona
- Custom persona creation inline
- Multi-provider API key support with validation
- Telemetry tracking per step
**UX Strengths:**
- The two-step agent creation (template = what, persona = how) is elegant
- Auto-mapping reduces friction while still allowing override
- Memory import from competitors is a smart acquisition tactic
- The "Choose Your Experience" tier step sets expectations early
**UX Weaknesses:**
- The 15-template grid in 5 columns makes each item very small -- on smaller screens this would be cramped
- Step 3 (Memory Import) requires JSON file knowledge -- most users won't know how to export from ChatGPT/Claude
- No visual preview of what the workspace will look like with the selected template
- The wizard is approximately 800 lines in a single component -- maintenance risk
### 4.2 Global Search (`GlobalSearch.tsx`)
Spotlight/command-palette style search (Ctrl+K):
- Full-text search across commands, workspaces, and memory
- Fuzzy matching with scoring
- Categorized results (Commands, Workspaces, Memories, Sessions)
- Keyboard navigation (arrow keys, Enter to select, Escape to close)
- Debounced memory search (300ms, minimum 2 characters)
- Footer hints showing keyboard shortcuts
**UX Assessment:** This is excellent. The command palette is a power-user essential and the implementation is thorough. The fuzzy matching, categorized results, and keyboard navigation are all well-done.
### 4.3 Persona Switcher (`PersonaSwitcher.tsx`)
Three-tier layout:
1. **Universal Modes** (General Purpose, Planner, Verifier, Coordinator) -- 2-column grid
2. **Knowledge Workers** (Researcher, Writer, Analyst, Coder) -- 2-column grid
3. **Specialists** (all domain personas) -- 2-column grid
Also has a Groups tab for switching to agent groups.
Feature gating: non-free personas show a lock icon and are disabled. Upgrade prompt shown at bottom.
### 4.4 Other Overlays
| Overlay | Trigger | Description |
|---------|---------|-------------|
| Create Workspace | Dashboard "New" button | Full workspace creation with template, persona, settings |
| Workspace Switcher | Ctrl+Tab | List of workspaces with persona avatar and group |
| Notification Inbox | Bell icon in StatusBar | Typed notifications (cron, approval, task, message, agent) with mark-read |
| Keyboard Shortcuts | Ctrl+? | Three-section help: Navigation, Quick Actions, Chat |
| Spawn Agent Dialog | Rocket icon in Dock | Task input, persona/model selection, workspace target |
| Login Briefing | Auto on load (after onboarding) | Cross-workspace summary with pending tasks and memories |
| Onboarding Tooltips | After onboarding completes | Progressive tip carousel above the dock |
---
## 5. Design System -- "Hive DS"
### 5.1 Color Palette
The design system is called "Honey on Dark Steel" -- warm amber/honey accents on a near-black background with cold blue undertones.
**Core Colors:**
- Background: `#08090c` (hive-950) -- near-black with blue undertone
- Card/Surface: `#11141c` (hive-850) -- slightly elevated
- Primary/Brand: `#e5a000` (honey-500) -- the distinctive honey gold
- Accent: `#a78bfa` -- AI activity purple
- Foreground: `#e8eaf0` -- warm light text
**Honey Scale (8 stops):**
`#b87a00` -> `#e5a000` -> `#f5b731` -> `#fcd34d` -> `#fde68a` -> `#fef3c7` -> `#fffbeb`
Plus `honey-glow` (12% opacity) and `honey-pulse` (6% opacity) for subtle backgrounds.
**Hive Grays (12 stops):**
From `#08090c` (950) through `#f0f2f7` (50) -- cold-toned grays.
**Status Colors:**
- Healthy: `#34d399` (emerald)
- Warning: `#fbbf24` (amber)
- Error: `#f87171` (soft red)
- Info: `#60a5fa` (blue)
- AI: `#a78bfa` (purple)
### 5.2 Typography
- **Display font:** Space Grotesk (headings, labels, UI chrome) -- applied via `.font-display`
- **Body font:** DM Sans (body text, messages, content)
- **Mono font:** JetBrains Mono / Cascadia Code (code blocks, raw JSON)
The web app imports Space Grotesk and DM Sans from Google Fonts. The Tauri app bundles Inter locally.
### 5.3 Glass Morphism
Two glass utility classes dominate the visual language:
```css
.glass {
background: hsla(30, 8%, 14%, 0.7);
backdrop-filter: blur(20px);
border: 1px solid hsla(38, 40%, 30%, 0.3);
}
.glass-strong {
background: hsla(30, 8%, 12%, 0.85);
backdrop-filter: blur(30px);
border: 1px solid hsla(38, 40%, 30%, 0.3);
}
```
Used on: Dock, StatusBar, AppWindows, all overlay panels, tooltips, context menus.
### 5.4 Spacing and Radius
- Border radius: `0.75rem` (12px) -- generous rounding
- Consistent padding patterns: `p-2` to `p-6` depending on context
- Text sizes: extensive use of `text-xs` (12px), `text-[10px]`, `text-[11px]`, and `text-[9px]` for labels
**UX Concern:** The heavy use of very small text sizes (9-10px) could cause accessibility issues. Much of the UI information is rendered at sizes below the WCAG recommended minimum.
---
## 6. Navigation and Information Architecture
### 6.1 Navigation Model
There is no traditional sidebar or tab navigation. Instead:
1. **Dock** -- primary app launcher (always visible at bottom)
2. **Global Search** (Ctrl+K) -- command palette for everything
3. **Keyboard shortcuts** (Ctrl+Shift+0-9) -- direct app access
4. **Window cycling** (Ctrl+`) -- switch between open windows
5. **Workspace switching** (Ctrl+Tab) -- change active workspace context
6. **Status bar** -- search and notifications
This is a pure desktop-OS navigation model. There are no breadcrumbs, no URL changes, no browser back/forward.
### 6.2 Keyboard Shortcuts
| Shortcut | Action |
|----------|--------|
| Ctrl+K | Global Search |
| Ctrl+Shift+P | Persona Switcher |
| Ctrl+Tab | Workspace Switcher |
| Ctrl+? | Keyboard Help |
| Ctrl+W | Close focused window |
| Ctrl+Shift+M | Minimize focused window |
| Ctrl+Shift+0-9 | Open specific app |
| Ctrl+` | Cycle window focus |
| Escape | Close focused window (if focused) |
| / | Slash commands (in chat input) |
| Enter | Send message |
| Shift+Enter | New line in message |
**UX Assessment:** The keyboard shortcut system is comprehensive and follows established patterns (Ctrl+K for search, etc.). The keyboard shortcuts help dialog is clear and well-organized.
---
## 7. Onboarding Flow Analysis
### 7.1 Flow Summary
```
Boot Screen (4.8s)
-> Onboarding Wizard (if not completed)
Step 0: Welcome (auto-advance 3s)
Step 1: Why Waggle (value props)
Step 2: Choose Experience (tier)
Step 3: Memory Import (optional)
Step 4: Choose Template (15 options)
Step 5: Choose Persona (19 options)
Step 6: API Key (provider + key)
Step 7: Ready (auto-launches, 2s)
-> Login Briefing (cross-workspace summary)
-> Desktop with Onboarding Tooltips (progressive tips)
```
### 7.2 Time to First Value
**Best case (skip everything):** ~5 seconds (boot + click skip)
**Typical case (complete wizard):** ~2-3 minutes
**Worst case (with import + custom persona):** ~5+ minutes
The wizard allows skipping at any point, which is good. But the boot screen has no skip mechanism, adding 5 seconds of mandatory wait on every visit.
### 7.3 Post-Onboarding Support
After the wizard completes:
1. **Onboarding Tooltips** appear above the dock as a progressive tip carousel
2. Tips are template-specific (e.g., Sales Pipeline users see "Try 'Research [company name]'")
3. Users can dismiss all tips or step through them
4. **Login Briefing** (on subsequent visits) shows a cross-workspace summary
This is a well-layered progressive disclosure approach.
---
## 8. Responsiveness and Platform Support
### 8.1 Desktop-Only Design
The application is explicitly designed for desktop viewports:
- `w-screen h-screen overflow-hidden` on the root container
- Fixed pixel dimensions for windows (520px, 560px, etc.)
- Snap zones assume full desktop-width screens
- Dock uses `fixed bottom-3 left-1/2` positioning
- Status bar is `fixed top-0`
- No media queries or responsive breakpoints in the main CSS
- No mobile navigation pattern
### 8.2 Assessment
This is intentionally desktop-only, which is appropriate for an "AI Agent OS" product. The window management paradigm fundamentally requires a large screen. However, there is no graceful degradation for tablet or narrow desktop windows -- the UI would break or become unusable below approximately 768px width.
---
## 9. UX Strengths Summary
1. **The OS metaphor is fully committed and well-executed** -- boot screen, windows, dock, status bar, snap zones all work together coherently
2. **Progressive disclosure via tier-based dock** -- new users see 5 icons, power users see 12+
3. **Workspace Briefing** is a standout feature -- contextual greeting with memories, tasks, suggested prompts
4. **Global Search / Command Palette** is thorough with fuzzy matching and categorized results
5. **Onboarding wizard** with template+persona two-step agent creation is elegant
6. **Glassmorphism design language** is consistent and visually distinctive
7. **Keyboard-first design** with comprehensive shortcuts
8. **Feature gating** with blurred locked content and upgrade prompts
9. **Agent feedback mechanism** with categorized reasons (thumbs + reason picker)
10. **Multi-model support** with 3-lane fallback chain (Primary/Fallback/Budget) in settings
---
## 10. UX Weaknesses and Improvement Opportunities
### Critical
1. **Boot screen has no skip/fast-boot for returning users** -- 4.8 seconds of mandatory wait on every load
2. **Very small text sizes (9-10px) throughout** -- accessibility concern; WCAG recommends minimum 12px for body text
3. **No responsive design** -- completely breaks on tablets or narrow windows
4. **ChatApp.tsx at 730+ lines, FilesApp.tsx at 56K, OnboardingWizard at 800+ lines** -- maintenance risk from monolithic components
### High
5. **Window control buttons are visually indistinct** -- three near-identical circles (only close has red tint); consider macOS-style color coding or icon labels
6. **Knowledge graph visualization is primitive** -- a simple circular SVG layout with no interaction; needs zoom, click-to-focus, drag, filtering for the feature to be useful
7. **Memory import requires JSON expertise** -- most users won't know how to get a ChatGPT/Claude export file
8. **No undo/redo in any context** -- deleting a memory frame, workspace, or agent is irreversible with no confirmation
9. **Volume/Battery icons in status bar are decorative** -- they add OS flavor but could confuse users expecting real indicators
### Medium
10. **Chat header is information-dense** -- persona picker, team presence, model picker, session toggle, agent profile all in one row
11. **No "tile windows" or "arrange all" command** -- common OS feature missing
12. **DockTray popup has no visual connector** to its parent zone icon
13. **Template grid in onboarding (5 columns of 15)** -- too many small items on smaller monitors
14. **Voice app is a placeholder** -- should either be hidden or marked as "Coming Soon" more prominently
15. **No dark/light mode toggle** -- only dark theme exists (appropriate for the brand, but limits accessibility)
16. **`App.css` contains Vite scaffold styles** -- dead code from the project template, including unused `.logo` and `.card` classes
---
## 11. Component Inventory
### OS Shell (7 components)
- `Desktop.tsx` (287 LOC) -- orchestrator
- `AppWindow.tsx` (308 LOC) -- window frame with drag/resize/snap
- `Dock.tsx` (156 LOC) -- bottom launcher
- `DockTray.tsx` (50 LOC) -- zone popup
- `StatusBar.tsx` (84 LOC) -- top menu bar
- `BootScreen.tsx` (139 LOC) -- animated boot sequence
- `ErrorBoundary.tsx` (30 LOC) -- app-level error catch
### App Windows (17 apps)
- `ChatApp.tsx` + `ChatWindowInstance.tsx` + 6 chat-block components
- `DashboardApp.tsx`, `SettingsApp.tsx`, `MemoryApp.tsx`, `AgentsApp.tsx`
- `FilesApp.tsx`, `CockpitApp.tsx`, `EventsApp.tsx`, `ConnectorsApp.tsx`
- `VaultApp.tsx`, `UserProfileApp.tsx`, `MissionControlApp.tsx`
- `CapabilitiesApp.tsx`, `WaggleDanceApp.tsx`, `ScheduledJobsApp.tsx`
- `MarketplaceApp.tsx`, `VoiceApp.tsx`
### Overlays (10 overlays)
- `OnboardingWizard.tsx`, `PersonaSwitcher.tsx`, `GlobalSearch.tsx`
- `CreateWorkspaceDialog.tsx`, `SpawnAgentDialog.tsx`, `WorkspaceSwitcher.tsx`
- `NotificationInbox.tsx`, `KeyboardShortcutsHelp.tsx`
- `LoginBriefing.tsx`, `OnboardingTooltips.tsx`
### Supporting Components
- `ContextMenu.tsx`, `LockedFeature.tsx`, `ModelPilotCard.tsx`, `ModelSelector.tsx`
- `WorkspaceBriefing.tsx`
### Hooks (12 custom hooks)
- `useWindowManager`, `useOverlayState`, `useKeyboardShortcuts`
- `useWorkspaces`, `useMemory`, `useEvents`, `useAgentStatus`
- `useNotifications`, `useOnboarding`, `useOfflineStatus`
- `useKnowledgeGraph`, `useWaggleDance`
---
## 12. Data Flow Architecture
```
Desktop (root state coordinator)
|
|-- useWorkspaces() --> workspaces, activeWorkspace, create/select/patch
|-- useMemory(activeWorkspaceId) --> frames, filters, stats
|-- useEvents(activeWorkspaceId) --> steps, filters
|-- useAgentStatus() --> model, tokens, cost
|-- useNotifications() --> notifications, unread, mark
|-- useOnboarding() --> state, update, complete
|-- useOfflineStatus() --> boolean
|-- useKnowledgeGraph(activeWorkspaceId) --> nodes, edges
|-- useWaggleDance() --> signals
|-- useWindowManager(workspaces) --> windows, open/close/focus
|-- useOverlayState() --> show/hide toggles
|-- useKeyboardShortcuts(handlers) --> event listeners
```
All backend communication goes through `adapter` (in `@/lib/adapter`) which provides a consistent API abstraction layer. The adapter handles offline fallbacks gracefully throughout.
---
## 13. Conclusion
Waggle OS is an ambitious and well-executed desktop OS metaphor for AI agents. The visual design is distinctive (Hive DS with honey/dark-steel palette), the window management is polished, and the progressive disclosure model (tier-based dock, onboarding wizard, tooltips) is thoughtfully layered.
The core strengths are in the "workspace as OS" concept, the rich workspace briefing that leverages persistent memory, and the comprehensive keyboard-first interaction model. The chat experience with block rendering, tool cards, feedback, and pins goes significantly beyond a basic chat interface.
The main areas for investment are: accessibility (text sizes, contrast, responsive design), the knowledge graph visualization (currently too primitive for a memory-centric product), boot performance for returning users, and breaking up the larger monolithic components for maintainability.
The product effectively communicates its tier structure through feature gating without being pushy, and the KVARK enterprise upsell path is subtly woven into the experience rather than being in-your-face.