https://github.com/bugwz/AIMeter
1.8K
AIMeter is a self-hosted dashboard for tracking AI provider usage, quota, and historical trends.
node and serverlesssqlite, postgres, mysqlAliyun · Antigravity · Claude · Codex · Kimi · MiniMax · z.ai · Copilot · OpenRouter · Ollama · OpenCode · Cursor
Provider-specific examples and integration notes: github.com/bugwz/AIMeter — doc/providers
Single-container deployment with nginx + Node.js. Data is persisted via a volume mount.
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
Then open: http://localhost:3000
For Docker Compose, HTTPS, MySQL/PostgreSQL, or multi-arch builds: deploy/container/README.md
Config sources and priority:
config.yaml (or path from AIMETER_CONFIG_FILE)Required environment variables:
| Variable | Description |
|---|---|
AIMETER_DATABASE_ENGINE | sqlite, postgres, or mysql |
AIMETER_DATABASE_CONNECTION | Connection string or file path |
AIMETER_RUNTIME_MODE | node (in-process scheduler) or serverless |
AIMETER_SERVER_PORT | Frontend/proxy port (default 3000) |
AIMETER_BACKEND_PORT | Backend API port (default 3001) |
node mode, the in-process scheduler starts automatically.serverless mode, use an external cron to call /api/system/jobs/refresh every 5 minutes.Detailed field mapping and explanations: doc/conf/README.md
AIMETER_CRON_SECRET and AIMETER_ENDPOINT_SECRET are optional integration secrets; when provided, use strong 32-char random values.AIMETER_SERVER_PROTOCOL=https in production to enable strict transport-related security headers.Content type
Image
Digest
sha256:a296bb0c1…
Size
256.7 MB
Last updated
7 months ago
docker pull bugwz/aimeter