{"slug": "signet-strategy-split-desktop-embeddings-openclaw-contributions", "title": "Signet Strategy Split: Desktop Embeddings + OpenClaw Contributions", "summary": "Signet is splitting its strategy into two plans: a desktop-first embedding architecture with three quality tiers and a contribution plan to OpenClaw. The desktop plan ships Tier 0 (transformers.js) as default, with fallback behavior for higher tiers. The OpenClaw plan focuses on small, low-risk PRs to build trust, starting with content normalization and importance-aware scoring.", "body_md": "# Signet Strategy Split: Desktop Embeddings + OpenClaw Contributions\n\n## Plan A: Desktop Embedding Dependency Tiers (Signet-wide)\n\n### Objective\n\nShip a reliable desktop-first embedding architecture with clear quality tiers while keeping the librarian tied to the user’s existing LLM provider/runtime.\n\n### Scope\n\nThis plan is for Signet desktop installs and is independent of OpenClaw upstream PR waves.\n\n### Tier Model\n\nLibrarian rule (all tiers):\n\n- The librarian always uses the user’s existing runtime/provider LLM (OpenClaw/Claude Code/OpenCode/Ollama-hosted chat model, etc.).\n- Tiering applies to\n**embeddings only**.\n\nTier definitions:\n\n- Tier 0 (default):\n`transformers.js`\n\nlocal embeddings- No external process\n- No API key required\n- Best out-of-box reliability for desktop installs\n\n- Tier 1: Ollama embeddings (example:\n`nomic-embed-text`\n\n)- Local model server required\n- Better quality than Tier 0 on many setups\n- No external API cost\n\n- Tier 3: Remote API embeddings (example: OpenAI\n`text-embedding-3-large`\n\n)- API key required\n- Highest quality target\n- Network dependency and usage cost\n\n### Selection + Fallback Behavior\n\n- Respect explicit user config if set.\n- If unset, default to Tier 0.\n- If Tier 1 is selected but Ollama is unavailable, fail over to Tier 0.\n- If Tier 3 is selected but API key/network check fails, fail over to Tier 1 when available, else Tier 0.\n\n### Rollout Order\n\n- Ship Tier 0 as stable default for desktop.\n- Add Tier 1 with health check + connectivity diagnostics.\n- Add Tier 3 with key validation, budget/telemetry guardrails, and clear degraded-mode messaging.\n\n## Plan B: OpenClaw Contribution Plan\n\n### Primary Objective\n\nEarn trust with steipete through consistently useful upstream contributions so Signet is a credible option when OpenClaw converges on its long-term memory path.\n\n### Context\n\nWe reviewed 60+ memory-related OpenClaw PRs and studied the\n`memory-lancedb`\n\nplugin (671 lines) plus `memory-core`\n\n(38 lines).\nCurrent pattern:\n\n- Small, focused, low-risk memory improvements are merged more often\n- Large redesigns, dependency-heavy changes, and broad rewrites are usually rejected or stalled\n- PRs under ~500 lines with clear test coverage and no migration impact are the highest-probability path\n\n### Strategy\n\nDo not lead with “use our plugin.” Lead with concrete improvements that help OpenClaw regardless of whether Signet is adopted.\n\nGuiding posture:\n\n- Helpful and technically precise\n- No sales framing inside PRs\n- Credit OpenClaw maintainers and existing design decisions\n- Keep each PR independently valuable and easy to review\n\n### What Stays Differentiated in Signet\n\n- Secret store and vault workflow\n- Cross-platform identity portability (\n`SOUL.md`\n\n,`IDENTITY.md`\n\n,`USER.md`\n\n) - Full pipeline orchestration (extraction -> decision -> graph -> retention -> summarization)\n- Daemon/connectors/harness config synchronization layer\n\n### Micro-PR Campaign (ranked by acceptance probability)\n\nSelection criteria: small scope, low coupling, no new dependencies, clear tests, explicit rollback.\n\n### Wave 1: Highest probability\n\n**PR 1: Content normalization + stronger dedup hash**\n\n- Files:\n`extensions/memory-lancedb/index.ts`\n\n- What: normalize whitespace and casing/punctuation edge cases before hash generation; skip near-duplicates\n- Why: reduces duplicate growth from formatting-only variance\n- Size target: ~50 lines\n- Migration: none\n- Signet source:\n`platform/daemon/src/content-normalization.ts`\n\n**PR 2: Importance-aware score calibration**\n\n- Files:\n`extensions/memory-lancedb/index.ts`\n\n(`MemoryDB.search`\n\n) - What: incorporate\n`importance`\n\ninto final ranking (for example`score = (1 / (1 + distance)) * (0.5 + 0.5 * importance)`\n\n) - Why: importance is stored but currently does not affect ordering\n- Size target: ~20-30 lines\n- Migration: none\n- Signet source:\n`platform/core/src/search.ts`\n\n(ranking normalization patterns)\n\n**PR 3: Provider availability tracker (ring buffer)**\n\n- Files: new small utility + integration point in embedding call path\n- What: fixed-size ring buffer for embedding outcomes\n(\n`success|failure|timeout`\n\n) - Why: adds operational visibility without persistent storage changes\n- Size target: ~80 lines\n- Migration: none\n- Signet source:\n`platform/daemon/src/diagnostics.ts`\n\n### Wave 2: Medium complexity, still low-risk\n\n**PR 4: Configurable recall threshold ( minScore)**\n\n- Files:\n`extensions/memory-lancedb/index.ts`\n\n- What: expose optional\n`minScore`\n\nin`memory_recall`\n\n, validate range, and keep current default when omitted - Why: lets operators tune precision/recall without changing code\n- Size target: ~20-40 modified lines\n- Migration: none\n\n**PR 5: Token-aware recall budget (optional parameter)**\n\n- Files:\n`extensions/memory-lancedb/index.ts`\n\n- What: optional\n`contextTokenBudget`\n\n; stop adding recalls when budget is reached; default behavior remains current limit-based recall - Why: better context-size control with backward compatibility\n- Size target: ~40 lines\n- Migration: none\n\n**PR 6: Degraded-mode error signaling when embeddings fail**\n\n- Files:\n`extensions/memory-lancedb/index.ts`\n\n- What: on embedding failure, return explicit degraded-mode status and actionable guidance in tool details/logs (instead of generic/no-result behavior)\n- Why: memory availability failures should be diagnosable and not look like “no memories exist”\n- Size target: ~40-60 lines\n- Migration: none in initial PR scope\n- Note: if lexical fallback is desired later, ship it as a separate PR with isolated indexing scope\n\n### Wave 3: Submit only after trust is established\n\n**PR 7: TTL support for temporary memories**\n\n- Files:\n`extensions/memory-lancedb/index.ts`\n\n- What: optional\n`expiresAt`\n\n, filter expired rows, cleanup path - Size target: ~60 lines\n- Migration: likely yes (new column)\n- Signet source:\n`platform/daemon/src/pipeline/retention-worker.ts`\n\n**PR 8: Rate-limited repair actions**\n\n- Files: new utility + minimal call-site integration\n- What: cooldown + hourly budget for maintenance actions\n- Size target: ~100 lines\n- Migration: none\n- Signet source:\n`platform/daemon/src/repair-actions.ts`\n\n**PR 9: Optional reranking with timeout guard**\n\n- Files: new utility + search integration\n- What: rerank top-N with strict timeout and fallback to original order\n- Size target: ~120 lines\n- Migration: none\n- Signet source:\n`platform/daemon/src/pipeline/reranker.ts`\n\n### PR Quality Bar (required for every submission)\n\nEach PR must use OpenClaw’s canonical PR template sections\n(`.github/pull_request_template.md`\n\n) with complete, concrete answers:\n\n- Problem statement\n- Scope (what is intentionally out of scope)\n- Test plan\n- Rollback plan\n- Risk notes\n- Security impact\n- Repro + verification\n- Human verification\n- Compatibility / migration\n- Failure recovery\n\nMinimum test expectations:\n\n- Unit test for new behavior\n- Regression test covering the bug/path fixed\n- No behavior change in default path unless explicitly intended\n- Local validation command succeeds:\n`pnpm build && pnpm check && pnpm test`\n\nRollback requirement:\n\n- Each PR should be reversible with a small, isolated revert\n- Avoid touching multiple subsystems in one PR\n\nAI-assisted disclosure requirement:\n\n- Mark PR as AI-assisted in title or description\n- State testing level (untested / lightly tested / fully tested)\n- Include prompts/session notes when possible\n\n### Signet Plugin Improvements (parallel track)\n\nWhile contributing upstream, improve `@signetai/adapter-openclaw`\n\nin\nparallel:\n\n- Finalize\n`openclaw.plugin.json`\n\n(`kind: \"memory\"`\n\n, complete`configSchema`\n\n, clear`uiHints`\n\n) - Enforce token budget cap for injected memories\n- Verify identity injection (\n`SOUL.md`\n\n/`IDENTITY.md`\n\n/`USER.md`\n\n) at session start - Integrate health reporting with OpenClaw doctor flow\n- Tight README: 3-command setup + architecture diagram\n- Ensure librarian/provider bridge follows OpenClaw provider settings\n\n### Community Engagement Plan\n\n### GitHub (after Wave 1 PRs are live)\n\n- Comment on issue\n`#12880`\n\nwith implementation notes from identity file handling - Comment on PR\n`#24154`\n\nwith concrete interoperability learnings - Open one technical discussion: cross-platform identity portability (non-promotional)\n\n### X/Twitter (after positive review signal)\n\n- Post concise engineering updates tied to shipped upstream improvements\n- Highlight contribution intent first, Signet second\n- Keep tone factual and collaborative\n\n### Demo (after initial trust is established)\n\n- Same agent persona/context across Claude Code and OpenClaw\n- Same memory continuity with no manual reconfiguration\n- Short recording showing portability and operational stability\n\n### Anti-Patterns\n\n- PRs over ~500 lines\n- New core dependencies without prior maintainer buy-in\n- Architecture rewrites framed as “replacement”\n- Marketing language in technical review threads\n- Giving away core Signet differentiators prematurely\n\n### Execution Timeline\n\n- Now: finalize Wave 1 specs, exact target functions/files, and tests\n- Week 1: submit Wave 1 PRs (small, independent, reversible)\n- Week 1-2: continue adapter hardening in parallel\n- Week 2-3: submit Wave 2 PRs based on review feedback\n- Week 3-4: technical engagement in issues/discussions\n- Week 4+: demo and public narrative once upstream trust is visible\n\n### Success Metrics\n\nPrimary success metric:\n\n- steipete sees Signet as a high-signal contributor and includes us in memory-path shortlist discussions\n\nLeading indicators (measurable):\n\n- Wave 1 merge rate\n- Median time to first maintainer response\n- Number of requested rework cycles per PR\n- Number of follow-up PR invitations or direct maintainer pings\n- OpenClaw discussion references to Signet work (technical, not promotional)", "url": "https://wpnews.pro/news/signet-strategy-split-desktop-embeddings-openclaw-contributions", "canonical_source": "https://signetai.sh/docs/specs/complete/openclaw-integration-strategy/", "published_at": "2026-06-18 07:37:48+00:00", "updated_at": "2026-06-18 23:38:24.947536+00:00", "lang": "en", "topics": ["developer-tools", "artificial-intelligence", "machine-learning", "ai-infrastructure"], "entities": ["Signet", "OpenClaw", "Claude Code", "OpenCode", "Ollama", "OpenAI", "steipete", "transformers.js"], "alternates": {"html": "https://wpnews.pro/news/signet-strategy-split-desktop-embeddings-openclaw-contributions", "markdown": "https://wpnews.pro/news/signet-strategy-split-desktop-embeddings-openclaw-contributions.md", "text": "https://wpnews.pro/news/signet-strategy-split-desktop-embeddings-openclaw-contributions.txt", "jsonld": "https://wpnews.pro/news/signet-strategy-split-desktop-embeddings-openclaw-contributions.jsonld"}}