Most people want this
[research] extra has no provider SDK on
its own — pair it with openai, google, or anthropic. Then set that one key (next
section) and you’re ready.
One key is enough — whichever provider you use. Embeddings default to a small local
model (no API key, downloaded once), so a single chat key gets you a full run. If you have
an OpenAI or Google key, metalworks uses its embeddings automatically (higher quality, no
download). Either way, you never need a second key.
No API key? Run keyless on your Claude Code login. Install
metalworks[research,claude-code]
and run with no key set — the chat model and web search fall back to your Claude Code session
(the bundled claude CLI). See Run on your Claude Code login.Pick your extras
Install only what your workflow needs — combine them like"metalworks[research,reddit]".
If you call something without its extra, metalworks tells you exactly what to install
instead of crashing.
Set a provider key
Set the key for the provider you installed — metalworks resolves the chat provider from whichever key is present (Anthropic → OpenAI → Google → OpenRouter):fastembed, bundled with [research]),
downloaded once on first use:
Pre-download the local model so your first run isn’t blocked on it:
EXA_API_KEY or TAVILY_API_KEY if present. Reddit posting needs REDDIT_CLIENT_ID /
REDDIT_CLIENT_SECRET — see Reddit engagement.
Check your setup
pip install …”) — so you know you’re ready before you spend a token. metalworks models list shows the same model resolution plus a provider reachability matrix.
Next: run your first real report in the Quickstart.