Snag · bring your own key
Setting up providers
Snag talks to a model provider with your API key,
read from the environment — nothing is proxied through a Snag service. Three
adapters are supported today; the default is Anthropic, so for most people
step one is a single export.
Supported adapters
anthropic
- Default model
claude-sonnet-4-6- Key env
ANTHROPIC_API_KEY- Base URL
- api.anthropic.com/v1
openai
- Default model
- none — set
--model - Key env
OPENAI_API_KEY- Base URL
- api.openai.com/v1
openrouter
- Default model
- none —
vendor/modelslug - Key env
OPENROUTER_API_KEY- Base URL
- openrouter.ai/api/v1
1 · Provide a key
The key is resolved as SNAG_API_KEY → the active adapter's own
env var. Set whichever you prefer:
export ANTHROPIC_API_KEY=sk-ant-... # default provider
export OPENAI_API_KEY=sk-... # used with --adapter openai
export OPENROUTER_API_KEY=sk-or-... # used with --adapter openrouter
# …or a single key for whichever adapter is active:
export SNAG_API_KEY=...
SNAG_API_KEY, if set, is used for every
adapter (it's consulted before the per-adapter var). To hold several providers
at once — e.g. to compare them — leave SNAG_API_KEY
unset and set
each adapter's own key.
2 · Choose a provider per run
Override the provider/model per run — precedence is flag › SNAG_* env › default:
# Anthropic is the default — no flags needed
snag map prd.md
# OpenAI (model is required — there's no OpenAI default)
snag map prd.md --adapter openai --model gpt-5.4-mini
# OpenRouter (model is a vendor/model slug)
snag map prd.md --adapter openrouter --model anthropic/claude-sonnet-4-5
# …or persist for the session:
export SNAG_ADAPTER=openai SNAG_MODEL=gpt-5.4-mini
Note: OpenAI reasoning models (gpt-5.x / o-series)
reject an explicit temperature, so --temperature is ignored for them.
Custom endpoints
Point an adapter at a custom or compatible endpoint — a proxy, gateway, or self-host. The base URL resolves the same way the key does: a generic override first, then the active adapter's own variable, then the built-in default.
| Variable | What it does |
|---|---|
SNAG_API_URL |
Base URL for the active
adapter; wins over the per-adapter variable. Stamped into meta.apiUrl.
|
ANTHROPIC_API_URLOPENAI_API_URLOPENROUTER_API_URL
|
Per-adapter base URL (used when SNAG_API_URL
is unset) — the URL counterpart of the per-adapter keys, so several providers can hold distinct endpoints at once.
|
# Generic — applies to whichever adapter is active:
export SNAG_API_URL=https://my-gateway.example.com/v1
# …or per-adapter, to hold several at once (leave SNAG_API_URL unset):
export ANTHROPIC_API_URL=https://anthropic-gw.example.com/v1
export OPENAI_API_URL=https://openai-gw.example.com/v1
export OPENROUTER_API_URL=https://openrouter-gw.example.com/v1
SNAG_API_URL
is set it applies to every
adapter, so for a per-provider setup leave
it unset and set each adapter's own <ADAPTER>_API_URL.
Provider label
| Variable | What it does |
|---|---|
SNAG_PROVIDER_NAME |
A vendor label stamped into the map's meta.providerName
(observability only — the engine can't infer the vendor from adapter + base URL alone).
|
export SNAG_PROVIDER_NAME=OpenRouter