Token-Abrechnung & Quota
In-Memory Token-Mapping, Mitgliedschafts-Tarife (Free, Creator, Pro, Enterprise), Hard-Limit Guards und Write-Behind Synchronisation.
Token-Abrechnung & Quota
Liberino AI implementiert ein hochperformantes, datenbank-schonendes Abrechnungs- und Quota-System für LLM-Tokens und Inferenzkosten in Euro.
1. Architektur: In-Memory Mapping & Write-Behind
Um zehntausende Anfragen ohne Latenz oder übermäßige Datenbanklast auf Directus zu verarbeiten, läuft die Quota-Prüfung vollständig im Arbeitsspeicher:
- Beim Start: Der Server lädt alle Benutzerkonten und Token-Zähler aus Directus (
members) und dem lokalen Snapshot (data/user_quotas.json) in eineMap<apiKey, UserTokenAccount>. - Bei jeder Inferenz / Tool-Ausführung: Der Hard-Limit Guard prüft in $O(1)$ Zeit ohne I/O, ob das Token-Kontingent oder das Euro-Budgetlimit überschritten ist.
- Nach Inferenz: Der In-Memory-Zähler wird sofort inkrementiert und als
isDirty = truemarkiert. - Write-Behind: Ein periodischer Hintergrund-Flusher synchronisiert alle geänderten Konten alle 30 Sekunden sowie beim Herunterfahren (
SIGINT/SIGTERM) atomar zurück in Directus und den persistenten Ledger.
flowchart LR
Client["Client / MCP / REST"] -->|API-Key| MemoryMap["In-Memory Map<br/>(O(1) Check & Inkrement)"]
MemoryMap -->|Status OK| Inference["LLM / Image Engine"]
MemoryMap -.->|Quota erschöpft| Guard["Hard-Limit Guard<br/>(403 / MCP Error)"]
MemoryMap -->|Write-Behind alle 30s<br/>& Graceful Exit| DB[("Directus DB &<br/>user_quotas.json")]2. Mitgliedschafts-Tarife (Tiers)
| Tier | Token-Kontingent | Budget-Limit (EUR) | Beschreibung |
|---|---|---|---|
free | 50.000 | 1,00 € | Kostenlose Testmitgliedschaft |
creator | 250.000 | 5,00 € | Standard Creator-Paket (250k Tokens, 5 € Budget) |
pro | 1.200.000 | 20,00 € | Profi-Mitgliedschaft (1,2M Tokens, 20 € Budget) |
enterprise | 6.000.000 | 100,00 € | Großes Verlagspaket (6M Tokens, 100 € Budget) |
3. Endpunkte
GET /api/user/quota
Gibt das aktuelle Kontingent, verbrauchte Tokens, verbleibendes Euro-Guthaben und den Kontostatus zurück.
Header:
Authorization: Bearer <API_KEY> oder x-api-key: <API_KEY>
Response (200 OK):
{
"success": true,
"data": {
"userId": "creator-default",
"name": "Standard Creator Account",
"membershipTier": "creator",
"isActive": true,
"tokenQuota": 250000,
"usedTokens": 4520,
"remainingTokens": 245480,
"budgetLimitEur": 5.0,
"usedCostEur": 0.0821,
"remainingBudgetEur": 4.9179,
"lastSyncedAt": "2026-10-16T09:30:00.000Z",
"lastActiveAt": "2026-10-16T09:35:12.000Z"
}
}POST /api/user/quota/check
Simuliert eine geplante Anfrage vorab (Dry-Run), ohne Token zu verbrauchen.
Request Body:
{
"estimatedTokens": 5000,
"estimatedCostEur": 0.02
}Response (200 OK):
{
"success": true,
"allowed": true,
"remainingTokens": 240480,
"remainingBudgetEur": 4.8979,
"usedCostEur": 0.0821,
"budgetLimitEur": 5.0
}POST /api/user/sync-tokens
Erzwingt ein sofortiges Zurückschreiben aller geänderten In-Memory-Konten nach Directus und in die persistente Datei.
Response (200 OK):
{
"success": true,
"message": "In-memory token accounts successfully synchronized to storage.",
"syncedCount": 2,
"timestamp": "2026-10-16T09:40:00.000Z"
}GET /api/user/tiers
Gibt die Konfiguration aller verfügbaren Mitgliedschaftsstufen zurück.