name: provider-integration
description: Adds new AI providers to claude-council, configures provider API settings, troubleshoots provider connections, and documents the provider script interface. Covers creating provider shell scripts, setting API keys, and validating connectivity. Triggers on "add provider", "new AI agent", "provider not working", "API configuration", or "extend council".
Adding AI Providers to Claude Council
Provider Script Interface
Each provider is a shell script in scripts/providers/ that:
- Accepts a prompt as the first argument
- Outputs the AI response to stdout
- Exits 0 on success, non-zero on failure
Quick Start
- Create
scripts/providers/{name}.sh (see api-patterns.md for templates)
chmod +x scripts/providers/{name}.sh
- Set
{NAME}_API_KEY environment variable
- Test:
./scripts/providers/{name}.sh "Hello"
Current Providers
| Provider | API Key Variable | Default Model |
|---|
| Gemini | GEMINI_API_KEY | gemini-flash-latest |
| OpenAI | OPENAI_API_KEY | gpt-6-astra |
| Grok | XAI_API_KEY (or GROK_API_KEY) | grok-latest |
| Perplexity | PERPLEXITY_API_KEY | sonar-reasoning-pro |
| Kimi | KIMI_API_KEY | kimi-k3 |
| Ollama | none (local) | first model ollama list shows |
| OpenRouter | OPENROUTER_API_KEY | anthropic/claude-fable-5.1 (or one seat per OPENROUTER_MODELS entry) |
CLI providers (codex, antigravity, grok-cli, kimi-cli, cursor-cli) need no key: they are discovered when their binary is on PATH and use that CLI's own login. claude-cli is the exception: claude is on every user's PATH, so it has no discovery arm and joins only when named in --providers or COUNCIL_PROVIDERS. See scripts/providers/kimi-cli.sh and cursor-cli.sh for the headless-run pattern: a read-only mode, a JSON output format the answer is parsed from, --model only on an explicit *_CLI_MODEL override, and run_with_deadline in place of the API providers' retry. A CLI that times out or fails reports through cli_failure_message in scripts/lib/cli-stderr.sh: the timeout, or the last 500 bytes of the CLI's stderr with colour codes stripped.
Troubleshooting
- Not discovered: Check API key is set and script is executable
- API errors: Verify key, check rate limits, confirm model name
- Parse fails: Add
echo "$RESPONSE" to debug, check response format
Reference
For API patterns and code templates, see api-patterns.md in this directory.