Proxy API local compatível com OpenAI que roteia requisições para os modelos do Kimi (kimi.com) via automação de navegador com Playwright. Oferece suporte a execução de ferramentas, modo de pensamento (reasoning) e persistência de sessão.
- OpenAI API Compatible: Interface compatível com
/v1/chat/completionse/v1/models. - Reasoning Support: Suporte completo ao modo de pensamento (thinking) dos modelos Kimi.
- Tool Execution: Sistema de execução de ferramentas locais integrado ao fluxo do chat.
- Session Persistence: Login persistente com armazenamento de perfil do navegador em
kimi_profile/. - Network Visibility: Exibe URLs local e de rede (IP) ao iniciar o servidor.
- Browser Selection: Escolha entre Chrome, Firefox, Edge ou Chromium para execução.
- Docker Ready: Deploy simplificado com suporte a Docker e Docker Compose.
graph TD
Client[Cliente OpenAI/SDK] -->|HTTP| Proxy[KimiProxy]
Proxy -->|/v1/chat/completions| Handler[Chat Handler]
Handler --> Kimi[kimi.com]
Handler --> Playwright[Playwright Service]
Playwright --> Browser[Browser Instance]
Handler --> Tools[Tools Executor]
Tools --> Registry[Tool Registry]
subgraph "Configuração"
Env[.env] --> Proxy
Profile[kimi_profile/] --> Playwright
end
| Dependência | Versão Mínima | Instalação |
|---|---|---|
| Node.js | v20.x | nvm |
| npm | v9.x | Incluído com Node.js |
| Playwright | - | npx playwright install |
| Docker (opcional) | v24.x | Docker Docs |
# Clonar repositório
git clone https://github.com/pedrofariasx/kimiproxy.git
cd kimiproxy
# Instalar dependências
npm install
# Instalar browsers do Playwright
npx playwright install# Iniciar containers
docker-compose up -dCrie o arquivo .env na raiz do projeto:
# Porta do servidor (default: 3000)
PORT=3000
# Chave de API para proteger os endpoints (opcional)
API_KEY=sua-chave-secreta-aqui
# Navegador padrão (chromium, firefox, chrome, edge)
BROWSER=chromium# Iniciar com o navegador padrão (Chromium)
npm start
# Iniciar com navegadores específicos
npm run start:chrome
npm run start:firefox
npm run start:edgeAo iniciar, o console exibirá:
🚀 KimiProxy started!
- Local: http://localhost:3000
- Network: http://192.168.1.10:3000
Available Routes:
- [GET] /health
- [POST] /v1/chat/completions
- [GET] /v1/modelsRealize o login interativo direto no terminal (totalmente invisível e rodando em segundo plano):
npm run login
# Ou com browser específico
npm run login:firefoxAo executar, o script solicitará de forma interativa no console o seu número de telefone (com DDI e DDD, ex: 5582987185879) e, em seguida, o código de 6 dígitos recebido via SMS. O fluxo é inteiramente processado de forma silenciosa em segundo plano (headless), injetando o Token de Acesso diretamente na sessão e armazenando os cookies de sessão de forma segura na pasta kimi_profile/.
POST /v1/chat/completions
Content-Type: application/json
Authorization: Bearer sua-chaveModelos Suportados:
k2d6-thinking: Modelo com raciocínio (thinking) habilitado.k2d6: Modelo padrão sem o bloco de pensamento.
import OpenAI from 'openai';
const openai = new OpenAI({
baseURL: 'http://localhost:3000/v1',
apiKey: process.env.API_KEY || 'sk-no-key-required'
});
const completion = await openai.chat.completions.create({
model: 'k2d6-thinking',
messages: [{ role: 'user', content: 'Explique como funciona o Playwright.' }]
});
console.log(completion.choices[0].message.content);kimiproxy/
├── src/
│ ├── index.ts # Entry point e servidor Hono
│ ├── routes/
│ │ └── chat.ts # Handler compatível com OpenAI
│ ├── services/
│ │ ├── kimi.ts # Integração com a API do Kimi
│ │ └── playwright.ts # Automação de navegador
│ ├── tools/
│ │ ├── executor.ts # Execução de ferramentas
│ │ └── registry.ts # Registro de tools
│ └── login.ts # Script de autenticação
├── kimi_profile/ # Armazenamento da sessão (gitignored)
├── Dockerfile # Configuração Docker
└── package.json # Scripts e dependências
- Endereço em uso: Verifique se a porta
3000está livre ou altere oPORTno.env. - Erro de Navegador: Se um navegador não abrir, certifique-se de que ele está instalado (
npx playwright install). - Sessão Expirada: Execute
npm run loginnovamente para renovar os cookies.
Este projeto é fornecido estritamente para fins educacionais e de pesquisa.
Os autores não incentivam ou endossam:
- Violação dos Termos de Serviço da plataforma Kimi.
- Automação não autorizada em larga escala.
- Uso para atividades maliciosas.
Use por sua conta e risco.