Skip to content

Providers

Phi Trần tuấn edited this page Jun 30, 2026 · 1 revision

Providers — Title: Providers

# Providers

12 providers are available out of the box. You can also add **any** OpenAI-compatible or Anthropic-format endpoint through the in-app setup wizard — no code changes needed.

## The 12 built-in providers

| # | Provider | Env Variable |
|---|---|---|
| 1 | Fireworks AI | `FIREWORKS_API_KEY` |
| 2 | Cohere | `COHERE_API_KEY` |
| 3 | Cerebras | `CEREBRAS_API_KEY` |
| 4 | Mistral AI | `MISTRAL_API_KEY` |
| 5 | NVIDIA NIM | `NVIDIA_API_KEY` |
| 6 | Command Code | `COMMANDCODE_API_KEY` |
| 7 | Xiaomi (MiMo) | `MIMO_API_KEY` |
| 8 | Qwen API (Singapore / DashScope) | `DASHSCOPE_API_KEY` |
| 9 | Mercury 2 (Inception Labs) | `INCEPTION_API_KEY` |
| 10 | Mara Cloud | `MARA_API_KEY` |
| 11 | Requesty AI | `REQUESTY_API_KEY` |
| 12 | AWS Bedrock (Converse API) | `AWS_BEDROCK_API_KEY` |

> Note: **MCP is only active with the `commandcode` provider** (the provider with the `mcp_capable` flag). See [[MCP Integration]].

## Switching provider / model

Use the `/model` command in the REPL to switch the active model. Full list at [[Slash Commands]].

## Adding a custom provider

A provider not in the list of 12 still works if it's compatible with one of these two shapes:

- **OpenAI-compatible** (standard chat-completions endpoint)
- **Anthropic-format** — set `format_anthropic=True` when configuring

This is done through an in-app **wizard** at runtime, no need to touch the source code (`02_provider.py` manages this registry).

## Why a multi-format engine

Internally, `fw.py` speaks only one language — OpenAI chat-completions format. Two adapter modules translate both ways to:

- **Anthropic Messages API** (`01c_anthropic.py`)
- **AWS Bedrock Converse** (`01b_aws.py`), including manual binary event-stream parsing for Bedrock

This means every tool, prompt, and the agent loop is written once and runs identically across all 12 providers — and on any custom provider you add later.

## API keys

- Set via the matching environment variable (table above) **before running**, or
- Use `/setkey` in the REPL to save/change a key (empty Enter clears the saved key), and `/deletekey` to remove it entirely.

➡️ More on key & provider commands: [[Slash Commands]] · [[Configuration]]

Clone this wiki locally