Skip to main content

LiteLLM Auto-Synch-Manager

Ein CLI-Werkzeug, das eine LiteLLM-Instanz deklarativ synchronisiert. Statt Modelle, Credentials, Access-Groups und Virtual-Keys per Hand in der Admin-UI zu pflegen, beschreibt man den gewünschten Zustand in Dateien und lässt das Script die Differenz zum Ist-Zustand ausführen.

  • Idempotent – beliebig oft ausführbar, gleiches Ergebnis.
  • Dry-Run als Standard – ohne --apply wird nichts geschrieben.
  • Versionierbar – der Soll-Zustand liegt als YAML im Repository.
  • Abgesichert – fünf Validierungsphasen, Error-Reports, Master-Key-Schutz.

Aufbau

litellm_auto_synch/
├── litellm_auto_synch_manager.py   # Das Hauptscript
├── config/                         # Einstellungen des Skripts
│   ├── .env                        #   Geheimnisse (nicht in Git)
│   ├── _beispiel.env               #   Vorlage fuer .env (vom Merge ausgeschlossen)
│   ├── config.yaml                 #   settings + server_definition
│   └── README.md                   #   Vollständige Einstellungsreferenz
├── data/                           # Inhalte für LiteLLM
│   ├── _data.yaml                  #   Konsolidierte Gesamtfassung (ausgeschlossen)
│   ├── app.vkeys.yaml              #   Virtual-Keys + Access-Groups
│   ├── embedding.gemini.yaml
│   ├── hermes.data.yaml
│   ├── opencode.data.yaml
│   ├── voice.data.yaml
│   └── README.md                   #   Referenz aller Entitäten
├── virtual_keys/                   # Key-Generator + lokale Spiegelung
│   ├── virtual_key_generator.py
│   ├── keygen.json                 #   Kürzel je Access-Group
│   ├── vkeys.env                   #   KEY_ALIAS=KEY_VALUE (automatisch)
│   └── vkeys.json                  #   Server-Antwort je Alias (automatisch)
├── scripts/                        # Hilfsskripte
├── docs/                           # Ausführliche Dokumentation
├── tests/                          # Offline-Testsuite
├── test_all_modes.py               # Szenario-Tests aller Modi
└── logs/                           # Logs, Snapshots, Error-Reports
    └── autogenerated/              #   Gemergte Gesamtfassungen je wirksamem Lauf

Die zwei Datenordner

Ordner Inhalt Beispiel
config/ Einstellungen, die das Skript betreffen Base-URL, API-Key, managed_by, Timeout, Server-Profile
data/ Inhalte, die auf LiteLLM angelegt werden providers, endpoint_types, credentials, access_groups, models, keys

Beide Ordner werden nach demselben Prinzip gelesen: alle Dateien direkt im Ordner werden alphabetisch gemergt, Dateien mit _-Präfix bleiben ausgeschlossen. Statt eines Ordners kann auch eine einzelne Datei oder eine Liste angegeben werden.


Wichtige Stellen im Projekt

Ich will … … dann hierhin
eine Einstellung ändern (URL, Key, Timeout, managed_by) config/README.md
ein Modell, Credential oder einen Key anlegen data/README.md
verstehen, wie gemergt und priorisiert wird docs/config-loading.md
zwischen LiteLLM-Instanzen wechseln docs/server-profile.md
alle CLI-Flags nachschlagen docs/cli-argumente.md
wissen, was ein Lauf genau tut docs/ablauf-sync.md
einen Fehler einordnen docs/fehlerbehebung.md
die Validierungen verstehen (Valid1–Valid5) docs/validations.md
mit Geheimnissen richtig umgehen docs/sicherheit.md
die gesamte Dokumentation durchblättern docs/index.md

Installation

Ab v1.9.1 werden Releases als Windows-EXE, Python-Wheel und PyPI-Package bereitgestellt.

pip install litellm-auto-synch-manager
lasm --help

Nach der Installation stehen mehrere gleichwertige CLI-Namen zur Verfügung:

lasm
litellm-auto
litellm-sync
litellm-auto-synch
litellm-auto-synch-manager

Bei Wheel-Installationen werden config/, data/, virtual_keys/ und logs/ relativ zum aktuellen Arbeitsverzeichnis verwendet. Die Windows-EXE verwendet den Ordner der EXE, wenn dort die bestehende V1-Projektstruktur liegt, andernfalls ebenfalls das aktuelle Arbeitsverzeichnis. Es werden dabei keine Config- oder Data-Dateien automatisch erzeugt.

