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
| Field | Value |
|---|---|
| Vendor | Voyage AI |
| URL | https://api.voyageai.com |
| KB doc | API |
| Auth method | Bearer (API key) |
| Auth credential | op://Aurora/Voyage/api_key |
| Cred-proxy port | n/a (pending B1-B6 ratification per nemoclaw-audit-2026-05-03) |
| Webhook port | n/a |
| Webhook handler | n/a |
| Webhook dedup table | n/a |
| Tunnel path | n/a |
| Outbound API base | https://api.voyageai.com/v1 (routed via Portkey) |
| Rate limits | 2,000 RPM / 8M TPM (voyage-4) |
| Rate-limit action | 429 → exponential backoff (3 retries via Portkey), Discord ops alert |
| Cost | voyage-4: $0.00006/1K tokens; 200M tokens/month free tier |
| Backup/recovery | Vendor-owned; embeddings are reproducible (re-embed if lost) |
| Discord alert channel | ops |
| Drift cadence | manual (on model change or memory DB schema change) |
| Status | production |
| Primary model | voyage-4 (1024-dim default) |
| Portkey config | pc-opencl-22d508 (6h semantic cache, 3× retry) |
| Virtual key | voyage-embeddin-9dffd3 |
| Duplicate VK | voyage (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 configpc-opencl-22d508; does NOT directly call Voyage/home/opsadmin/.openclaw/workspace/integrations/llamaindex/portkey_voyage_embedding.py—PortkeyVoyageEmbeddingclass; batches at 128; setsinput_typeper call direction/home/opsadmin/.openclaw/memory/*.sqlite— 44 SQLite DBs containingchunks_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_saveMCP call orpython3 claude-memory.py saveinvocation causes an embedding call viaPortkeyVoyageEmbedding - Workflow: Text chunk →
PortkeyVoyageEmbedding._get_text_embedding()→ Portkeypc-opencl-22d508→ Voyagevoyage-4→ 1024-dim float vector → stored inchunks_vec(vec0 table) - Query workflow:
memory_search→_get_query_embedding()setsinput_type="query"→ cosine similarity againstchunks_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_savesqueue; FTS5-only search degrades gracefully - Success criteria: Memory save returns
chunk_id;chunks_vecrowcount increases by 1; semantic search returns cosine similarity > 0.7 for near-duplicate queries
Cross-links
Agents that touch this
- _summary — highest memory density; aurora.sqlite is primary search target
- _summary —
acquisitions.sqliteanomaly: 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
- il-marketplace-pull — il-marketplace-pull v2; enrichment results saved to memory
- acq-analyze — conversation analysis outputs saved as memory chunks
- acquisitions-followup — follow-up context retrieved via memory_search
Plans that govern this
- openclaw-self-improvement-layer-2026-05-03 — OSIL Phase 6 may add secondary embedding provider; B13 IL AI replication uses embeddings
- openclaw-fragmentation-fix-2026-05-01 — Phase 7.5: acquisitions.sqlite 1-chunk anomaly investigation
- openclaw-vault-wikilink-optimization-2026-05-03 — Phase E.2: vault-wikilink suggester reuses Voyage embedding stack
- nemoclaw-audit-2026-05-03 — B1-B6 ratification will determine cred-proxy eligibility for this endpoint
Feedback rules
- feedback_no_plaintext_creds —
op://Aurora/Voyage/api_keynever inline - feedback_verify_schema_before_designing — check vec0 schema before adding new SQLite DBs
- feedback_audit_before_architect — verify chunks_vec rowcount before assuming embeddings exist
- feedback_chokepoint_principle — G-CHOKEPOINT; embedding writes are NOT in tool_calls table (embedding tier separate from LLM tier)
- feedback_dual_write_required — pending_saves fallback queue for failed embedding writes
KB / source docs
- API — embeddings API, reranking, rate limits, pricing (last_verified: 2026-03-04)
System maps
- request-lifecycle — embedding call path shown in Lane 4 (memory write)
- vm-osil-overview — OSIL memory tier future state
Related: LLM provider tier cluster
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
Related: Memory/embeddings cluster
Anchor: supabase
| Member | Role |
|---|---|
| supabase | Primary RDBMS; agent memory is SQLite-separate but Supabase hosts tool_calls, processed_webhook_events, deal tables |
| portkey | Routes all Voyage embedding calls; pc-opencl-22d508 config; virtual key voyage-embeddin-9dffd3 |
| anthropic | LLM; feeds text to be embedded; SOUL.md agent context saved to memory post-conversation |
| 1password | Vault Aurora holds op://Aurora/Voyage/api_key |
Open issues / TODOs
- Duplicate Portkey virtual key
voyage(vsvoyage-embeddin-9dffd3) — consolidation candidate; tracked in portkey acquisitions.sqliteonly 1 chunk — Phase 7.5 investigation per openclaw-fragmentation-fix-2026-05-01cred-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.mdlast verified