Fireworks exposes open-weight and routed models through an OpenAI-compatible API. Install the official Fireworks provider plugin to use the current Fire Pass GLM router, two pre-cataloged Kimi models, and any Fireworks model or router id at runtime.
| Property | Value |
|---|---|
| Provider id | fireworks (alias: fireworks-ai) |
| Package | @openclaw/fireworks-provider |
| Auth env var | FIREWORKS_API_KEY |
| Onboarding flag | --auth-choice fireworks-api-key |
| Direct CLI flag | --fireworks-api-key <key> |
| API | OpenAI-compatible (openai-completions) |
| Base URL | https://api.fireworks.ai/inference/v1 |
| Default model | fireworks/accounts/fireworks/routers/glm-5p3-fast |
| Default alias | GLM 5.3 Fast |
Getting started
Install the plugin
```bash
apus plugins install @openclaw/fireworks-provider
```
Set the Fireworks API key
apus onboard --auth-choice fireworks-api-key
apus onboard --non-interactive --accept-risk --skip-health \
--auth-choice fireworks-api-key \
--fireworks-api-key "$FIREWORKS_API_KEY"
export FIREWORKS_API_KEY=fw-...
Onboarding stores the key against the `fireworks` provider in your auth profiles and sets Fireworks' current [Fire Pass](https://docs.fireworks.ai/firepass) GLM 5.3 Fast router as the default model.
Verify the model is available
```bash
apus models list --provider fireworks
```
The list should include `GLM 5.3 Fast`, `Kimi K2.6`, and `Kimi K2.6 Fast`. If `FIREWORKS_API_KEY` is unresolved, `apus models status --json` reports the missing credential under `auth.unusableProfiles`.
Non-interactive setup
For scripted or CI installs, pass everything on the command line:
apus onboard --non-interactive \
--mode local \
--auth-choice fireworks-api-key \
--fireworks-api-key "$FIREWORKS_API_KEY" \
--skip-health \
--accept-risk
--mode defaults to local, so this is the same run as the Direct flag
command above. Run it on the Gateway host: remote-client onboarding
(--mode remote) only configures the local client connection and does not set
up provider credentials on the server.
Built-in catalog
Setup saves connection settings and aliases without copying generated catalog rows into your config.
Explicit models.mode: "replace" keeps catalog seeding enabled; custom model rows stay intact.
| Model ref | Name | Input | Context | Max output | Thinking |
|---|---|---|---|---|---|
fireworks/accounts/fireworks/routers/glm-5p3-fast |
GLM 5.3 Fast | text | 256,000 | 256,000 | On (default) |
fireworks/accounts/fireworks/models/kimi-k2p6 |
Kimi K2.6 | text + image | 262,144 | 262,144 | Forced off |
fireworks/accounts/fireworks/routers/kimi-k2p6-turbo |
Kimi K2.6 Fast | text + image | 262,144 | 256,000 | Forced off |
Apus keeps conservative 256,000-token context and output caps for GLM 5.3 Fast. Fireworks documents a larger native context window; Fast mode serves the same model at higher speed. The catalog uses the Fast pricing, not the standard rate.
Apus pins all Fireworks Kimi models to thinking: off because Kimi on Fireworks can leak chain-of-thought into the visible reply unless the request explicitly disables thinking. Routing the same model through Moonshot directly preserves Kimi reasoning output. See thinking modes for switching between providers.
Custom Fireworks model ids
Apus accepts any Fireworks model or router id at runtime. Use the exact id shown by Fireworks and prefix it with fireworks/. Dynamic resolution uses the Fire Pass template's OpenAI-compatible API and marks GLM ids as text-only; other dynamic ids advertise text + image input. Thinking is disabled automatically when the id matches the Kimi pattern. For a model with different capabilities, configure a custom model entry with its supported input types.
{
agents: {
defaults: {
model: {
primary: "fireworks/accounts/fireworks/models/<your-model-id>",
},
},
},
}
How model id prefixing works
Every Fireworks model ref in Apus starts with `fireworks/` followed by the exact id or router path from the Fireworks platform. For example:
- Router model: `fireworks/accounts/fireworks/routers/kimi-k2p6-turbo`
- Direct model: `fireworks/accounts/fireworks/models/<model-name>`
Apus strips the `fireworks/` prefix when constructing the API request and sends the remaining path to the Fireworks endpoint as the OpenAI-compatible `model` field.
Why thinking is forced off for Kimi
Fireworks serves Kimi without a separate reasoning channel, so chain-of-thought can surface in the visible `content` stream. On every Fireworks Kimi request Apus sends `thinking: { type: "disabled" }` and strips `reasoning`, `reasoning_effort`, and `reasoningEffort` from the payload (`extensions/fireworks/stream.ts`). The provider policy (`extensions/fireworks/thinking-policy.ts`) advertises only the `off` thinking level for Kimi model ids, so manual `/think` switches and provider-policy surfaces stay aligned with the runtime contract.
To use Kimi reasoning end-to-end, configure the [Moonshot provider](/providers/moonshot) and route the same model through it.
Environment availability for the daemon
If the Gateway runs as a managed service (launchd, systemd, Docker), the Fireworks key must be visible to that process — not just to your interactive shell.
A key exported only in an interactive shell will not help a launchd or systemd daemon unless that environment is imported there too. Set the key in `~/.apus/.env` or via `env.shellEnv` to make it readable from the gateway process.
Apus loads `~/.apus/.env` when it loads config, so keys stored there reach managed gateway services on every platform. Restart the gateway (or re-run `apus doctor --fix`) after rotating the key.
Related
Model providers
Choosing providers, model refs, and failover behavior.
Thinking modes
`/think` levels, provider policies, and routing reasoning-capable models.
Moonshot
Run Kimi with native thinking output through Moonshot's own API.
Troubleshooting
General troubleshooting and FAQ.