Skip to content

Latest commit

 

History

History
247 lines (192 loc) · 11.1 KB

File metadata and controls

247 lines (192 loc) · 11.1 KB
AIMeter logo

AIMeter

AIMeter es un dashboard self-hosted para rastrear uso, cuota y tendencias históricas de proveedores de IA.

React Express TypeScript Runtime Providers Deploy Deploy

AIMeter dashboard
AIMeter usage history AIMeter endpoint AIMeter settings

Funcionalidades

  • Dashboard frontend con React
  • API backend con Express
  • Arquitectura de adaptadores multi-proveedor
  • Modos runtime: node y serverless
  • Almacenamiento basado en base de datos y flujo de bootstrap
  • Dashboard unificado para varios proveedores de IA
  • Gestión de credenciales de proveedores y visualización de cuota
  • Historial de uso y páginas de gráficos
  • Páginas API relacionadas con endpoint/proxy
  • Flujo de inicialización bootstrap + ruta admin
  • Motores DB: sqlite, d1, postgres, mysql

Proveedores compatibles

Aliyun
Aliyun
Antigravity
Antigravity
Claude
Claude
Codex
Codex
Kimi
Kimi
MiniMax
MiniMax
z.ai
z.ai
Copilot
Copilot
OpenRouter
OpenRouter
Ollama
Ollama
OpenCode
OpenCode
Cursor
Cursor
Ejemplos por proveedor y notas de integración: [docs/providers](../providers)

Stack tecnológico

  • Frontend: React 18, TypeScript, Vite, Tailwind CSS
  • Backend: Node.js, Express, TypeScript
  • Almacenamiento: SQLite / Cloudflare D1 / PostgreSQL / MySQL

Estructura del proyecto

.
├─ src/                  # App frontend
├─ server/               # API backend, auth, jobs, almacenamiento
├─ deploy/               # Guías de despliegue por plataforma
├─ docs/                  # Docs API, ejemplos de proveedor, traducciones, docs de config
├─ config.all.yaml       # Plantilla completa de configuración
├─ config.yaml           # Configuración local activa (copiada de la plantilla)
└─ .env.all              # Plantilla completa de variables de entorno

Inicio rápido

Opción 1: Contenedor (Docker)

Despliegue en un solo contenedor con nginx + Node.js. Los datos se persisten mediante un volumen montado.

mkdir -p ~/aimeter/db ~/aimeter/log
docker run -d --name aimeter \
  -p 3000:3000 \
  -e AIMETER_DATABASE_ENGINE=sqlite \
  -e AIMETER_DATABASE_CONNECTION=/aimeter/db/aimeter.db \
  -e AIMETER_SERVER_PORT=3000 \
  -e AIMETER_BACKEND_PORT=3001 \
  -e AIMETER_RUNTIME_MODE=node \
  -v ~/aimeter/db:/aimeter/db \
  -v ~/aimeter/log:/aimeter/log \
  bugwz/aimeter:latest

Abrir: http://localhost:3000

Docker Compose, HTTPS, MySQL/PostgreSQL y builds multi-arch: deploy/container/README.md

Opción 2: Vercel

Despliegue serverless. Requiere una base de datos MySQL o PostgreSQL externa.

Base de datos Desplegar
MySQL Deploy with Vercel
PostgreSQL Deploy with Vercel

Configura las variables de entorno, completa el bootstrap y luego configura un servicio cron externo para llamar a /api/system/jobs/refresh cada 5 minutos.

Configuración de cron y guía completa: deploy/vercel/README.md

Opción 3: Cloudflare Workers

Despliegue serverless. Soporta Cloudflare D1, MySQL o PostgreSQL.

Deploy to Cloudflare Workers

Tras el despliegue, configura las variables de entorno según el modo de base de datos:

Modo Variables requeridas
D1 AIMETER_RUNTIME_MODE=serverless
AIMETER_SERVER_PROTOCOL=https
AIMETER_DATABASE_ENGINE=d1
AIMETER_DATABASE_CONNECTION=DB
MySQL AIMETER_RUNTIME_MODE=serverless
AIMETER_SERVER_PROTOCOL=https
AIMETER_DATABASE_ENGINE=mysql
AIMETER_DATABASE_CONNECTION=mysql://USER:PASSWORD@HOST:3306/DATABASE
PostgreSQL AIMETER_RUNTIME_MODE=serverless
AIMETER_SERVER_PROTOCOL=https
AIMETER_DATABASE_ENGINE=postgres
AIMETER_DATABASE_CONNECTION=postgres://USER:PASSWORD@HOST:5432/DATABASE?sslmode=require

Los Cron Triggers están integrados — wrangler.jsonc programa automáticamente un refresco cada 5 minutos.

Enlace D1, Hyperdrive y pasos de configuración completos: deploy/cloudflare/README.md

Scripts

npm run dev            # solo frontend
npm run start:server   # solo backend
npm run dev:all        # frontend + backend
npm run dev:mock:all   # frontend + backend (modo mock)
npm run build          # chequeo de tipos y build frontend
npm run preview        # previsualizar build frontend
npm run cf:dev         # desarrollo local de Cloudflare Workers
npm run cf:deploy      # desplegar a Cloudflare Workers

Configuración

Fuentes de configuración y prioridad actual:

  1. config.yaml (o ruta desde AIMETER_CONFIG_FILE)
  2. Variables de entorno
  3. Valores por defecto internos

Importante:

  • database.engine / AIMETER_DATABASE_ENGINE es obligatorio.
  • database.connection / AIMETER_DATABASE_CONNECTION es obligatorio.
  • En modo serverless, el scheduler está deshabilitado.
  • En modo node, el scheduler en proceso se inicia automáticamente.

Mapeo detallado de campos y explicaciones:

Despliegue

Modos de despliegue compatibles:

Documentación API

Notas de seguridad

  • El session secret y la configuración de cifrado se inicializan y persisten por el almacenamiento del sistema durante bootstrap en modo base de datos.
  • AIMETER_CRON_SECRET y AIMETER_ENDPOINT_SECRET son secretos opcionales de integración; usa valores aleatorios robustos de 32 caracteres.
  • En producción usa AIMETER_SERVER_PROTOCOL=https para habilitar cabeceras de seguridad de transporte más estrictas.