Echolot
Befehlszeile und CI

Befehlszeilentool

Installiere den Befehl echolot und lerne, was alle Befehle gemeinsam haben: Secrets, Umgebungsvariablen und Exit-Codes.

echolot führt aus einem Terminal oder einem CI-Job aus, was du in der App baust: Es sendet Anfragen, führt einen Arbeitsbereich mit seinen Prüfungen aus und schreibt Berichte, importiert und exportiert Sammlungen, prüft Specs, stellt Mocks bereit, führt Flows aus und stellt einen Arbeitsbereich KI-Agenten über MCP bereit. Es liest dieselben Dateien des Arbeitsbereichs wie die App, nichts muss konvertiert werden.

Das Befehlszeilentool laden

Der Direkt-Download bringt das Tool in der App mit. So legst du es in deinen PATH:

  1. Wähle Echolot › Befehlszeilentool installieren … oder öffne Einstellungen › Allgemein und klicke unter Befehlszeilentool auf Befehlszeilentool installieren ….
  2. Echolot legt einen Link echolot auf das Tool in der App in /opt/homebrew/bin oder /usr/local/bin an. Ist keiner der beiden Ordner beschreibbar, fragt macOS nach dem Passwort eines Administrators.
  3. Öffne ein neues Terminalfenster und tippe echolot --help.

Einstellungen › Allgemein › Befehlszeilentool zeigt, wo das mitgelieferte Tool liegt und wo der Link in deinem PATH. Nutze Neu installieren, nachdem du die App verschoben hast, und Entfernen, um den Link zu entfernen. Steht eine Datei namens echolot, die Echolot nicht dorthin gelegt hat, im Weg, fragt Echolot, bevor es sie ersetzt, und die Datei kommt in den Papierkorb.

Weil der Link in die App zeigt, wird das Tool mit der App aktualisiert.

Mac-App-Store-Edition

Die Version aus dem App Store hat kein Tool in sich und keinen Menübefehl Befehlszeilentool installieren …. Installiere das Tool stattdessen aus dem Zip auf der Seite der Releases. Es arbeitet mit denselben Arbeitsbereichen.

Editionen vergleichen

Das Befehlszeilentool läuft nie ab, auch nicht in Beta-Builds der App. Es braucht macOS 15 oder neuer auf einem Mac.

Befehle

BefehlWas er macht
echolot sendSendet eine Anfrage, eine URL oder eine gesicherte Anfragedatei, und schreibt den Body in die Standardausgabe.
echolot runFührt einen Arbeitsbereich, einige seiner Ordner oder Anfragen oder eine Postman-Sammlung aus, mit Prüfungen und Berichten.
echolot validatePrüft, dass jede Datei eines Arbeitsbereichs lesbar ist und jede Anfrage sich auflöst.
echolot import, echolot exportBringt Sammlungen in einen Arbeitsbereich und schreibt einen Arbeitsbereich als Postman, Insomnia, Bruno oder Echolot aus.
echolot mcpPrüft MCP-Server, meldet sich bei ihnen an, stellt einen Arbeitsbereich Agenten bereit und gibt Setups für Clients aus.
echolot specPrüft OpenAPI-Dokumente und prüft und wendet Änderungen der Spec auf den Ordner an, der der Spec folgt.
echolot graphql diffVergleicht zwei GraphQL-Schemas und stuft jede Änderung ein.
echolot grpcBeschreibt gRPC-Services und ruft ihre Methoden auf.
echolot mqttAbonniert bei MQTT-Brokern und veröffentlicht dort.
echolot mockStellt einen Mock bereit: die Routen eines Mocks des Arbeitsbereichs oder ein OpenAPI-Dokument.
echolot fakeErzeugt Beispieldaten aus einer Vorlage, für Fixtures und Seed-Daten.
echolot flowListet die Flows eines Arbeitsbereichs auf, führt sie aus, erstellt sie und stellt sie bereit.
echolot agentFührt den eingebauten Agenten mit einer Aufgabe aus, mit einer Richtlinie statt Genehmigungen.

echolot help <command> und echolot <command> --help geben alle Optionen eines Befehls aus. Befehle mit Unterbefehlen nehmen sie genauso: echolot mcp serve --help.

Optionen, die jeder Befehl hat

OptionBedeutung
--versionGibt die Version und den Build aus, etwa 0.5.0 (8).
-h, --helpGibt die Optionen des Befehls aus.

Arbeitsbereiche und Umgebungen

Befehle, die an einem Arbeitsbereich arbeiten, nehmen seinen Ordner, den mit workspace.toml darin. Einige nehmen ihn als Argument (echolot run Alpenglow.echolot), andere mit -w oder --workspace (echolot flow list -w Alpenglow.echolot); die Seite jedes Befehls sagt, wie. Wo er optional ist, wird der aktuelle Ordner genutzt.

