npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@pflabs/antigravity-openai-adapter

v1.0.0

Published

OpenAI-compatible API adapter for antigravity-claude-proxy. Converts OpenAI Chat Completions format to Anthropic Messages API format.

Readme

Antigravity OpenAI Adapter

License: MIT

Um adaptador que expõe uma API compatível com OpenAI para se comunicar com o antigravity-claude-proxy. Isso permite usar aplicações que esperam a API OpenAI com os modelos Claude e Gemini disponíveis atravésdo Antigravity.

Como Funciona

┌──────────────────┐     ┌─────────────────────┐     ┌────────────────────────────┐
│  Aplicação com   │────▶│  Este Adaptador     │────▶│  antigravity-claude-proxy  │
│  API OpenAI      │     │  (OpenAI → Anthropic│     │  (Anthropic → Google│
│  (Chat API)      │     │   format)           │     │   Generative AI)           │
└──────────────────┘     └─────────────────────┘     └────────────────────────────┘
  1. Recebe requisições no formato OpenAI Chat Completions API
  2. Converte para formato Anthropic Messages API
  3. Encaminha para o antigravity-claude-proxy
  4. Converte as respostas de volta para formato OpenAI
  5. Suporta streaming (SSE) completo

Pré-requisitos

  • Node.js 18 ou superior
  • antigravity-claude-proxy rodando (padrão: http://localhost:8080)

Instalação

Opção 1: npm / npx

# Executar diretamente com npx (sem instalação)
npx @pflabs/antigravity-openai-adapter start

# Ou instalar globalmente
npm install -g @pflabs/antigravity-openai-adapter
antigravity-openai-adapter start

Opção 2: Docker

# Usando Docker Compose
docker-compose up -d

# Ou build direto
docker build -t antigravity-openai-adapter .
docker run -p 8081:8081 antigravity-openai-adapter

Opção 2: Clonar Repositório

git clone <repository-url>
cd antigravity-openai-adapter
npm install
npm start

Início Rápido

1. Iniciar o antigravity-claude-proxy

Primeiro, certifique-se que o antigravity-claude-proxy está rodando:

npx antigravity-claude-proxy start
# Roda em http://localhost:8080

2. Iniciar o Adaptador OpenAI

antigravity-openai-adapter start
# Roda em http://localhost:8081

3. Usar com aplicações OpenAI

Configure sua aplicação para usar:

Base URL: http://localhost:8081/v1
API Key: qualquer-valor (ou configure uma chave específica)

Endpoints da API

| Endpoint | Método | Descrição | |----------|--------|-----------| | /v1/chat/completions | POST | Chat Completions (principal) | | /v1/models | GET | Listar modelos disponíveis | | /health | GET | Verificação de saúde |

Exemplo de Requisição

curl http://localhost:8081/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer test" \
  -d '{
    "model": "gpt-4",
    "messages": [
      {"role": "user", "content": "Hello!"}
    ]
  }'

Exemplo com Streaming

curl http://localhost:8081/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer test" \
  -d '{
    "model": "gpt-4",
    "messages": [
      {"role": "user", "content": "Escreva um poema curto"}
    ],
    "stream": true
  }'

Modelos Disponíveis

O adaptador não faz mapeamento automático de modelos. Os modelos disponíveis são exatamente os mesmos fornecidos pelo antigravity-claude-proxy.

Para ver a lista de modelos suportados, acesse o endpoint /v1/models ou verifique a documentação do proxy original.

Modelos comuns incluem:

  • claude-opus-4-5-thinking
  • claude-sonnet-4-5-thinking
  • claude-sonnet-4-5
  • gemini-3-pro-high
  • gemini-3-flash

Configuração

Variáveis de Ambiente

| Variável | Descrição | Padrão | |----------|-----------|--------| | PORT | Porta do servidor | 8081 | | UPSTREAM_URL | URL do antigravity-claude-proxy | http://localhost:8080 | | ANTHROPIC_BASE_URL | Alternativa ao UPSTREAM_URL | - | | API_KEY | Chave API para este adaptador | - | | UPSTREAM_API_KEY | Chave API para o upstream | test | | ANTHROPIC_AUTH_TOKEN | Alternativa ao UPSTREAM_API_KEY | - | | DEBUG | Habilitar logs de debug | false |

Argumentos CLI

antigravity-openai-adapter start --port=3000 --upstream=http://localhost:9000 --debug

Arquivo de Configuração

Crie config.json no diretório atual ou em ~/.config/antigravity-openai-adapter/config.json:

{
  "port": 8081,
  "upstreamUrl": "http://localhost:8080",
  "apiKey": null,
  "upstreamApiKey": "test",
  "debug": false
}

Uso com Bibliotecas OpenAI

Python (openai)

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8081/v1",
    api_key="test"
)

response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "user", "content": "Hello!"}
    ]
)

print(response.choices[0].message.content)

Node.js (openai)

import OpenAI from 'openai';

const client = new OpenAI({
    baseURL: 'http://localhost:8081/v1',
    apiKey: 'test'
});

const response = await client.chat.completions.create({
    model: 'gpt-4',
    messages: [
        { role: 'user', content: 'Hello!' }
    ]
});

console.log(response.choices[0].message.content);

cURL

curl http://localhost:8081/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer test" \
  -d '{
    "model": "gpt-4",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

Recursos Suportados

✅ Suportado

  • Chat Completions API
  • Streaming (SSE)
  • System messages
  • Multi-turn conversations
  • Tool/Function calling
  • Vision (imagens)
  • Temperature, top_p, max_tokens
  • Stop sequences

❌ Não Suportado

  • Embeddings (/v1/embeddings)
  • Legacy Completions (/v1/completions)
  • Audio/Speech APIs
  • Fine-tuning
  • Assistants API
  • Files API

Arquitetura

antigravity-openai-adapter/
├── src/
│   ├── index.js              # Entry point
│   ├── server.js             # Express server
│   ├── config.js             # Configuration
│   ├── format/
│   │   ├── openai-to-anthropic.js   # Request converter
│   │   └── anthropic-to-openai.js   # Response converter
│   └── utils/
│       └── logger.js         # Logging utility
├── bin/
│   └── cli.js                # CLI entry point
├── package.json
└── README.md

Troubleshooting

Erro de conexão com upstream

upstream: { status: 'unreachable' }

Verifique se o antigravity-claude-proxy está rodando:

curl http://localhost:8080/health

Erro 401Unauthorized

Configure a chave API correta:

UPSTREAM_API_KEY=sua-chave antigravity-openai-adapter start

Modelo não encontrado

Certifique-se de que está usando um ID de modelo válido que o antigravity-claude-proxy suporta.


Desenvolvimento

# Clone o repositório
git clone <repository-url>
cd antigravity-openai-adapter

# Instalar dependências
npm install

# Rodar em modo desenvolvimento (com watch)
npm run dev

# Rodar testes
npm test

Licença

MIT


Relacionados