Providers & Keys
Shipi18n never holds a key of its own. Every package reads yours from the environment and talks to your provider directly.
Supported providers
| Provider | Flag | Environment variable | SDK to install |
|---|---|---|---|
| Anthropic (default) | -p anthropic | ANTHROPIC_API_KEY | @anthropic-ai/sdk |
| OpenAI | -p openai | OPENAI_API_KEY | openai |
| Anything else | custom adapter | yours | — |
The provider SDKs are optional peer dependencies, so you install only the one you use. The CLI and the plugins will tell you which package is missing if you pick a provider without it.
Where the key comes from
Resolution order, first match wins:
- An explicit
--api-keyflag orapiKeyoption - The provider environment variable (
ANTHROPIC_API_KEY/OPENAI_API_KEY)
Nothing is cached, written to disk or logged. In CI, put the key in your secret store and expose it as an environment variable for the job.
Overriding the model
shipi18n translate locales/en.json --target ja --model claude-opus-4-8
Omit --model and each adapter uses its own current default.
Checking needs no key at all
Everything above is about translating. Validating translations — shipi18n check and the MCP validation tools — is deterministic and calls no model, so it runs with no API key anywhere in the setup.