wyrd/tools
esc

    ↑↓ Move ↵ Open seek results first Search by Pagefind
    Releases

    Configuration

    Each provider reads its own API key. You only need keys for the providers you actually use — an unconfigured provider fails with a clear message and suggests alternatives you do have keys for.

    API keys

    ProviderEnv var / config keyUsed by
    ParallelPARALLEL_API_KEYweb, research, scrape
    ExaEXA_API_KEYweb, scrape
    Brave SearchBRAVE_SEARCH_API_KEYweb brave search
    Brave AnswersBRAVE_ANSWERS_API_KEYweb brave answers, research brave
    PerplexityPERPLEXITY_API_KEYweb perplexity, research perplexity
    Google/GeminiGEMINI_API_KEYresearch google
    FirecrawlFIRECRAWL_API_KEYscrape firecrawl

    Brave splits into two keys: the Search API and the Answers API are billed and provisioned separately, so web brave search and web brave answers (and research brave) can be configured independently.

    Resolution order

    For each key, seek resolves the first source that has a non-empty value:

    1. Process environment variable — always wins. Useful for CI and one-off overrides.
    2. Config file — a flat JSON object at the resolved config path.
    export PARALLEL_API_KEY=…
    export EXA_API_KEY=…

    If SEEK_SERVER_URL is set, local keys are ignored and provider calls go through a seek server instead. See Server mode.

    Config file

    The config path is resolved as:

    1. $XDG_CONFIG_HOME/seek/config.json when XDG_CONFIG_HOME is set.
    2. ~/.config/seek/config.json otherwise.

    The file is a flat JSON object whose keys match the env var names above, so you never learn a second schema:

    {
      "EXA_API_KEY": "…",
      "PERPLEXITY_API_KEY": "…"
    }

    Only string values are read; non-string values are ignored. If the file is not valid JSON (or not a JSON object), seek prints a warning and continues as if no config file were present.

    Managing the config file

    The config command group manages this file:

    seek config path        # print the resolved config file path
    seek config init        # write a template with a placeholder for every key
    seek config init --force  # overwrite an existing config file
    seek config show        # show which keys are set, their source, and masked values
    • config init creates the config directory (mode 0700) and writes the file with mode 0600. It fails if the file already exists unless --force is given.
    • config show lists every known key, whether its value came from env, config, or is unset (—), and a masked preview of the value.