Skip to content

gbrain sync and gbrain embed ignore Voyage AI embedding config, hardcode OpenAI #1086

@jeunessima

Description

@jeunessima

What happened?

gbrain sync and gbrain embed ignore the Voyage AI embedding config specified in config.json and hardcode OpenAI (openai:text-embedding-3-large) for all embedding operations. When no OPENAI_API_KEY is set, all files fail with OpenAI embedding requires OPENAI_API_KEY. This blocks the entire sync pipeline — files are never imported because the embed step fails before import completes.

gbrain import

--no-embed works as a workaround to import files without embeddings, but gbrain embed --stale (run separately to create embeddings) also fails with the same OpenAI error, so embeddings can never be created.

What did you expect?

When config.json specifies "provider": "voyage" and VOYAGE_API_KEY is set in the env, both gbrain sync and gbrain embed should use Voyage AI for embeddings.

Steps to reproduce

  1. Configure gBrain with Voyage AI in ~/.gbrain/config.json: "provider": "voyage", "model": "voyage-4-large". Set VOYAGE_API_KEY in ~/.gbrain/.env. Do NOT set OPENAI_API_KEY.
  2. Run gbrain sync --full
  3. All files fail with OpenAI embedding requires OPENAI_API_KEY. — sync is blocked, no files are imported.

Environment

  • gbrain version: 0.32.0
  • OS: Linux 6.8.0-110-generic x86_64
  • Bun version: 1.3.13
  • Database: self-hosted Postgres (schema v50, pgvector)

gbrain doctor --json output

{"schema_version":2,"status":"warnings","health_score":90,"checks":[{"name":"sync_failures","status":"ok","message":"139 historical sync failure(s), all acknowledged [UNKNOWN=139]."},{"name":"connection","status":"ok","message":"Connected, 264 pages"},{"name":"pgvector","status":"ok","message":"Extension installed"},{"name":"embeddings","status":"ok","message":"100% coverage, 0 missing"},{"name":"embedding_provider","status":"ok","message":"Skipped (no provider credentials). Model: openai:text-embedding-3-large."},{"name":"alternative_providers","status":"ok","message":"Detected 1 alternative embedding provider ready to use: voyage. Run gbrain providers list to switch."},{"name":"brain_score","status":"ok","message":"Brain score 78/100 (embed 35/35, links 22/25, timeline 1/15, orphans 10/15, dead-links 10/10)"}]}
    
    
    Key evidence from doctor:
    - embedding_provider: Skipped (no provider credentials). Model: openai:text-embedding-3-large.
    - alternative_providers: Detected 1 alternative embedding provider ready to use: voyage.
    
    The doctor detects Voyage as ready including the API key but the sync/embed pipelines don't use it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions