Die Kommandozeilen-Werkzeuge

OpticScript ist zuerst eine Engine, dann eine Oberfläche. Wer sie aus einem Makefile, einer CI-Strecke oder einem Shell-Skript heraus benutzen will, braucht kein Fenster — sondern sechs Programme, die alle dieselbe Engine tragen und keine Laufzeitumgebung voraussetzen.

Keine Python-Installation, kein Node, kein pip install. Jede Binary bringt alles mit: die Engine, die Formatbibliotheken, die Schriften.

Werkzeug Wofür
mlcos-run Ein Skript ausführen
mlcos-compile Ein Skript in eine eigenständige Binary verwandeln
mlcos-analyze Bilder messen statt umwandeln
mlcos-server Dieselbe Engine über HTTP
mlcos-ext Erweiterungen und Werkzeug-Plugins verwalten
mlcos-mcp Die Engine als Werkzeug für KI-Agenten
mlcos-license Lizenz eintragen und anzeigen, ohne Fenster

Unter Windows heißen sie mlcos-run.exe und so weiter; unter macOS liegen sie im Programmpaket unter Contents/MacOS/, im DMG zusätzlich im Ordner CLI.


mlcos-run

Führt ein Skript aus. Die Flaggen ergeben sich aus dem Skript selbst — jedes //!INPUT:, //!OUTPUT: und //!PARAM: wird zu einer Option.

mlcos-run thumbnail.js --SRC=foto.jpg --OUT=klein.webp --BREITE=400

Das ist der Unterschied zu einem üblichen Bildwerkzeug: Sie erfinden die Schnittstelle im Skript, und die Kommandozeile richtet sich danach. Ein Skript mit drei Eingängen bekommt drei Flaggen, ohne dass jemand einen Parser schreibt.

Erweiterungen werden automatisch gefunden — projektlokal in ./.mlcos-extensions/, benutzerweit in ~/.mlcos/extensions/, dazu die mitgelieferten. --no-extensions schaltet das ab.

mlcos-compile

Macht aus dem Skript eine Binary, die für sich allein läuft.

mlcos-compile thumbnail.js          # → bin/thumbnail

Der Empfänger installiert nichts. Keine Runtime, kein Docker-Image, keine Abhängigkeitsliste — eine Datei, die man kopiert und startet. Die Flaggen der Binary sind wieder die Direktiven des Skripts, sie trägt ihre eigene --help.

Ausführlich in Vom Skript zur Executable.

mlcos-analyze

Das einzige Werkzeug hier, das kein Bild zurückgibt, sondern Zahlen.

mlcos-analyze stats foto.jpg        # Helligkeit, Kontrast, Schärfe, Beschnitt
mlcos-analyze compare a.png b.png   # MSE, PSNR, wie weit auseinander?
mlcos-analyze hash *.jpg            # Duplikate finden
mlcos-analyze exif foto.jpg         # Kamera, Objektiv, Aufnahmezeit
mlcos-analyze histogram foto.jpg    # Verteilung je Kanal

--json bei jedem Unterbefehl, wenn ein Skript die Antwort weiterreicht.

Wofür man das braucht: prüfen, ob ein Renderlauf sich verändert hat (compare gegen eine abgelegte Referenz), unscharfe Scans aussortieren (stats liefert die Laplace-Varianz, dasselbe Maß, mit dem Kameras fokussieren), Duplikate in einem Ordner finden (hash übersteht Skalieren und Neukodieren), oder nachsehen, ob ein Bild noch die Herkunftsangaben trägt, die die Pipeline eingestempelt hat.

$ mlcos-analyze compare render.png referenz.png
  MSE            0.00000012
  PSNR           69.21 dB  (praktisch nicht unterscheidbar)
  max Differenz  1.0 von 255
  abweichend     613 Pixel  (0.0061 %)
  Hash-Abstand   0 Bit   (dasselbe Bild)

Bilder unterschiedlicher Größe werden allein über den Wahrnehmungs-Hash verglichen — ein MSE zwischen verschieden großen Bildern ist nicht definiert, und eine Zahl auszugeben wäre schlechter als keine.

mlcos-server

Dieselbe Engine hinter HTTP.

mlcos-server -port 8080 -token geheim

POST /process/js nimmt das Skript und die Bilder als Multipart entgegen und liefert das Ergebnis zurück. Im Servermodus sind Dateizugriffe abgeschaltet: Eingaben kommen als Felder image_<KEY>, nichts wird von der Platte gelesen oder auf sie geschrieben.

mlcos-ext

Verwaltet Erweiterungen (JavaScript, laufen in der Engine) und Werkzeug-Plugins (eigene Programme, die die Engine aufruft).

mlcos-ext list                                   # was ist installiert
mlcos-ext install-from <katalog-url> --list      # was gibt es
mlcos-ext install-from <katalog-url> rmbg        # eines holen

Der Katalog liefert plattformgerecht: ein Windows-Rechner lädt keine Linux-Binaries mit, und was auf dieser Plattform gar nicht läuft, wird vorher abgelehnt statt hinterher. Jede Datei wird über ihre SHA-256-Prüfsumme verifiziert, bevor sie als installiert gilt.

mlcos-mcp

Der Model-Context-Protocol-Server: die Engine als Werkzeug für KI-Agenten. Eigene Seite: MCP-Server.


mlcos-license

Trägt eine Lizenz ein, ohne dass die Desktop-App nötig ist — für Server, die man per SSH einrichtet. Es ist dieselbe Aktivierung wie in der App: einmal online prüfen, danach offline gültig.

mlcos-license activate <SCHLÜSSEL> --name "Vorname Nachname"
mlcos-license status            # was gilt, bis wann, was freigeschaltet ist
mlcos-license status --json
mlcos-license remove

Die Lizenz gilt für das Benutzerkonto, das das Kommando ausführt. Auf einem Server also als das Konto ausführen, unter dem der Dienst läuft, und den Dienst danach neu starten. Einen Server für andere im Netz schaltet eine Enterprise-Lizenz frei, siehe Team-Server.


Zusammen benutzt

Die Werkzeuge sind so geschnitten, dass sie sich in einer Shell-Strecke ergänzen. Ein Regressionstest für eine Bildpipeline braucht keine weitere Software:

#!/usr/bin/env bash
set -e
mlcos-run pipeline.js --SRC=eingabe.png --OUT=/tmp/neu.png

# Weicht das Ergebnis von der abgelegten Referenz ab?
psnr=$(mlcos-analyze compare /tmp/neu.png referenz.png --json | jq .psnr)
if [ "$(echo "$psnr < 50" | bc)" = 1 ]; then
  echo "Ausgabe hat sich geändert: $psnr dB"
  exit 1
fi

Oder ein Ordner voller Scans, aus dem die unscharfen herausfallen:

for f in scans/*.jpg; do
  s=$(mlcos-analyze stats "$f" --json | jq .sharpness)
  awk -v s="$s" 'BEGIN { exit (s < 0.0001) ? 0 : 1 }' && echo "zu weich: $f"
done

Siehe auch