56 Commits
Author SHA1 Message Date
eltonandClaude Fable 5.1 dfc85a4829 llmrouter: Sprechtext-Normalisierung vor TTS — Postleitzahl als Ziffernfolge mit Pause
"Bergstraße 7, 83646 Bad Tölz" -> "Bergstraße 7; Postleitzahl 8 3 6 4 6, Bad Tölz"
(Andreas 2026-09-06, Variante 4 nach Hörtest mit Fish S2 Pro). Betraege, Daten,
Einheiten und Bindestrich-Nummern bleiben unberuehrt; 10 Tests.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-06 08:28:19 +02:00
eltonandClaude Opus 5 d07bef5e10 llmrouter: kira-tts als deizo/kira-tts aufnehmen
Upstream kira-tts (10.6.42.111:8002, KIRA_TTS_KEY) und Alias deizo/kira-tts,
dazu das Recht in allen 12 Schluesseln ergaenzt, die deizo/kira-stt schon
hatten.

Anders als LiteLLM reicht der Router den Audio-Stream durch: Nicht-JSON-
Antworten gehen als Body weiter, statt ausgepuffert zu werden. Gemessen ueber
den Router: erster Ton nach 22 ms gestreamt gegen 5,70 s ungestreamt. Der
LiteLLM-Weg puffert und kommt auf 9,17 s (bekannter Upstream-Bug
BerriAI/litellm#14891).

Inka nutzt darueber jetzt STT und TTS; das LLM blieb vorerst auf dem alten
Weg (Tool-Schema-Grammatik, s. 42i/intern#1201).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-06 08:28:19 +02:00
eltonandClaude Fable 5.1 dcdfb1bc9e llmrouter README: die vier Wege ins Log (stats, zuordnung, jsonl/changes/sqlite, Journal)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 16:23:26 +02:00
eltonandClaude Fable 5.1 91e68d9ea9 llmrouter: Claude Code/Desktop — nackte claude-IDs -> alt/anthropic/<id>[:effort]
- anthropicModus (alt|openrouter), Normalisierung der IDs (Datum, [1m], Punkte),
  Client-Effort aus output_config.effort als Stufe, HEAD /api/hello -> 200
- Auswahl: nicht gemessene Stufe faellt auf die naechste gemessene darunter
  (sonst darueber, sonst Modellzahl) -- Sonnet 5 hat nur max/none
- /models: alt/ nur bei bestimmbarer Klasse; opencode-normalize nimmt
  openrouter/+alt/ genau dann (GLM 5.3 Flash war weggefallen)
- README: Abschnitt Claude Code und Claude Desktop
Verifiziert per claude -p mit claude-sonnet-5, claude-opus-5, claude-haiku-4-5-20251001.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 16:23:26 +02:00
eltonandClaude Fable 5.1 0d971b81dc llmrouter: Anthropic-Messages-Pfad (/messages, count_tokens) für Claude Code
Weiterleitung an OpenRouters Messages-Endpunkt (x-api-key, anthropic-version,
anthropic-beta), Effort als reasoning.effort, Usage in Anthropic-Form gelesen
(auch im Stream aus message_start/message_delta). Nur openrouter-Ziele; lokale
llama-server sprechen kein Messages-Format. Verifiziert: claude -p über
http://llm.lan:4010 mit alt/anthropic/claude-sonnet-5 -> glm-5.3-flash.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 16:23:26 +02:00
eltonandClaude Fable 5.1 9d0bd7e1a3 llmrouter: TTS/STT/Embedding/free als 42i/marvin-*
Alte Namen ohne Präfix laufen über die Durchreiche bei LiteLLM weiter (Andreas 2026-09-05).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 09:47:22 +02:00
eltonandClaude Fable 5.1 1d145b6259 llmrouter: Kira-Modelle als deizo/kira-reasoning, deizo/kira-stt
Alte Namen kira-* laufen über die Durchreiche weiter bei LiteLLM (Andreas 2026-09-05).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 09:47:22 +02:00
eltonandClaude Fable 5.1 c377791007 llmrouter: ACL nur für eigene Namen, Durchreiche prüft LiteLLM
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 09:47:22 +02:00
eltonandClaude Fable 5.1 34d6c08a3d llmrouter: Namensräume openrouter/, alt/, role/; Klasse über drei Indexe relativ
- openrouter/<id>[:effort] 1:1, alt/<id>[:effort] günstigste Alternative auf
  Abruf (ohne Last-Probe, im Takt erneuert), role/<name> aus config.rollen
- Klasse: Intelligence, Coding, Agentic je >= 95 % der Referenz (relativ statt
  3 Punkte), Kontext >= 90 %, billiger; Kandidaten auch ohne OpenRouter-Index,
  wenn AA Stufen kennt (OpenRouter führt Intelligence nur für 53 Modelle)
- ACL-Muster mit *, /models mit allen Konto-Modellen je Namensraum und Stufe
- Rollen aus der LiteLLM-Zeit übernommen (Führung high, Rest medium)
Andreas 2026-09-05.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 09:47:22 +02:00
eltonandClaude Fable 5.1 e13baaab28 llmrouter vor LiteLLM: Caddy llm.lan -> :4010, /models mischt LiteLLM-Liste dazu
Seit 2026-09-05 06:11 läuft llm.lan über den Router; 2608-Namen und role/*
gehen per Durchreiche an LiteLLM (:4000). Caddyfile-Falle: Datei-Bind-Mount,
mv tauscht den Inode -> podman restart llmlite-caddy statt caddy reload.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 08:12:31 +02:00
eltonandClaude Fable 5.1 81ab596897 llmrouter: Namen 42i/marvin-2609:*, Durchreiche unbekannter Namen an LiteLLM
Caddy zeigt llm.lan künftig auf den Router; alles Unbekannte (2608, role/*)
geht unverändert mit dem Client-Key an LiteLLM :4000. Umstellung je Agent =
Modellname, kein base_url-Wechsel (Andreas 2026-09-05). altnamen entfällt,
bis LiteLLM abgeschaltet wird.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 08:09:46 +02:00
eltonandClaude Fable 5.1 4b11a869e6 llmrouter: Schwellen medium 45, high 49, max 53 (Andreas 2026-09-05)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 07:47:01 +02:00
eltonandClaude Fable 5.1 3b9ad85825 llmrouter: Alias-Art schwelle (Index + Mindestkontext), Stufen 25/40/47/50
billigsterUeberSchwelle in openrouter-auswahl, gemeinsamer klasseFiltern
mit dem Referenzmodus. Stufen jetzt als Schwelle: low 25/256k, medium
40/256k, high 47/500k, max 50/500k (Andreas 2026-09-05).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 07:27:34 +02:00
eltonandClaude Fable 5.1 d8cc9b5dbb llmrouter: Deploy-Stand — Port 4010, Kira-Keys, MODEL_BLOCKLIST, max auf fable-5.1:high
Läuft seit 2026-09-05 als systemd-Unit llmrouter im LXC 185020 unter
/srv/llmrouter, parallel zu LiteLLM (:4000). 4001 war von nginx belegt.
Admin-Key in OpenBao jessie/llmrouter. Token für inka-mx, nightjob, lab-xo,
team-copilot fehlen (nur Hash in LiteLLM).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 07:18:31 +02:00
eltonandClaude Fable 5.1 804383d157 llmrouter: Stufen low/medium/high/max auf Haiku 4.5 / Sonnet 5 / Opus 5 medium / Fable 5.1 medium
none, extra, ultra und marvin-mass abgeschafft (Andreas 2026-09-05); Altnamen
und Key-Rechte entsprechend umgeschrieben.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 07:13:19 +02:00
eltonandClaude Fable 5.1 7897fa9651 llmrouter: leichtgewichtiger Gateway-Ersatz mit Alternativ-Auflösung
OpenAI-kompatibler Reverse-Proxy in Bun: Client-Key -> ACL, Alias ->
Modell (alternative: günstigstes Modell derselben Klasse über
llmlite/openrouter-auswahl inkl. Effort-Achse; fest: lokale Upstreams,
TTS/STT, Embeddings), Usage/Kosten aus der OpenRouter-Antwort (auch im
Stream), JSONL + SQLite-Log, Tagesstatistik je Key. Altnamen der
LiteLLM-Zeit werden übersetzt. Kein 3456/stdcmpt, kein role/*, kein -auto
(Andreas 2026-09-05). Lokal verifiziert: Chat, Stream, ACL, Altname,
Kosten im Log. Parallelbetrieb auf :4001 geplant.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 07:03:12 +02:00