Die Windows-EXE enthält zwei eingebettete Windows-Icon-Ressourcen: das kompakte LASM-Symbol als primäres Programm-/Fenster-Icon und das vollständige LASM-Logo als zusätzliche Icon-Ressource für Windows-Verknüpfungen.

Der automatisierte Build- und Release-Prozess ist in docs/releasing.md dokumentiert.


Schnellstart

1. Voraussetzungen

pip install -r requirements.txt

Python 3.11 oder neuer; als externe Abhängigkeit wird nur PyYAML benötigt.

2. Geheimnisse hinterlegen

config/.env aus der mitgelieferten Vorlage anlegen (die echte Datei ist über .gitignore ausgeschlossen; die Vorlage ist durch ihren _-Präfix vom Merge ausgenommen und deshalb im Repository):

cp config/_beispiel.env config/.env      # Linux / macOS
copy config\_beispiel.env config\.env    # Windows

Anschließend die Platzhalter ersetzen:

LITELLM_API_KEY=sk-dein-admin-key
LITELLM_MASTER_KEY=sk-dein-admin-key

OPENCODE_API_KEY=sk-…
HERMES_API_KEY=…

3. Server-Profil prüfen

In config/config.yaml:

settings:
  server: local

server_definition:
  local:
    litellm_base_url: https://litellm.example.com
    litellm_api_key: ${LITELLM_API_KEY}

4. Erster Lauf

python litellm_auto_synch_manager.py

Das ist ein Dry-Run: Es wird nichts geschrieben, aber der vollständige Plan ausgegeben.


Die Betriebs-Modi

Ohne Flag läuft immer ein Dry-Run. --apply ist der Schalter, der aus einem Plan tatsächliche Änderungen macht.

Bei einer Installation über Wheel/PyPI können die bestehenden V1-Modi zusätzlich als kurze Commands geschrieben werden. Sie sind reine Aliase und ändern die Semantik der bisherigen Flags nicht:

lasm apply          # exakt wie: lasm --apply
lasm add            # exakt wie: lasm --add (Dry-Run)
lasm add --apply    # exakt wie: lasm --add --apply
lasm prune          # exakt wie: lasm --prune (Dry-Run)
lasm prune --apply  # exakt wie: lasm --prune --apply
lasm reset          # exakt wie: lasm --reset

Die bisherigen Flag-Aufrufe und der direkte Start über python litellm_auto_synch_manager.py ... bleiben unverändert gültig.

Dry-Run (Standard)

python litellm_auto_synch_manager.py

Liest config/ und data/, holt den Ist-Zustand aus LiteLLM und zeigt, was passieren würde. Keine schreibenden Aufrufe. Der vollständige Plan mit Begründung je Operation steht in logs/sync_*.log.

Sync anwenden – --apply

python litellm_auto_synch_manager.py --apply

Führt den Plan aus: Credentials, Modelle, Access-Groups und Virtual-Keys werden angelegt oder aktualisiert. Verwaltete Access-Groups und Virtual-Keys, die nicht mehr in data/ stehen, werden gelöscht. Anschließend laufen die Post-Execute-Validierungen (Valid3–Valid5).

Zusätzlich wird die gemergte Gesamtfassung nach logs/autogenerated/ geschrieben.

Additiv – --add

python litellm_auto_synch_manager.py --add          # Dry-Run
python litellm_auto_synch_manager.py --add --apply  # anwenden

Nur Hinzufügen und Aktualisieren, niemals Löschen – auch nicht bei verwalteten Objekten und auch nicht mit prune_model_name_prefixes. Der richtige Modus für produktive Instanzen, auf denen fremde Objekte existieren, und für CI/CD.

Aufräumen – --prune

python litellm_auto_synch_manager.py --prune          # Dry-Run: was würde gelöscht?
python litellm_auto_synch_manager.py --apply --prune  # anwenden

Löscht zusätzlich Modelle, die vom Script verwaltet werden (managed_by stimmt) oder deren Name mit einem der prune_model_name_prefixes beginnt, und die nicht mehr in data/ stehen.

Destruktiv. Immer erst ohne --apply prüfen.

Zurücksetzen – --reset

python litellm_auto_synch_manager.py --reset

Leert die Instanz: Credentials, Modelle, Access-Groups und Virtual-Keys werden gelöscht, vkeys.env und vkeys.json geleert.

