All configuration is via environment variables. Most are set once in .env and forgotten.
| Var | Purpose |
|---|
BRAVE_API_KEY | Brave Search API key. Get one at api.search.brave.com. |
LLM_API_KEY | OpenRouter / OpenAI-compatible provider key. Omit only when LLM_ENDPOINT points to an unauthenticated local server. |
| Var | Default | Purpose |
|---|
LLM_JUDGE_ENABLED | false | Master switch. true to enable classification. |
LLM_ENDPOINT | http://localhost:1234/v1 | Base URL of the chat-completions endpoint. |
LLM_MODEL | google/gemma-4-e4b | Model identifier as the provider expects it. |
LLM_TIMEOUT_MS | 15000 | Per-call timeout. Bump to 45000 for OpenRouter with auto-route + concurrency. |
LLM_CONCURRENCY | 2 | Max in-flight LLM requests. 4-8 for hosted, 2 for single-GPU local. |
LLM_THINKING | false | Prepend a reasoning preamble and raise token budget. Useful for small local models only. |
LLM_PROVIDER_ORDER | (unset) | OpenRouter-specific: comma-separated preferred providers (e.g., groq,cerebras). Auto-route is usually better. |
| Var | Purpose |
|---|
GOOGLE_SAFE_BROWSING_KEY | Google Safe Browsing v4 API key. Omit to disable safety_flag. |
Applied when the tool input doesn’t specify.
| Var | Example | Purpose |
|---|
SIFT_DEFAULT_COUNTRY | JP | ISO-2 uppercase. |
SIFT_DEFAULT_SEARCH_LANG | ja | 2-3 char lowercase. |
| Var | Default | Purpose |
|---|
SIFT_OBSERVATIONS | on | Set to off to disable local JSONL logging entirely. |
| Var | Default | Purpose |
|---|
SIFT_OBSERVATION_SYNC_URL | (unset) | Base URL of an HTTP PUT-capable store. Unset = no remote sync. |
SIFT_OBSERVATION_SYNC_AUTH | (unset) | Full Authorization header value (e.g., Bearer xxx). |
SIFT_OBSERVATION_SYNC_PATH | observations/sift/ | Path prefix under the base URL. |
SIFT_OBSERVATION_SYNC_INSECURE_TLS | false | true to skip TLS cert verification (needed for Obsidian’s self-signed cert). |
See Learning loop for how to use the mirror.