Configuration

Configuration file

Sibyl reads its configuration from ~/.sibyl/config.json, created with sensible defaults on first run. It has two sections:

{
  "plugins": {
    "search": "builtin-searxng-search",
    "fetch": "builtin-crawl4ai-fetch",
    "parse": "builtin-parse-htmlToMd",
    "ask": "builtin-ai-ask"
  },
  "variables": [
    {
      "name": "SIBYL_SHOW_SEARCH_DESCRIPTION",
      "value": "true"
    }
  ]
}

The plugins section

Maps each plugin type (search / fetch / ask / parse) to the name of the plugin to use for it. Exactly one plugin per type. The value must match a plugin's name (a built-in like builtin-exa-search, or one of your custom-written plugins).

The built-in plugins are:

  1. SearXNG Search - builtin-searxng-search
  2. Crawl4AI Fetch - builtin-crawl4ai-fetch
  3. Exa Search - builtin-exa-search
  4. Exa Fetch - builtin-exa-fetch
  5. Firecrawl Search - builtin-firecrawl-search
  6. Firecrawl Fetch - builtin-firecrawl-fetch
  7. AlterLab Search - builtin-alterlab-search
  8. AlterLab Fetch - builtin-alterlab-fetch
  9. Bright Data Search - builtin-brightdata-search
  10. Bright Data Fetch - builtin-brightdata-fetch
  11. AI Ask (Supports OpenAI, Anthropic, Ollama, OpenRouter) - builtin-ai-ask
  12. HTML to Markdown Parse - builtin-parse-htmlToMd

The variables section

A list of { name, value } pairs injected into the process environment at startup. Use this to provide secrets and settings (e.g., API keys) that plugins read via process.env.

Precedence: Variable in the configuration file wins over the environment. A variable defined here overrides any existing environment variable of the same name; anything not listed here falls back to the real environment. For example, a plugin reading process.env.EXA_API_KEY gets the configuration value if present, otherwise whatever was exported in your shell.

Plugin environment variables

Each built-in plugin reads the variables below (set them via variables or the real environment, per the precedence rule above). A required variable causes the plugin to error if it is not set.

All search plugins also honor the following environment variables:

  1. SIBYL_SEARCH_RESULTS_LIMIT (default 10): Sibyl passes it to the search provider if it supports a result-count parameter, and always slices the returned results down to this limit.
  2. SIBYL_SHOW_SEARCH_DESCRIPTION (default true): When "true", includes result snippet/description in the output.

Here is a list of all the environment variables for the built-in plugins:

VariableRequiredDefaultDescription
SIBYL_SEARXNG_URLNohttp://localhost:8080Base URL of a running SearXNG instance. Sibyl uses /search endpoint with format=json.
SIBYL_SEARXNG_ENGINESNo(none)Comma-separated SearXNG engines to query (e.g. google); omitted when unset.
SIBYL_SHOW_SEARCH_DESCRIPTIONNotrueWhen "true", includes result content in the output.
SIBYL_SEARCH_RESULTS_LIMITNo10Maximum number of search results to return; passed to the when supported and always applied by slicing.

Requires a SearXNG instance with the JSON output format enabled. See more at https://github.com/searxng/searxng/discussions/3542

Crawl4AI Fetch

VariableRequiredDefaultDescription
SIBYL_CRAWL4AI_URLNohttp://localhost:11235Base URL of a running Crawl4AI server. Sibyl uses the /crawl endpoint to fetch the data

Requires a Crawl4AI server, e.g., via Docker. See more at https://hub.docker.com/r/unclecode/crawl4ai

VariableRequiredDefaultDescription
EXA_API_KEYYesExa API key.
SIBYL_SHOW_SEARCH_DESCRIPTIONNotrueWhen "true", includes result highlights in the output.
SIBYL_SEARCH_RESULTS_LIMITNo10Maximum number of search results to return; passed to the when supported and always applied by slicing.

Exa Fetch

VariableRequiredDefaultDescription
EXA_API_KEYYesExa API key.
VariableRequiredDefaultDescription
FIRECRAWL_API_KEYYesFirecrawl API key (includes the fc- prefix).
SIBYL_SHOW_SEARCH_DESCRIPTIONNotrueWhen "true", includes result descriptions in the output.
SIBYL_SEARCH_RESULTS_LIMITNo10Maximum number of search results to return; passed to the when supported and always applied by slicing.

Firecrawl Fetch

VariableRequiredDefaultDescription
FIRECRAWL_API_KEYYesFirecrawl API key (includes the fc- prefix).
SIBYL_FIRECRAWL_FETCH_USE_HTMLNofalseWhen "true", fetches the raw HTML and runs it through the configured parse plugin; otherwise returns the markdown from Firecrawl with extra blank lines collapsed.
VariableRequiredDefaultDescription
ALTERLAB_API_KEYYesAlterLab API key.
SIBYL_SHOW_SEARCH_DESCRIPTIONNotrueWhen "true", includes result snippets in the output.
SIBYL_SEARCH_RESULTS_LIMITNo10Maximum number of search results to return; passed to the when supported and always applied by slicing.

AlterLab Fetch

VariableRequiredDefaultDescription
ALTERLAB_API_KEYYesAlterLab API key.
VariableRequiredDefaultDescription
BRIGHTDATA_API_KEYYesBright Data API key.
BRIGHTDATA_SERP_API_ZONEYesBright Data SERP API zone.
SIBYL_SHOW_SEARCH_DESCRIPTIONNotrueWhen "true", includes result descriptions in the output.
BRIGHTDATA_SERP_API_LANGUAGENoenSearch language (Google hl).
BRIGHTDATA_SERP_API_COUNTRYNo(none)Search country (Google gl); omitted when unset.
SIBYL_SEARCH_RESULTS_LIMITNo10Maximum number of search results to return; passed to the when supported and always applied by slicing.

Bright Data Fetch

VariableRequiredDefaultDescription
BRIGHTDATA_API_KEYYesBright Data API key.
BRIGHTDATA_WEB_UNLOCKER_API_ZONEYesBright Data Web Unlocker API zone.

AI Ask

Reads a URL through the configured fetch plugin, then asks an LLM the question against that content. A working fetch plugin must also be configured (plugins.fetch).

VariableRequiredDefaultDescription
SIBYL_AI_PROVIDERYesLLM: one of openai, anthropic, ollama, openrouter.
SIBYL_MODEL_NAMEYesModel id passed to the (e.g. gpt-5.4-mini, claude-sonnet-4-6, llama3.1).
OPENAI_API_KEYConditionalRequired when SIBYL_AI_PROVIDER=openai.
ANTHROPIC_API_KEYConditionalRequired when SIBYL_AI_PROVIDER=anthropic.
OPENROUTER_API_KEYConditionalRequired when SIBYL_AI_PROVIDER=openrouter.
OLLAMA_BASE_URLNohttp://localhost:11434/apiBase URL of a running Ollama server; used only when SIBYL_AI_PROVIDER=ollama (no API key).

HTML to Markdown Parse

No environment variables.