← Volver al Jardín

De pi-antigravity-rotator a tuxevil-rotator: un motor de rotacion provider-agnostic

#Node.js#IA#Infraestructura#Ollama#Open Source#tuxevil-rotator

CUOTA_AGOTADA // PROVIDER_AGNOSTIC // HERRAMIENTA_PROPIA

Un dia me quede sin cuota. No en una cuenta. En las 45.

Llevaba meses usando pi-antigravity-rotator para distribuir carga entre un pool de cuentas de Google Antigravity. El rotador funcionaba bien: health scoring por cuenta, rotacion por modelo, dashboard en tiempo real, quota polling cada 5 minutos. Pero Antigravity tiene cuotas por cuenta y si las quemas todas al mismo tiempo, te quedas parado.

Eso fue exactamente lo que paso. Y al mismo tiempo habia dejado de pagar la suscripcion de Codex (OpenAI). Sin Antigravity, sin Codex, cero acceso a LLMs avanzados.


Ollama Cloud al rescate (con asterisco)

Recorde que Ollama tiene un tier cloud gratuito. No es inferencia local, es su API publica, con modelos propios y cuotas por cuenta.

Tenia 45 cuentas Gmail del pool de Antigravity. Intente crear cuentas Ollama Cloud con todas. Consegui 27. Las otras 18 me pidieron verificacion por SMS, y no tenia mas numeros de telefono disponibles. Con 27 cuentas ya era suficiente para armar un pool util.

El problema siguiente era obvio: necesitaba un rotador para Ollama Cloud. Y ya tenia uno para Antigravity con toda la logica construida.


ollama-rotator: el clon que nacio para morir

En lugar de construir desde cero, le pedi a OpenCode que clonara pi-antigravity-rotator y lo adaptara al proveedor Ollama Cloud. No fue semanas de trabajo. Fue una sesion de agente, ajustes, pruebas, y quedo funcionando.

El resultado fue ollama-rotator: mismo engine de rotacion, mismo dashboard, misma logica de health scoring, pero apuntando a ollama.com/api/chat en lugar de Antigravity. El overlap entre los dos repos era del 80%.

Ahi tuve el problema claro: dos repos casi identicos, dos bases de codigo que mantener en sync, dos versiones del mismo engine evolucionando en paralelo. Eso no escala.


La decision de unificar

Una vez que tuve ollama-rotator probado y funcionando en produccion, la decision fue clara: unificar. Pero no como un simple copy-paste, sino redisenar el engine para que el proveedor sea un plugin.

La arquitectura nueva separa el rotation engine del provider adapter. Antigravity y Ollama son implementaciones de la misma interfaz. El proximo proveedor gratuito con credenciales por cuenta y una quota API entra como un nuevo --provider sin forkear nada.

Esto tambien cambiaba el modelo de credenciales. Antes cada fila en accounts.json era una cuenta de un proveedor especifico. Ahora cada fila es un email que puede tener credenciales de multiples proveedores:

{
  "email": "[email protected]",
  "credentials": [
    { "provider": "antigravity", "refreshToken": "..." },
    { "provider": "ollama", "apiKey": "ollama-..." }
  ]
}

Un email, N providers. El rotador elige la credencial correcta en el momento del request segun el modelo de destino.


Que es tuxevil-rotator

tuxevil-rotator es un gateway OpenAI-compatible para multiples proveedores de AI gratuitos. Un solo endpoint local, cualquier agente puede conectarse.

Caracteristicas principales:

  • Multi-proveedor: Google Antigravity (OAuth) y Ollama Cloud (API key) en el mismo pool, con arquitectura pensada para seguir sumando proveedores gratuitos en el futuro
  • Rotacion inteligente: 4 politicas (timer-first, tier-first, quota-first, hybrid) con health scoring compuesto por cuenta
  • Quota monitoring en tiempo real: polling independiente por proveedor, cuotas de Antigravity consolidadas por familia (claude, gemini), uso session/weekly de Ollama
  • Virtual Keys: claves rk-... con restricciones por modelo para equipos o agentes
  • Spend logging: audit trail completo con costo en USD real para ambos proveedores (requiere PostgreSQL)
  • Dashboard: estado de routing, quota bars, latencia p50/p95, heatmap de actividad, routing inspector
  • Tool/function calling: OpenAI y Anthropic, multi-turn, parallel calls
  • Compresion de prompts: modos lite y rtk para reducir tokens sin perder contenido critico
npm install -g tuxevil-rotator
tuxevil-rotator login                    # Google Antigravity
tuxevil-rotator login --provider ollama  # Ollama Cloud
tuxevil-rotator start
# Dashboard en http://localhost:51200/dashboard

Conectas cualquier agente a http://localhost:51200/v1 con API key tuxevil o una Virtual Key. Compatible con Hermes, OpenCode, Claude Code, Cursor, Aider, Cline, Open WebUI y mas.


Ollama Cloud free tier: la realidad

Ollama ofrece 18 modelos en su catalogo. En el free tier solo tienes acceso a 7. El resto devuelve HTTP 403 “this model requires a subscription”.

Hice pruebas de consumo propias con cada modelo, quemando 30% de cuota por modelo con un tool de calibracion que construi con OpenCode para medir exactamente cuanto da cada cuenta.

Los tiers que Ollama documenta por modelo (1 a 4, mas un tier 4 + extra usage para kimi-k3), con datos empiricos de calibracion propios (quema al 30% de sesion, estimacion extrapolada al 100%):

