VITE_ to be accessible in the browser, or use server-side prefixes for backend configuration.
GitHub OAuth
Configure GitHub authentication for accessing starred repositories.GitHub OAuth app client ID. Obtained from your GitHub OAuth app settings.This value is embedded in the client bundle and used to initiate the OAuth flow.
GitHub OAuth app client ID for server-side exchange.Used by the backend to verify OAuth requests. Keep this in server environment only.
GitHub OAuth app client secret.Never expose this value in the client bundle. Backend-only variable for OAuth token exchange.
OAuth callback URL that GitHub redirects to after authorization.Must exactly match one of the callback URLs configured in your GitHub OAuth app.Example:
http://localhost:5173/auth/callbackServer-side OAuth callback URL for token exchange verification.Must match
VITE_GITHUB_REDIRECT_URI exactly. Used by the backend to verify OAuth requests.Example: http://localhost:5173/auth/callbackBackend endpoint that exchanges OAuth code + PKCE verifier for access token.This keeps the client secret out of the browser and ensures secure token exchange.
Embedding Backend
Control which compute backend is used for generating embeddings.Embedding backend preference with automatic fallback.Options:
webgpu- Try GPU backend first, fallback to WASM if unavailablewasm- Force CPU/WASM only (kill switch for GPU issues)
WebGPU provides significant performance improvements on modern devices but may not be available in all browsers. The WASM fallback ensures compatibility across all platforms.
Embedding Performance Tuning
Fine-tune embedding generation throughput and resource usage. See Performance Tuning for detailed guidance.Number of parallel embedding workers.Clamped to
1..2. Higher values increase throughput but consume more memory.Recommendation: Use 1 for devices with limited RAM, 2 for modern laptops/desktops.Number of texts processed in each worker batch.Clamped to
1..32. Higher values improve throughput but increase memory pressure.Recommendation: 8-16 for most devices. The system adaptively downshifts on memory pressure.Number of embeddings buffered before writing to SQLite.Higher values reduce write frequency but increase crash-loss window.Recommendation: Keep at
512 unless you experience write bottlenecks.Throttle interval (milliseconds) for UI progress updates during indexing.Prevents main-thread pressure from excessive UI refreshes.Recommendation:
300-500ms balances responsiveness and performance.Enable optimizations for large starred repositories.Options:
1- Enable large library mode (recommended)0- Disable optimizations
Minimum number of repositories to trigger large library optimizations.Only applies when
VITE_EMBEDDING_LARGE_LIBRARY_MODE=1.README Processing
Configure README fetching and chunking behavior.Enable experimental README batch pipeline v2.Options:
1- Enable v2 pipeline with adaptive concurrency and cooldown0- Use standard pipeline
Number of READMEs to fetch in parallel.Higher values speed up initial sync but may trigger rate limits.Recommendation:
20-40 balances speed and API courtesy.Minimum number of pending chunks before triggering embedding batch.Prevents frequent small batches during initial sync.
Maximum chunk size (characters) for text chunking.READMEs are split into overlapping chunks of this size for embedding.Recommendation: Keep at
512 to balance context and retrieval granularity.Ollama Integration (Optional)
Configure local Ollama embedding and LLM support. Ollama usage is controlled by in-app user toggle.Ollama server base URL.Security gate: Must be a localhost/loopback address. Remote endpoints are blocked.
Default Ollama model for embeddings.Used when Ollama embedding is enabled via in-app toggle.Popular models:
nomic-embed-text- Fast, high-quality embeddingsall-minilm- Lightweight alternative
Request timeout (milliseconds) for Ollama API calls.Recommendation:
20000-60000 depending on model size and hardware.WebLLM Browser Provider (Experimental)
Run LLM inference directly in the browser using WebGPU.Enable browser-based WebLLM provider (feature flag).Options:
1- Enable WebLLM with explicit user consent before download0- Disable WebLLM feature
WebLLM requires WebGPU support and downloads multi-gigabyte models. Users must explicitly consent before any download begins. The app recommends appropriate models based on device capabilities.
LLM API Key Encryption (Optional)
Protect stored LLM API keys with client-side encryption.Encryption key for storing LLM API keys in localStorage.Format: 32-byte hex or base64 stringSecurity model:
- If set: API keys are encrypted (AES-GCM) before localStorage storage
- If unset: API keys are not persisted across sessions
Example Configuration
.env.local