---
title: "The Fireworks Kimi + Factory Droid Hack: Use the Anthropic API"
author: "Luis Colunga"
date: 2026-04-01
description: "Factory Droid drops Kimi's reasoning tokens through its generic provider. Fireworks' Anthropic-compatible endpoint keeps them visible."
tags: ["ai-tools","dev"]
url: https://www.luiscolunga.com/posts/factory-fireworks-anthropic-kimi/
---

# The Fireworks Kimi + Factory Droid Hack: Use the Anthropic API


I’ve been testing the new [Fireworks Firepass](https://app.fireworks.ai/fire-pass), which gets you zero per-token costs for reasoning models like **Kimi K2.5 Turbo** ($7/week). I started with [OpenCode](https://github.com/opencode/opencode), but my real goal was to use Kimi as a worker for complex "missions" in [Factory Droid](https://docs.factory.ai/cli/byok/overview).

The catch is that Factory’s [official docs](https://docs.factory.ai/cli/byok/overview) recommend the standard OpenAI-compatible endpoint. That works for basic prompts, but Droid ends up ignoring the thinking tokens that drive the reasoning view in the terminal.

Here is the standard recommendation for `~/.factory/settings.json`:

```json
{
  "model": "accounts/fireworks/routers/kimi-k2p5-turbo",
  "baseUrl": "https://api.fireworks.ai/inference/v1",
  "provider": "generic-chat-completion-api",
  "apiKey": "fw_...",
  "displayName": "Kimi K2.5 Turbo [OpenAI API]"
}
```

Kimi sends its reasoning tokens in a `reasoning_content` field that Droid ignores.

## The A/B Test

I ran a headless test using `droid exec` with two different configs to see how Factory Droid handles the usage metadata.

### Test A: OpenAI API (Standard)

Configuration:
- Provider: `generic-chat-completion-api`
- Base URL: `https://api.fireworks.ai/inference/v1`

Metadata result:
```json
"usage": {
  "input_tokens": 346,
  "output_tokens": 52
}
```
Zero thinking tokens captured. The agent sees a single text block without the "Thinking" CLI animation.

### Test B: Anthropic API (The Hack)

Configuration:
- Provider: `anthropic`
- Base URL: `https://api.fireworks.ai/inference` (without `/v1`)

Metadata result:
```json
"usage": {
  "input_tokens": 7085,
  "output_tokens": 50,
  "thinking_tokens": 57
}
```
Factory Droid isolated the 57 `thinking_tokens`.

## Why This Works
Fireworks provides an [Anthropic-compatible endpoint](https://docs.fireworks.ai/firepass). By switching the provider to `anthropic`, you’re telling Droid to use its Claude-style message parser. Fireworks supports this endpoint, including the `thinking` parameter and the `thinkingMaxTokens` budget.

## The Optimal Config
Use this config for Kimi K2.5 Turbo on Factory Droid:

```json
{
  "model": "accounts/fireworks/routers/kimi-k2p5-turbo",
  "baseUrl": "https://api.fireworks.ai/inference",
  "apiKey": "fw_...",
  "displayName": "Kimi K2.5 Turbo (Anthropic API)",
  "provider": "anthropic",
  "enableThinking": true,
  "thinkingMaxTokens": 16384
}
```

This setup is the most reliable way I've found to use Kimi as a worker for Droid missions.