Modelo Contexto Tier Budget sesion Budget semanal Free tier
gpt-oss:20b 131,072 1 ~1.56M tokens ~4.21M tokens si
gemma4:31b 262,144 1 ~1.15M tokens ~3.11M tokens si - destacado
nemotron-3-nano:30b 262,144 1 ~1.93M tokens ~5.19M tokens si
gpt-oss:120b 131,072 2 ~0.76M tokens ~2.05M tokens si
minimax-m2.7 196,608 2 - - subscription
nemotron-3-super 262,144 2 ~0.74M tokens ~2.01M tokens si
mistral-large-3:675b 262,144 2 - - subscription
qwen3.5:397b 262,144 2 - - subscription
deepseek-v4-flash 1,048,576 2 - - subscription
nemotron-3-ultra 262,144 3 ~0.12M tokens ~0.33M tokens si
kimi-k2.6 / k2.7 262,144 3 - - subscription
minimax-m3 524,288 3 ~0.19M tokens ~0.52M tokens si - destacado
glm-5.1 / 5.2 hasta 1M 3 - - subscription
deepseek-v4-pro 524,288 4 - - subscription
kimi-k3 1,048,576 4 + extra usage - - subscription

De los disponibles en free, los que valen la pena segun mis pruebas: gemma4:31b (Tier 1) y minimax-m3 (Tier 3). Los demas no justifican el consumo de cuota comparado con lo que dan segun ArtificialAnalysis.

Con multiples cuentas en rotacion, esos dos modelos se vuelven herramientas serias para uso diario.


El renombre: por que tuxevil-rotator

El nombre original pi-antigravity-rotator tenia dos problemas:

  1. pi: el proyecto nacio para ser un paquete del ecosistema pi.dev. Ya no lo es. Es una herramienta standalone.
  2. antigravity: señalaba a un solo proveedor. Con Ollama Cloud adentro, eso ya era mentira.

Habia querido cambiar el nombre hace tiempo, pero tenia una razon para no hacerlo: el paquete npm acumulaba historial de descargas y el repo ya aparecia recomendado en respuestas de Google, Gemini y ChatGPT cuando alguien preguntaba sobre rotacion de cuentas de Antigravity. Perder ese SEO era sacrificar traccion real.

Pero con la incorporacion de un segundo proveedor, el nombre viejo se volvio una mentira activa. Toco cambiarlo.

El nuevo nombre es mi nickname: tuxevil. Es el proyecto que construi para resolver mi problema, lo mantengo y dirijo su rumbo. Lo pongo a disposicion del mundo open source porque si le sirve a alguien mas, perfecto. Y con el tiempo, los aportes de otras personas (PRs, issues, sugerencias) le han dado forma y robustez, y eso se agradece y se quiere seguir incentivando.

En GitHub el renombre redirige automaticamente del nombre anterior al nuevo, las stars y forks se preservan (34 stars y 9 forks al momento de este post, y quiero mas). En npm toca sacrificar el historial: el paquete viejo se depreca, el nuevo empieza desde cero.


El disclaimer de ToS: honestidad sobre riesgo real

El README de tuxevil-rotator tiene una advertencia visible:

Using this proxy may put connected accounts at risk of Terms of Service enforcement, including restriction, suspension, or permanent bans.

No es legal boilerplate. Es documentacion honesta basada en experiencia propia.

He pasado por dos ban waves masivas en todas mis cuentas de Antigravity. Lo que aprendes rapidamente: no te bloquean el acceso al correo, no tocan tus archivos, el ban es especifico a Antigravity. Y con un formulario de recuperacion, en aproximadamente una semana te devuelven las cuentas si no eres reincidente extremo.

El riesgo es real pero acotado. Cada usuario decide si lo acepta. La herramienta es publica, los riesgos estan documentados, la decision es tuya.


Que sigue

La arquitectura pluggable no es decorativa. Hay al menos un proveedor mas en el horizonte: Codex (OpenAI). Tengo 3-4 cuentas creadas con los numeros de telefono que tengo disponibles. La cuota mensual es baja pero el modelo actual (gpt-5.6-luna) es el mejor que he probado: supera a todo lo disponible en Ollama Cloud free tier y a todo lo disponible en Antigravity. Los unicos que le compiten de cerca son kimi-k3 y glm-5.2, que son de pago en Ollama.

La barrera de SMS por cuenta hace que Codex no escale a 27+ cuentas como Ollama, pero con un pool pequeno y cuota mensual fija puede ser un complemento util, especialmente para tareas donde necesitas calidad sobre volumen.

Tambien sigo investigando otros proveedores gratuitos. Nada concreto todavia, pero la arquitectura ya esta lista para recibirlos.


ollama-rotator: archivado

ollama-rotator cumplio su rol: probar que el concepto funcionaba con Ollama Cloud como unico proveedor. Ahora tuxevil-rotator hace exactamente lo mismo y mas. El repo se hace privado y se archiva. No hay razon para mantener dos engines paralelos.

Si usabas ollama-rotator, la migracion es directa:

npm install -g tuxevil-rotator
tuxevil-rotator login --provider ollama
tuxevil-rotator start

Las cuentas de ~/.ollama-rotator/accounts.json se importan automaticamente al arrancar. No pierdes nada.


tuxevil-rotator esta en github.com/tuxevil/tuxevil-rotator.

Si te ahorra costos o tiempo, una star ayuda. Si encuentras un bug o quieres aportar, abre un PR.