Files
llmrouter/key-acls.json
T
elton bf7bc2c0b9 Ausweich auch für Schwelle-Aliasse und bei 429/5xx
auto/mass:fast war als Endstation ohne Rückfall: ling-3.0-flash fiel
am 2026-09-07 nachts aus (5x 502 nach ~270 s hängendem Upstream,
117x 429), und der bisherige Ausweich griff nur bei fetch-Fehlern und
nur für fest-Ziele. Jetzt darf auch ein Schwelle-Alias ausweichen,
und der Ausweich löst bei 429/5xx aus — bevor das erste Byte an den
Client geht, also gefahrlos wiederholbar, weiterhin nur einmal.

auto/mass:fast weicht auf auto/coding:junior aus (ling erfüllt deren
Schwellen strukturell nie, der Rückfall landet also garantiert auf
einem tauglichen Modell). Die Container-Personas bekommen die
Kettenziele in die ACL — ohne sie schlägt der Fallback in
zielBestimmen still fehl und der ursprüngliche Fehler geht durch.

Verifiziert im lokalen End-to-End-Test gegen Schein-Upstreams:
Ausweich bei 429 (200 vom Ersatzmodell, Log-Zeile alias->ausweich),
Durchreichung von 429 ohne ACL-Freigabe, fetch-catch-Pfad unverändert
funktionierend.

Refs 42i/intern#1252
2026-09-08 09:07:34 +02:00

127 lines
5.1 KiB
JSON

{
"_note": "Rechte je Client-Key: Name -> erlaubte Aliasse (neue Namen; Altnamen werden vor der Pruefung uebersetzt). [] = alles. Die Token selbst liegen NICHT hier, sondern in KEYS_FILE auf dem Host (token -> name). Abgeleitet aus llmlite/key-acls.json am 2026-09-05: role/* und -auto gestrichen (Andreas), -auto -> :medium. Stand 2026-09-05 abends: Stufen low/medium/high/max; none->low, extra->high, ultra->max, mass->low. Namen ab 2026-09-05: 42i/marvin-2609:*; die Rechte gelten nur fuer Router-Aliasse, unbekannte Namen (2608) reicht der Router an LiteLLM durch, dort gelten dessen ACLs. Muster mit * erlaubt (openrouter/*, alt/*, role/*). Rollen aus der LiteLLM-Zeit je Key wieder eingetragen; Elton und Andreas duerfen openrouter/* und alt/*. 2026-09-07: core:none fuer alle Container-Personas, weil opencodes small_model (Titel, Zusammenfassungen) dorthin zeigt -- nach 42i/intern#1252 wird daraus auto/mass. 2026-09-07 aufgeraeumt: 'nightjob' (kein Token, kein Konsument, keine Nutzung) und 'persona-inka-mx' entfernt -- beide Inka-Tokens (Shim und Telefon-Front-End) laufen im Router unter 'persona-inka', der mx-Name existierte nur noch als LiteLLM-key_alias. 2026-09-08: auto/mass:fast und auto/coding:junior fuer die Container-Personas -- die Ausweich-Kette auto/mass -> auto/mass:fast -> auto/coding:junior laeuft durch die ACL-Pruefung des aufrufenden Keys; ohne die Ziele dort schlaegt der Fallback still fehl (403 in zielBestimmen) und der urspruengliche Fehler geht durch.",
"keys": {
"persona-spark": [
"42i/marvin-2609-core:none",
"42i/marvin-2609:medium",
"42i/marvin-stt",
"42i/marvin-tts",
"auto/coding:junior",
"auto/mass:fast",
"deizo/kira-reasoning",
"deizo/kira-stt",
"deizo/kira-tts",
"role/engineer",
"role/worker"
],
"persona-buzz": [
"42i/marvin-2609-core:none",
"42i/marvin-2609:medium",
"42i/marvin-stt",
"42i/marvin-tts",
"auto/coding:junior",
"auto/mass:fast",
"deizo/kira-reasoning",
"deizo/kira-stt",
"deizo/kira-tts",
"role/ops",
"role/worker"
],
"persona-jessie": [
"42i/marvin-2609-core:medium",
"42i/marvin-2609-core:none",
"42i/marvin-2609:medium",
"42i/marvin-stt",
"42i/marvin-tts",
"auto/mass:fast",
"deizo/kira-reasoning",
"deizo/kira-stt",
"deizo/kira-tts",
"role/assistant",
"role/marketing"
],
"persona-klara": [
"42i/marvin-2609-core:none",
"42i/marvin-2609:medium",
"42i/marvin-stt",
"42i/marvin-tts",
"auto/mass:fast",
"deizo/kira-reasoning",
"deizo/kira-stt",
"deizo/kira-tts",
"role/service"
],
"persona-elton": [
"42i/marvin-2609:low",
"42i/marvin-2609:medium",
"42i/marvin-2609:high",
"42i/marvin-2609:max",
"42i/marvin-2609-core:none",
"42i/marvin-2609-core:medium",
"deizo/kira-reasoning",
"deizo/kira-stt",
"deizo/kira-tts",
"42i/marvin-stt",
"42i/marvin-stt-turbo",
"42i/marvin-tts",
"42i/marvin-tts-turbo",
"role/*",
"openrouter/*",
"alt/*",
"auto/*"
],
"persona-festus": [
"42i/marvin-2609-core:none",
"42i/marvin-2609-core:medium",
"42i/marvin-2609:medium",
"deizo/kira-reasoning",
"deizo/kira-stt",
"deizo/kira-tts",
"role/privacy"
],
"persona-aria": [
"42i/marvin-2609-core:none",
"42i/marvin-2609-core:medium",
"42i/marvin-2609:medium",
"deizo/kira-reasoning",
"deizo/kira-stt",
"deizo/kira-tts",
"role/architect"
],
"persona-inka": [
"42i/marvin-2609-core:none",
"42i/marvin-2609-core:medium",
"42i/marvin-2609:low",
"42i/marvin-2609:medium",
"deizo/kira-reasoning",
"deizo/kira-stt",
"deizo/kira-tts",
"42i/marvin-stt",
"42i/marvin-stt-turbo",
"42i/marvin-tts",
"42i/marvin-tts-turbo",
"openrouter/openai/gpt-5.6-luna",
"role/inka"
],
"persona-andreas": [],
"lab-xo": [
"42i/marvin-2609:low",
"42i/marvin-2609:high",
"42i/marvin-2609:medium",
"deizo/kira-reasoning",
"deizo/kira-stt",
"deizo/kira-tts",
"role/xo",
"role/*",
"auto/*"
],
"team-copilot": [
"42i/marvin-2609:low",
"42i/marvin-2609:medium",
"deizo/kira-reasoning",
"deizo/kira-stt",
"deizo/kira-tts"
]
}
}