llm mode
llm mode schaltet das Inferenz-Backend in einem Schritt um — also die Dienste, die Apparat für Bedeutungssuche (Embeddings) und für den Dialog mit dem Vault (Sprachmodell) nutzt. Damit wechselst du bequem zwischen zwei Betriebsarten:
- lokal — beide Dienste laufen im mitgelieferten Container auf deinem Rechner. Das ist der Auslieferungszustand und der richtige Modus für die Entwicklung oder wenn du offline bist.
- remote — beide Dienste laufen auf einem dedizierten Inferenz-Host in deinem Netz (etwa einer Maschine mit Grafikkarte). Spürbar schneller bei großen Vaults, aber nur erreichbar, wenn du im jeweiligen Netz bist.
Der eigentliche Aufwand beim Umschalten ist eine Handvoll Einstellungen in der .env. llm mode schreibt genau die — du tippst ein Wort statt acht Zeilen.
Aktiven Modus anzeigen
Ohne Argument zeigt das Kommando, welcher Modus gerade aktiv ist:
apparat llm mode
LLM: driver: ollama endpoint: http://ollama:11434 model: qwen2.5:7b-instruct auth: none Embedding: driver: ollama endpoint: http://ollama:11434 model: jina/jina-embeddings-v2-base-de auth: none Reachability: apparat vector:ping && apparat chat:ping
Die Anzeige liest nur die Konfiguration und nimmt selbst keine Verbindung auf. Ob die Dienste tatsächlich antworten, prüfen vector ping und chat ping — die laufen im Container, wo die Dienst-Adressen auflösbar sind.
Auf lokal zurückstellen
apparat llm mode local
Setzt beide Dienste auf den mitgelieferten lokalen Container zurück — der Auslieferungszustand. Jeder vorher gesetzte Wert (Endpunkt, Modell, Zugangstoken) wird dabei sauber überschrieben, du musst nichts von Hand zurückräumen.
Auf ein Remote-Backend umstellen
Ein Remote-Modus ist ein Profil. Die Zugangsdaten dafür liegen in einer eigenen Datei .env.<name>.local im Projektverzeichnis — sie wird bewusst nicht mitversioniert, damit der Zugangstoken niemals im Repository landet. Lege die Datei einmalig an, zum Beispiel als Profil studio:
# .env.studio.local APPARAT_LLM_DRIVER=openai APPARAT_LLM_ENDPOINT=http://192.168.10.20:8001 APPARAT_LLM_MODEL=qwen3.6-35b-a3b APPARAT_LLM_API_KEY=<zugangstoken> APPARAT_EMBEDDING_DRIVER=openai APPARAT_EMBEDDING_ENDPOINT=http://192.168.10.20:8002 APPARAT_EMBEDDING_MODEL=bge-m3 APPARAT_EMBEDDING_API_KEY=<zugangstoken> COMPOSE_PROFILES=
Die Adresse ist jeweils die Basis-URL ohne /v1 — Apparat hängt den Rest selbst an. Der Zugangstoken ist optional; ein Endpunkt ohne Anmeldung lässt die beiden API_KEY-Zeilen einfach weg. COMPOSE_PROFILES= leer zu setzen verhindert, dass der lokale Container im Remote-Modus unnötig mitstartet.
Danach genügt der Profilname:
apparat llm mode studio
Das Kommando übernimmt die Profilwerte, ergänzt fehlende Schlüssel aus dem lokalen Standard und zeigt zum Schluss, was sich geändert hat (der Zugangstoken wird dabei nur maskiert ausgegeben). Anschließend nennt es die zwei Schritte, mit denen der laufende Webdienst die neue Konfiguration übernimmt:
php artisan config:clear docker compose exec -T web-local php artisan octane:reload
Zum Prüfen, ob das Backend antwortet:
apparat vector ping && apparat chat ping
Umschalten kostet keinen Neuaufbau
Jedes Embedding-Modell führt seinen eigenen Vektor-Index pro Vault. Lokales und Remote-Modell überschreiben sich also nicht: Du kannst hin- und herschalten, ohne jedes Mal neu zu indizieren — der jeweils andere Index bleibt erhalten und steht beim Zurückwechseln sofort wieder bereit.
Nur wenn du ein Embedding-Modell zum ersten Mal verwendest, ist sein Index noch leer. Dann baust du ihn einmalig auf:
apparat vector rebuild <vault>
Bis dahin fällt die Bedeutungssuche auf diesem Modell automatisch auf die Volltextsuche zurück — Suchen bleibt also immer möglich.