Локальный OpenAI / Anthropic / OpenAI Responses-compatible прокси для keyless Kimi endpoint cfbt.ccwu.cc
Ватермарка: t.me/forgetmeai
FreeCFBTKimiAPI позволяет Claude Code, Hermes, OpenCode, Codex, SDK-клиентам и другим AI-агентам обращаться к локальному API:
Claude Code / Hermes / OpenCode / Codex / SDKs
↓
http://127.0.0.1:3271/v1
↓
https://cfbt.ccwu.cc/v1
↓
Cloudflare-hosted Kimi model
Важно: это локальный прокси к удалённому стороннему/keyless upstream. Это не локальная LLM и не официальный Moonshot/Kimi API. Используй проект как экспериментальный бесплатный endpoint для демо, обучения и тестов AI-агентов, а не как production-инфраструктуру.
- Что это даёт
- Что уже проверено
- Быстрый старт
- Модели
- API endpoints
- Конфигурация
- Подключение клиентов
- Тестирование
- Архитектура
- Ограничения
- Позиционирование для публичного демо
- Безопасность
- Документация
| Было | Стало |
|---|---|
| Есть сторонний keyless Kimi endpoint | Есть локальный API на http://127.0.0.1:3271 |
| Разные агенты ждут разные API-форматы | Один прокси отдаёт OpenAI Chat, Anthropic Messages и OpenAI Responses |
| Coding agents требуют tool loop | Прокси нормализует tool-call simulation и tool-result continuation |
| Upstream может отвечать нестабильно | Есть timeout, retry, jitter, circuit breaker и диагностика |
| Демо легко переобещать | В документации явно написано: это прокси к удалённому endpoint, не локальная модель |
Проверено на этой машине реальными agent-задачами с sentinel-файлами:
- ✅ OpenAI Chat Completions:
/v1/chat/completions - ✅ нормализация OpenAI Chat streaming
- ✅ симуляция OpenAI tool calls + продолжение после tool result
- ✅ Anthropic Messages shim:
/v1/messages - ✅ OpenAI Responses shim:
/v1/responses - ✅ Claude Code agent E2E
- ✅ Hermes Agent E2E
- ✅ OpenCode E2E
- ✅ Codex CLI E2E через Responses API
⚠️ OpenClaw видит модель в каталоге, ноagent --localможет всё ещё выдаватьUnknown model, пока не выровнен его profile/gateway registry
Последняя локальная проверка:
npm test: PASS
npm run e2e:
claude-code: pass
hermes: pass
opencode: pass
codex: pass
openclaw: pending/runtime-profile issue
git clone https://github.com/ForgetMeAI/FreeKimiAPI.git
cd FreeKimiAPI
cp .env.example .env
npm startСервер по умолчанию:
http://127.0.0.1:3271
OpenAI-compatible base URL по умолчанию:
http://127.0.0.1:3271/v1
Проверка здоровья:
curl http://127.0.0.1:3271/api/statusОжидаемая форма ответа:
{
"ok": true,
"provider": "cfbt-ccwu-kimi",
"upstream": "https://cfbt.ccwu.cc/v1",
"model": "@cf/moonshotai/kimi-k2.6"
}Локальные алиасы:
cfbt-kimikimi-k2.6@cf/moonshotai/kimi-k2.6
Список моделей:
curl http://127.0.0.1:3271/v1/modelsGET /v1/models
POST /v1/chat/completions
Пример:
curl http://127.0.0.1:3271/v1/chat/completions \
-H 'content-type: application/json' \
-d '{
"model":"cfbt-kimi",
"messages":[{"role":"user","content":"Ответь ровно: HELLO"}],
"temperature":0,
"max_tokens":512
}'POST /v1/messages
Используется Claude Code-подобными клиентами.
POST /v1/responses
Используется Codex/OpenAI Responses-style клиентами. Shim поддерживает структурный function_call output и streaming events для продолжения после tool call, которые нужны Codex.
GET /api/status
GET /api/diagnostics
/api/diagnostics проверяет upstream model endpoint и возвращает короткий preview.
Скопируй .env.example в .env:
cp .env.example .envДоступные env-переменные:
PORT=3271
CFBT_BASE_URL=https://cfbt.ccwu.cc/v1
CFBT_MODEL=@cf/moonshotai/kimi-k2.6
CFBT_MAX_TOKENS_DEFAULT=1024
CFBT_TIMEOUT_MS=60000
CFBT_RETRIES=4
CFBT_RETRY_BASE_MS=700
CFBT_CIRCUIT_BREAKER_FAILURES=8
CFBT_CIRCUIT_BREAKER_MS=30000
CFBT_CLIENT_PROFILE_MODE=round_robin
CFBT_LOG_REQUESTS=0Reliability-функции:
- timeout запроса;
- retry с jitter;
- circuit breaker после повторяющихся capacity/rate ошибок upstream;
- обычные browser-compatible headers и rotation client profiles;
- явная классификация upstream-ошибок.
Это hardening надёжности, а не stealth anti-bot bypass.
Подробные рецепты лежат в docs/AGENT_CLIENTS.md.
Короткая версия:
ANTHROPIC_BASE_URL=http://127.0.0.1:3271 \
ANTHROPIC_API_KEY=dummy \
claude --model cfbt-kimiИспользуй custom OpenAI-compatible provider с base URL:
http://127.0.0.1:3271/v1
Используй OpenAI-compatible provider через @ai-sdk/openai-compatible с base URL:
http://127.0.0.1:3271/v1
Используй custom provider с Responses wire:
model = "cfbt-kimi"
model_provider = "cfbt"
[model_providers.cfbt]
name = "CFBT Kimi"
base_url = "http://127.0.0.1:3271/v1"
api_key = "dummy"
wire_api = "responses"Endpoint + protocol matrix:
npm testРеальная E2E-матрица agent-клиентов:
npm run e2eE2E-скрипт создаёт sentinel-файлы в /tmp и проверяет, что клиент действительно выполнил tools, а не просто напечатал правдоподобный ответ.
Текущий ожидаемый результат:
claude-code: pass
hermes: pass
opencode: pass
codex: pass
openclaw: pending
См. docs/ARCHITECTURE.md.
Верхнеуровнево:
src/server.js— локальный HTTP API и protocol shims;src/upstream.js— CFBT upstream client, retry/backoff/circuit breaker;src/tool_sim.js— parser tool calls, deterministic smoke fallbacks, loop-safe continuation;src/config.js— dotenv/env config и client profile selection;scripts/endpoint_matrix_smoke.js— regression smoke для endpoint/protocol matrix;scripts/agent_clients_e2e.sh— реальная E2E-матрица coding agents.
- Upstream может возвращать rate/capacity ошибки вроде
3040 Capacity temporarily exceeded. - Upstream может заблокировать запросы или изменить поведение без предупреждения.
- Это не официальная инфраструктура Moonshot/Kimi.
- Не отправляй приватный код, пароли, API keys, customer data или коммерческие секреты в бесплатные сторонние endpoints.
- Tool use симулируется на уровне прокси. Этого хватает для многих agent-задач и smoke-тестов, но это не native Kimi tool calling.
- Для публичных демо говори “local proxy to remote free endpoint”, а не “free local model”.
Хорошая формулировка:
“Я запускаю локальный OpenAI/Anthropic/Responses-compatible API proxy. Сама модель работает удалённо через free/keyless endpoint, но локально мои агенты видят обычный API server.”
Не стоит говорить:
- “official Kimi API”;
- “local Kimi model”;
- “production-ready unlimited free API”;
- “bypass Cloudflare/rate limits”.
Проект предназначен для локальных экспериментов и обучения. Не допускай попадания секретов в prompts, logs, examples, commits и публичные видео.
Сделано для практических экспериментов с AI-агентами
t.me/forgetmeai