--env wählt eine Umgebung nach ihrem Dateinamen ohne .toml (staging). run, validate und flow nehmen auch ihren Namen (Staging). Ohne --env lösen sich Anfragen mit den eigenen Variablen des Arbeitsbereichs auf. Siehe Umgebungen.

Secrets

Geheime Werte liegen nie in den Dateien des Arbeitsbereichs: Eine Datei nennt die geheime Variable und sonst nichts. Das Befehlszeilentool findet jeden Wert in dieser Reihenfolge:

  1. Eine Umgebungsvariable ECHOLOT_SECRET_<NAME>. Der Name ist der Name der Variable in Großbuchstaben, wobei jedes Zeichen, das kein Buchstabe oder keine Ziffer ist, zu _ wird: token ist ECHOLOT_SECRET_TOKEN, me_password ist ECHOLOT_SECRET_ME_PASSWORD.
  2. Bei echolot run eine Datei, die mit --secrets angegeben wird: ein NAME=value pro Zeile, # für Kommentare, Anführungszeichen um einen Wert werden entfernt. NAME ist der Name der Variable (token=…) oder der ganze Name der Umgebungsvariable (ECHOLOT_SECRET_TOKEN=…). Werte in der Datei haben Vorrang vor Umgebungsvariablen.
  3. Auf einem Mac die Einträge im Schlüsselbund, die die App führt. Ein Secret, das du in der App festlegst, oder ein MCP-Server, bei dem du dich angemeldet hast, funktioniert auch im Terminal.
export ECHOLOT_SECRET_PASSWORD="$(op read 'op://Shop/Alpenglow staging/password')"
echolot run Alpenglow.echolot --env staging

Der Schlüsselbund wird nie genutzt, wenn CI gesetzt ist (auf irgendetwas außer leer, 0 oder false) oder wenn ECHOLOT_KEYCHAIN=0 gilt. So wartet ein CI-Job nie auf eine Abfrage des Schlüsselbunds. Siehe Secrets.

Umgebungsvariablen

VariableGenutzt vonBedeutung
ECHOLOT_SECRET_<NAME>Jeder Befehl, der Anfragen auflöstDer Wert der geheimen Variable <NAME>.
ECHOLOT_KEYCHAIN=0Jeder BefehlDen Schlüsselbund weder lesen noch beschreiben.
CIJeder BefehlIst sie gesetzt, ist der Schlüsselbund aus, wie mit ECHOLOT_KEYCHAIN=0.
HTTPS_PROXY, HTTP_PROXY, ALL_PROXY, NO_PROXYsend, run, mqtt und andereProxys, gelesen wie curl sie liest. --proxy und --no-proxy überschreiben sie; die eigene Proxy-Einstellung eines Arbeitsbereichs hat Vorrang.
ECHOLOT_CERT_PASSPHRASEsend, run, mqttDie Passphrase des Schlüssels oder der PKCS#12-Datei, die mit --cert oder --key angegeben wird.
ECHOLOT_MQTT_PASSWORDmqttDas Passwort für den Broker.
ECHOLOT_MCP_TOKENmcp serve --httpDas Bearer-Token, das Clients senden; sonst ein zufälliges.
ECHOLOT_WEBHOOK_TOKENflow serveDas Token, das Aufrufer des Webhooks senden; sonst ein zufälliges.
ECHOLOT_BROWSERmcp sign-inDer Befehl, der die Anmeldeseite statt im Standardbrowser öffnet.
ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEYagentDer API-Schlüssel des Modellanbieters.
NO_COLORrunEinfache Ausgabe in der Konsole.

Ausgabe und Exit-Codes

Ergebnisse gehen in die Standardausgabe: der Body einer Antwort, ein Bericht, die Zeilen, die ein Abonnement ausgibt. Fortschritt, Warnungen, Testergebnisse und Zeiten gehen in die Standardfehlerausgabe, sodass du die Ausgabe weiterreichen kannst:

echolot send https://demo.echolot.dev/v1/products/TNT-MH-2P | jq .name
Exit-CodeBedeutung
0Alles hat funktioniert, und jede Prüfung bestand.
1Etwas ist fehlgeschlagen: keine Antwort, eine fehlgeschlagene Prüfung oder ein fehlgeschlagener Test, gefundene Probleme (validate, spec lint), Breaking Changes (graphql diff), ein anderer gRPC-Status als OK, eine abgelehnte MQTT-Verbindung, ein Agent, der nicht fertig wurde.
22Nur echolot send: Der Status der Antwort war 400 oder höher, wie bei curl --fail.
64Die Befehlszeile selbst war falsch: eine unbekannte Option, eine fehlende Datei, eine Umgebung, die es nicht gibt. Der Grund wird ausgegeben.

Weiter

Auf dieser Seite