Sofort destruktiv, kein Dry-Run. Der Master-Key (LITELLM_API_KEY) wird anhand seines Werts erkannt und ausgenommen. Nur gegen Test-Instanzen verwenden. Schließt sich mit --apply gegenseitig aus.

Instanz wechseln – --server

python litellm_auto_synch_manager.py --server vps --apply

Wählt ein Profil aus server_definition. Profile können eigene Einstellungen mitbringen, nicht nur eine eigene URL.

Quelle wechseln – --config / --data

# Nur eine Datendatei
python litellm_auto_synch_manager.py --data data/opencode.data.yaml

# Die konsolidierte Gesamtfassung (trotz '_', weil explizit angegeben)
python litellm_auto_synch_manager.py --data data/_data.yaml

# Mehrere Quellen
python litellm_auto_synch_manager.py --data "data/opencode.data.yaml, data/app.vkeys.yaml"

Weitere Schalter

Flag Wirkung
--force-credentials Patcht jedes Credential ohne Feldvergleich (nach Key-Rotation)
--create-credentials / --no-create-credentials Überschreibt settings.create_credentials
--detailed-outputs / --no-detailed-outputs Ausführliche bzw. knappe Konsolenausgabe
--managed-by <name> Überschreibt den Marker für verwaltete Objekte
--timeout <sek> HTTP-Timeout je Aufruf

Vollständige Referenz: docs/cli-argumente.md.


Empfohlener Ablauf

# 1. Plan prüfen
python litellm_auto_synch_manager.py

# 2. Anwenden
python litellm_auto_synch_manager.py --apply

# 3. Gegenprobe: sollte überall SKIP zeigen
python litellm_auto_synch_manager.py

# 4. config/config.yaml und data/*.yaml committen (config/.env bleibt außen vor)

Ausgaben und Nachvollziehbarkeit

Pfad Inhalt
logs/sync_<Zeitstempel>.log Vollständiges Protokoll eines Laufs inkl. Begründung je Operation
logs/autogenerated/<Zeitstempel>_config.yaml Gemergte Konfiguration des Laufs (Geheimnisse maskiert)
logs/autogenerated/<Zeitstempel>_data.yaml Gemergte Daten des Laufs
logs/litellm_snapshot.yaml Ist-Zustand vor den Änderungen (Key-Werte maskiert)
logs/error_report_<Zeitstempel>.txt Bei Abbruch: Validierungsphasen, Plan, bereits Ausgeführtes, Fehler
virtual_keys/vkeys.env / vkeys.json Die erzeugten Virtual-Keys

Der gesamte logs/-Ordner ist über .gitignore ausgeschlossen.


Tests

# Unit- und Integrationstests (offline, ohne Netzwerk)
python tests/test_litellm_auto_synch_manager.py

# Szenario-Tests für alle Modi
python test_all_modes.py

Sicherheit in drei Sätzen

Geheimnisse gehören ausschließlich in config/.env (oder in echte Umgebungsvariablen) und werden in yaml-Dateien nur als ${NAME} referenziert. In Konsole, Logs und Merge-Dumps erscheinen sie maskiert. config/.env, logs/ und virtual_keys/vkeys.* sind über .gitignore ausgeschlossen.

Details: docs/sicherheit.md.

Metadata

Release files for litellm-auto-synch-manager 1.9.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for litellm-auto-synch-manager 1.9.1
File Size Uploaded
litellm_auto_synch_manager-1.9.1.tar.gz 54.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for litellm-auto-synch-manager 1.9.1
File Interpreter ABI Platform
litellm_auto_synch_manager-1.9.1-py3-none-any.whl Python 3 none any Details

Total release size: 110.0 kB

Release files / litellm_auto_synch_manager-1.9.1.tar.gz

Download URL litellm_auto_synch_manager-1.9.1.tar.gz
Size 54.8 kB
Tags Source
SHA-256 checksum
How to use checksums
8f22133059517d8ebd2abf5724548703f0782d8a86b68194c80ef166136842d7
BLAKE2b-256 checksum
How to use checksums
893336a03f2a00c2e534905cbdf10a795d96681ad24da685a40c7e0249354bb5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / litellm_auto_synch_manager-1.9.1-py3-none-any.whl

Download URL litellm_auto_synch_manager-1.9.1-py3-none-any.whl
Size 55.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
31e96594e74a653bc5d6fccee61df153b35d80407efe9bc72ea397347a9b78c3
BLAKE2b-256 checksum
How to use checksums
b5e09d37dd5c02367f44b1df4aa120fe27caccccf588cf7531d7a95d9fdd809f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.9.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page