Voyage AI — Embedding Provider

Voyage AI is the sole embedding provider for OpenClaw’s 44-DB memory fleet. Every memory chunks_vec column across all 44 SQLite DBs was generated by voyage-4 (70% weight in hybrid 70/30 vector+FTS5 search). All embedding calls route through portkey — never directly to Voyage — using virtual key voyage-embeddin-9dffd3 and Portkey config pc-opencl-22d508. Read this hub before adding agents, changing embedding dimensions, or switching the vector model.

Quick reference

FieldValue
VendorVoyage AI
URLhttps://api.voyageai.com
KB docAPI
Auth methodBearer (API key)
Auth credentialop://Aurora/Voyage/api_key
Cred-proxy portn/a (pending B1-B6 ratification per nemoclaw-audit-2026-05-03)
Webhook portn/a
Webhook handlern/a
Webhook dedup tablen/a
Tunnel pathn/a
Outbound API basehttps://api.voyageai.com/v1 (routed via Portkey)
Rate limits2,000 RPM / 8M TPM (voyage-4)
Rate-limit action429 → exponential backoff (3 retries via Portkey), Discord ops alert
Costvoyage-4: $0.00006/1K tokens; 200M tokens/month free tier
Backup/recoveryVendor-owned; embeddings are reproducible (re-embed if lost)
Discord alert channelops
Drift cadencemanual (on model change or memory DB schema change)
Statusproduction
Primary modelvoyage-4 (1024-dim default)
Portkey configpc-opencl-22d508 (6h semantic cache, 3× retry)
Virtual keyvoyage-embeddin-9dffd3
Duplicate VKvoyage (duplicate — consolidation candidate per portkey hub)

⚠️ Mandatory insert: Fleet-wide memory coverage

Already powers 44 SQLite memory DBs (~5,568 chunks fleet-wide, verified 2026-05-01) at /home/opsadmin/.openclaw/memory/*.sqlite. Every chunks_vec column is a voyage-4 vector at 1024 dimensions. Hybrid search weight: 70% vector (Voyage) + 30% keyword (FTS5). Cross-link: supabase (chunks_vec storage context — note: memory DBs are SQLite, NOT Supabase; Supabase is the RDBMS for structured state). Phase E.2 vault-wikilink suggester will reuse this embedding stack for semantic vault link suggestions. Vendor independence note: Voyage is the only vendor in the embedding tier — zero fallback. If Voyage becomes unavailable, embedding-based memory retrieval degrades to FTS5-only (30% weight path). OSIL Phase 6 may add a secondary embedding provider; track via openclaw-self-improvement-layer-2026-05-03.

Components

  • /home/opsadmin/.openclaw/portkey-proxy/proxy.js — routes embedding calls via Portkey config pc-opencl-22d508; does NOT directly call Voyage
  • /home/opsadmin/.openclaw/workspace/integrations/llamaindex/portkey_voyage_embedding.pyPortkeyVoyageEmbedding class; batches at 128; sets input_type per call direction
  • /home/opsadmin/.openclaw/memory/*.sqlite — 44 SQLite DBs containing chunks_vec (vec0 tables) holding 1024-dim voyage-4 vectors
  • /home/opsadmin/.openclaw/tools/claude-memory.py — memory CLI (search/save/list/stats/delete); calls Voyage indirectly via save path
  • [[sources/kb/voyage/API]] — rate limits, model specs, pricing, error codes (last_verified: 2026-03-04)
  • [[wiki/system-map/osil/vm-osil-overview]] — OSIL memory layer future state map

How it’s used

  • Trigger condition: Any memory_save MCP call or python3 claude-memory.py save invocation causes an embedding call via PortkeyVoyageEmbedding
  • Workflow: Text chunk → PortkeyVoyageEmbedding._get_text_embedding() → Portkey pc-opencl-22d508 → Voyage voyage-4 → 1024-dim float vector → stored in chunks_vec (vec0 table)
  • Query workflow: memory_search_get_query_embedding() sets input_type="query" → cosine similarity against chunks_vec → top-k blended 70% vector + 30% FTS5 score
  • Agents involved: All 44 agents with SQLite DBs; 7 have explicit Voyage headers in models.json: solara, aurora, atlas, main, betteracq, betterfiles, reri
  • Failure mode: Voyage API 429 → Portkey retries (3×, exponential backoff) → if still failing, embedding write to pending_saves queue; FTS5-only search degrades gracefully
  • Success criteria: Memory save returns chunk_id; chunks_vec rowcount increases by 1; semantic search returns cosine similarity > 0.7 for near-duplicate queries

Agents that touch this

  • _summary — highest memory density; aurora.sqlite is primary search target
  • _summaryacquisitions.sqlite anomaly: only 1 chunk (Phase 7.5 investigation pending)
  • _summary — intel/research agent; heavy memory write cadence
  • _summary — dispo.sqlite; buyer match context
  • _summary — backfill agent seeding memory DBs fleet-wide

Skills that invoke this

Plans that govern this

Feedback rules

KB / source docs

  • API — embeddings API, reranking, rate limits, pricing (last_verified: 2026-03-04)

System maps

Voyage is in the Memory/embeddings cluster (anchor: supabase). For LLM routing cluster context, see:

  • portkey — anchor; routes all Voyage calls via pc-opencl-22d508; CHOKEPOINT-1 enforcement
  • anthropic — LLM brain; Voyage is the embedding layer; both route through Portkey
  • openrouter — LLM fallback tier; does NOT handle embeddings
  • moonshot-kimi — LLM specialty tier; does NOT handle embeddings

Anchor: supabase

MemberRole
supabasePrimary RDBMS; agent memory is SQLite-separate but Supabase hosts tool_calls, processed_webhook_events, deal tables
portkeyRoutes all Voyage embedding calls; pc-opencl-22d508 config; virtual key voyage-embeddin-9dffd3
anthropicLLM; feeds text to be embedded; SOUL.md agent context saved to memory post-conversation
1passwordVault Aurora holds op://Aurora/Voyage/api_key

Open issues / TODOs

  • Duplicate Portkey virtual key voyage (vs voyage-embeddin-9dffd3) — consolidation candidate; tracked in portkey
  • acquisitions.sqlite only 1 chunk — Phase 7.5 investigation per openclaw-fragmentation-fix-2026-05-01
  • cred-proxy-eligible: pending — will resolve after B1-B6 ratification per nemoclaw-audit-2026-05-03
  • Phase E.2 vault-wikilink semantic suggester will add significant embedding call volume — monitor rate limits

Recent activity

  • 2026-05-03: hub created (W2-S7)
  • 2026-05-01: 44 SQLite DBs and ~5,568 chunks fleet-count verified
  • 2026-03-04: KB doc sources/kb/voyage/API.md last verified