{ "_doku": "Versionierte Quelle des llmrouter. Secrets kommen NUR aus der Umgebung: OPENROUTER_API_KEY, MISTRAL_API_KEY, KIRA_REASONING_KEY, KIRA_STT_KEY, ARTIFICIALANALYSIS_API_KEY, ADMIN_KEY; Client-Keys aus KEYS_FILE (token -> name), Rechte aus key-acls.json (name -> aliasse). Port 4010, weil 4001 im LXC von nginx belegt ist. MODEL_BLOCKLIST zeigt auf die Sperrliste (Host: /srv/llmrouter/model-blocklist.json).", "port": 4010, "logDir": "./log", "refreshHours": 12, "aaRefreshDays": 7, "lasttest": true, "upstreams": { "openrouter": { "base": "https://openrouter.ai/api/v1", "keyEnv": "OPENROUTER_API_KEY" }, "qwen": { "base": "http://10.18.5.30:11507/v1", "maxParallel": 1 }, "voice": { "base": "http://10.18.5.30:8803/v1" }, "ollama": { "base": "http://10.18.5.30:11434/v1" }, "mistral": { "base": "https://api.mistral.ai/v1", "keyEnv": "MISTRAL_API_KEY" }, "kira-chat": { "base": "http://10.6.42.111:8000/v1", "keyEnv": "KIRA_REASONING_KEY" }, "kira-stt": { "base": "http://10.6.42.111:8001/v1", "keyEnv": "KIRA_STT_KEY" } }, "aliases": { "marvin:low": { "art": "schwelle", "index": 25, "minContext": 256000 }, "marvin:medium": { "art": "schwelle", "index": 45, "minContext": 256000 }, "marvin:high": { "art": "schwelle", "index": 49, "minContext": 500000 }, "marvin:max": { "art": "schwelle", "index": 53, "minContext": 500000 }, "marvin-free": { "art": "fest", "upstream": "openrouter", "model": "openrouter/free" }, "marvin-core:none": { "art": "fest", "upstream": "qwen", "model": "qwen36:35b", "body": { "chat_template_kwargs": { "enable_thinking": false } } }, "marvin-core:medium": { "art": "fest", "upstream": "qwen", "model": "qwen36:35b", "body": { "chat_template_kwargs": { "enable_thinking": true } } }, "kira-reasoning": { "art": "fest", "upstream": "kira-chat", "model": "kira-reasoning" }, "kira-stt": { "art": "fest", "upstream": "kira-stt", "model": "kira-stt" }, "marvin-tts": { "art": "fest", "upstream": "voice", "model": "tts-1" }, "marvin-stt": { "art": "fest", "upstream": "voice", "model": "whisper-1" }, "marvin-tts-turbo": { "art": "fest", "upstream": "mistral", "model": "voxtral-mini-tts-2603" }, "marvin-stt-turbo": { "art": "fest", "upstream": "mistral", "model": "voxtral-mini-latest" }, "marvin-embedding": { "art": "fest", "upstream": "ollama", "model": "bge-m3" }, "marvin-embedding-turbo": { "art": "fest", "upstream": "openrouter", "model": "mistralai/mistral-embed-2312" } }, "_altnamen_doku": "Übergangs-Aliasse aus der LiteLLM-Zeit, damit kein Container angefasst werden muss. Loggen unter dem NEUEN Namen. Nach und nach abbauen. Stufen 2026-09-05 (Andreas): low=Haiku 4.5, medium=Sonnet 5, high=Opus 5 medium, max=Fable 5.1 medium; none/extra/ultra/mass abgeschafft.", "altnamen": { "42i/marvin-2608": "marvin:low", "42i/marvin-2608:none": "marvin:low", "42i/marvin-2608:low": "marvin:low", "42i/marvin-2608:medium": "marvin:medium", "42i/marvin-2608:high": "marvin:high", "42i/marvin-2608:extra": "marvin:high", "42i/marvin-2608:ultra": "marvin:max", "42i/marvin-2608-auto": "marvin:medium", "42i/marvin-2608-mass": "marvin:low", "42i/marvin-2608-mass:none": "marvin:low", "42i/marvin-2608-mass:medium": "marvin:low", "42i/marvin-2608-core:none": "marvin-core:none", "42i/marvin-2608-core:medium": "marvin-core:medium", "marvin-reasoning": "marvin-core:medium", "marvin-core": "marvin-core:none" }, "_stufen_doku": "Stufen als Index-Schwelle (Artificial-Analysis-Intelligence-Index, 0-100) mit Mindestkontext (Andreas 2026-09-05): low 25/256k, medium 45/256k, high 49/500k, max 53/500k. Die Art \"alternative\" mit Referenzmodell (z.B. anthropic/claude-opus-5:medium) bleibt möglich." }