IN DIESEM ARTIKEL9 ABSCHNITTE
Die Integration einer Zahlungsplattform beginnt meist gleich: im Dashboard den Bereich mit den Schlüsseln suchen, eine lange Zeichenkette in eine .env kopieren, die Route schreiben, die die Webhooks empfängt, deren Signatur prüfen, einen Tunnel öffnen, um sie auf Ihrem Rechner zu testen, und alles wiederholen, sobald Sie den Computer wechseln. Bei Cord sollte das ein einziger Befehl sein:
npx @flouviahq/cli
Gestern Abend haben wir Version 2.1 von @flouviahq/cli veröffentlicht. Dieser Artikel zeigt Bildschirm für Bildschirm, was die CLI tut. Die Bilder sind originalgetreue Nachbildungen des echten Assistenten: dieselben Texte, Farben und Schritte, die Sie in Ihrem Terminal sehen werden.
Ein Assistent im Vollbild
Ohne Befehl öffnet die CLI einen Assistenten, der das ganze Terminal belegt. Bevor er etwas anfasst, liest er Ihr Projekt: Er erkennt Next.js (App Router und Pages Router), Astro, Express, Laravel, Django, Flask und FastAPI und sagt Ihnen, was er integrieren wird. Im Menü können Sie das Framework ändern, die genaue Liste der geplanten Schritte ansehen oder Daten und Datenschutz öffnen, bevor Sie fortfahren.
Er braucht ein Terminal von mindestens 80 mal 28 Zeichen; mit --simple öffnet sich die Version ohne Vollbild. Er spricht Spanisch, Englisch, Portugiesisch, Französisch und Deutsch, je nach Ihrem System oder der Sprache, die Sie mit CORD_LANG festlegen. Und alles, was der Assistent tut, steht weiterhin als eigenständige Befehle für Skripte und CI zur Verfügung, jeder mit --json.
Anmeldung im Browser, ohne Schlüssel zu kopieren
Um Ihr Konto zu verbinden, öffnet das Terminal Ihren Browser auf der Seite zum Autorisieren. Dort wählen Sie die Organisation, sehen, dass der Assistent nur im Testmodus arbeitet, und legen fest, was der Schlüssel Ihres Projekts darf: fünf Ressourcen (Produkte, Kunden, Angebote, Webhooks und Elements), jeweils ohne Zugriff, mit Lese- oder mit Schreibzugriff. Empfohlen ist das Minimum, das die Dateien brauchen, die er anlegen wird: Ihren Katalog lesen sowie Angebote und die Konfiguration von Elements schreiben.
Sie klicken auf Assistenten autorisieren, Cord bestätigt Ihre Identität, und das Terminal verbindet sich selbstständig. Kein Code zum Vergleichen, kein Schlüssel zum Einfügen.
Wie es intern funktioniert
Die Rückkehr zum Terminal folgt dem Muster für native Apps mit OAuth (RFC 8252) plus PKCE (RFC 7636). Das Terminal öffnet einen zufälligen Port auf 127.0.0.1, erzeugt einen code_verifier, der Ihren Rechner nie verlässt, und schickt Cord nur dessen S256-Hash, zusammen mit einem state. Wenn Sie autorisieren, leitet Cord den Browser mit einem Einmalcode zurück zu 127.0.0.1/callback, und das Terminal löst ihn mit dem Verifier ein.
Einige Entscheidungen, die nicht offensichtlich sind:
- In der Datenbank liegen nur Hashes. Vom Device Code und vom Code aus dem Browser speichert Cord den sha256-Hash, nie den Wert.
- Die Rückkehr akzeptiert nur Ihren eigenen Rechner. Die Adresse muss
127.0.0.1oderlocalhostmit einem Port und dem Pfad/callbacksein; jede andere wird schon beim Anfordern der Anmeldung abgelehnt. - Die Schlüssel werden genau einmal übergeben. Sie liegen verschlüsselt, bis das Terminal sie abholt, und werden in diesem Moment gelöscht.
- Zwei Schlüssel mit unterschiedlichen Aufgaben. Der Schlüssel der CLI ist ein eingeschränkter Testschlüssel, läuft nach 90 Tagen ab und nutzt nur Simulatoren, Ereignisse, Konfigurationsvorschläge und den KI-Assistenten; er zählt nicht zum Schlüssellimit Ihres Tarifs. Der Projektschlüssel trägt die Berechtigungen, die Sie gewählt haben, zählt als ein Schlüssel Ihres Tarifs und wird in Ihrer
.env.localgespeichert.
Über SSH, in der CI, mit --no-browser oder mit --json gibt es keinen Browser, zu dem es zurückgehen könnte: Dort nutzt die CLI den Code zum Vergleichen, den Device Flow, den wir in cord login ohne kopierte Schlüssel beschrieben haben.
Der Assistent arbeitet vor Ihren Augen
Während er integriert, zeigt der Bildschirm jede Aufgabe mit ihrem Fortschritt, die laufende Aktion und vier Tabs: Status, Protokoll (jede Datei, die er liest oder schreibt, und jeder Befehl, den er ausführt), Neuigkeiten (das Neueste von Cord) und Visualisierung.
In einem Next.js-Projekt mit App Router geht der Assistent so vor:
- Er installiert
@flouviahq/nodeund@flouviahq/elementsmit Ihrem Paketmanager (npm, pnpm, yarn oder bun, je nach Ihrem Lockfile). - Er legt
app/api/webhooks/cord/route.tsan, das die Signatur jedes Webhooks anhand des Rohinhalts prüft. - Er legt
app/api/cord/[...path]/route.tsan, den Proxy, über den Cord Elements mit Cord spricht, ohne Ihren Schlüssel preiszugeben. - Er speichert den Projektschlüssel in
.env.local. - Wenn Sie ihm Ihre Website und Ihre Tätigkeit genannt haben, fordert er bei Cord einen Konfigurationsvorschlag an (Produkte, Steuern und Vorlagen), den Sie im Browser freigeben.
- Er schreibt
CORD-INTEGRACION.mdmit den Änderungen.
Drei Regeln, die er nie bricht: Er überschreibt keine vorhandene Datei, er schreibt Schlüssel nur in eine Umgebungsdatei, die git ignoriert, und er ändert die übrigen Zeilen Ihrer .env nicht.
Die KI, die integriert – und ihre Grenzen
Version 2.1 bringt einen Agenten, der Ihr Projekt liest und die Integration daran anpasst: Er platziert die Routen in Ihrer Struktur, bindet den Angebotsrechner in Ihre Seite ein und führt danach Ihren Build und Ihre Tests aus. Das Denken findet bei Cord statt, aber seine Werkzeuge laufen auf Ihrem Rechner und sind auf den Projektordner beschränkt:
- Er öffnet nie eine
.env*, Ihren Ordner.gitodernode_modules. Ein Pfad, der das Projekt verlässt, auch über einen symbolischen Link, schlägt fehl. - Er führt nur Befehle aus einer Liste aus:
@flouviahq/*-Pakete mit npm, pnpm, yarn oder bun installieren, Ihre Skripte für Build, Lint, Typecheck und Tests sowienpx tsc --noEmit. Jeder andere Befehl oder einer mit Shell-Zeichen wird abgelehnt und im Protokoll festgehalten.
Noch schaltet Cord ihn nicht ein: Der Server antwortet, dass der Assistent nicht verfügbar ist, und die CLI macht mit Vorlagen weiter, ohne dass Sie etwas tun müssen. Wir schalten ihn ein, sobald unsere Erklärung zur künstlichen Intelligenz abdeckt, dass die KI den Code der integrierenden Person liest. Dann fragt Sie der Assistent, ob er mit KI oder mit Vorlagen integrieren soll, und alles, was er ändert, wird in CORD-INTEGRACION.md festgehalten.
Verbinden Sie die Apps, die Sie bereits nutzen
Der Assistent sucht in Ihren Abhängigkeiten (package.json, composer.json oder denen von Python) nach den SDKs der Apps, die Cord anbindet: @hubspot/api-client steht für HubSpot, @shopify/shopify-api oder Hydrogen für Shopify, @slack/bolt oder @slack/web-api für Slack. Außerdem erkennt er QuickBooks Online, Xero, Google Sheets und Microsoft Teams.
Findet er eine davon, bietet er an, sie mit Cord zu verbinden. Sie drücken o, die Seite dieser Integration öffnet sich in Ihrem Browser, und sobald Sie fertig sind, hakt der Bildschirm sie selbst ab. Dafür meldet Cord nur den Status jeder Verbindung, nie deren Daten.
Der MCP von Cord in Ihren Agenten
Zum Schluss bietet der Assistent an, den MCP-Server von Cord in Claude Code (.mcp.json), Cursor (.cursor/mcp.json) und VS Code (.vscode/mcp.json) einzurichten. Er schreibt nur die Adresse des Servers und lässt andere Server, die Sie bereits haben, unangetastet: Beim ersten Mal bittet Sie Ihr Agent, in Cord mit OAuth zu autorisieren, deshalb enthält keine Datei einen Schlüssel.
Mit dem MCP ruft Ihr Agent Angebote, Kunden und Zahlungen ab und bereitet Entwürfe vor. Was etwas versendet, eine Zahlung einzieht oder einen Kunden ändert, geben Sie in Cord frei. Dasselbe gibt es als Befehle: cord mcp add, cord mcp remove und cord mcp tutorial, das erklärt, wie Sie ihn in Claude und ChatGPT als benutzerdefinierten Connector hinzufügen. Details stehen im Leitfaden zum MCP.
Signierte Webhooks auf Ihrem localhost
cord listen öffnet eine Testsitzung und leitet jedes Ereignis mit derselben Signatur an Ihren Server weiter, die auch die Produktion verwenden würde. Mit --env-file speichert der Befehl das Signatur-Secret in Ihrer .env.local, und es ist in jeder Sitzung Ihres Schlüssels dasselbe: Ein Neustart zwingt Sie nicht, es zu ändern.
npx @flouviahq/cli listen --forward-to http://localhost:3000/api/webhooks/cord --env-file .env.local
Jede Weiterleitung wird bestätigt: Antwortet Ihr Server nicht, kehrt das Ereignis in die Warteschlange zurück und wird nach 5, 15, 30 und 60 Sekunden erneut zugestellt. In einem anderen Terminal löst cord trigger jedes Ereignis aus dem Katalog aus; mit --objeto und der ID eines Testangebots oder einer Testrechnung enthält das Ereignis deren echte Daten.
Für den Alltag gibt es weitere Befehle: cord events tail und cord logs tail zeigen Ereignisse und Anfragen, sobald sie eintreffen, cord api ruft jede Route mit Ihrem Schlüssel auf, und cord simulate erzwingt das Ergebnis der nächsten steuerlichen Ausstellung oder lässt ein Angebot ablaufen. Der Leitfaden zur CLI enthält die vollständige Liste.
Am Ende eine Zusammenfassung
Der Assistent endet mit dem, was er getan hat, was noch fehlt, und den Webhooks, die bereits auf Ihrem lokalen Server empfangen werden. Was sich geändert hat, steht in CORD-INTEGRACION.md, ohne einen einzigen Wert aus Ihrer .env.
Probieren Sie es aus
Sie brauchen Node 22 oder neuer und ein Cord-Konto.
npx create-next-app@latest mein-shop --ts --app
cd mein-shop
npx @flouviahq/cli
Wenn er fertig ist, lassen Sie npm run dev in einem Terminal laufen und führen Sie in einem anderen npx @flouviahq/cli trigger quote.approved aus: Das Ereignis erreicht Ihre Route, signiert, und der Assistent zeigt Ihnen den Status 200.
Die Integration einer Zahlungsplattform beginnt meist gleich: im Dashboard den Bereich mit den Schlüsseln suchen, eine lange Zeichenkette in eine `.env` kopieren, die Route schreiben, die die Webhooks empfängt, deren Signatur prüfen, einen Tunnel öffnen, um sie auf Ihrem Rechner zu testen, und alles wiederholen, sobald Sie den Computer wechseln. Bei Cord sollte das ein einziger Befehl sein:
```bash
npx @flouviahq/cli
```
Gestern Abend haben wir Version 2.1 von `@flouviahq/cli` veröffentlicht. Dieser Artikel zeigt Bildschirm für Bildschirm, was die CLI tut. Die Bilder sind originalgetreue Nachbildungen des echten Assistenten: dieselben Texte, Farben und Schritte, die Sie in Ihrem Terminal sehen werden.
*Beim Start weiß der Assistent bereits, wo er ist: der Ordner, das Framework und die Apps, die Ihr Projekt nutzt.*
## Ein Assistent im Vollbild
Ohne Befehl öffnet die CLI einen Assistenten, der das ganze Terminal belegt. Bevor er etwas anfasst, liest er Ihr Projekt: Er erkennt Next.js (App Router und Pages Router), Astro, Express, Laravel, Django, Flask und FastAPI und sagt Ihnen, was er integrieren wird. Im Menü können Sie das Framework ändern, die genaue Liste der geplanten Schritte ansehen oder **Daten und Datenschutz** öffnen, bevor Sie fortfahren.
Er braucht ein Terminal von mindestens 80 mal 28 Zeichen; mit `--simple` öffnet sich die Version ohne Vollbild. Er spricht Spanisch, Englisch, Portugiesisch, Französisch und Deutsch, je nach Ihrem System oder der Sprache, die Sie mit `CORD_LANG` festlegen. Und alles, was der Assistent tut, steht weiterhin als eigenständige Befehle für Skripte und CI zur Verfügung, jeder mit `--json`.
## Anmeldung im Browser, ohne Schlüssel zu kopieren
Um Ihr Konto zu verbinden, öffnet das Terminal Ihren Browser auf der Seite zum Autorisieren. Dort wählen Sie die Organisation, sehen, dass der Assistent nur im Testmodus arbeitet, und legen fest, was der Schlüssel Ihres Projekts darf: fünf Ressourcen (Produkte, Kunden, Angebote, Webhooks und Elements), jeweils ohne Zugriff, mit Lese- oder mit Schreibzugriff. **Empfohlen** ist das Minimum, das die Dateien brauchen, die er anlegen wird: Ihren Katalog lesen sowie Angebote und die Konfiguration von Elements schreiben.
Sie klicken auf **Assistenten autorisieren**, Cord bestätigt Ihre Identität, und das Terminal verbindet sich selbstständig. Kein Code zum Vergleichen, kein Schlüssel zum Einfügen.
*Das Terminal wartet; im Browser wählen Sie die Organisation und die Berechtigungen des Projektschlüssels.*
### Wie es intern funktioniert
Die Rückkehr zum Terminal folgt dem Muster für native Apps mit OAuth (RFC 8252) plus PKCE (RFC 7636). Das Terminal öffnet einen zufälligen Port auf `127.0.0.1`, erzeugt einen `code_verifier`, der Ihren Rechner nie verlässt, und schickt Cord nur dessen S256-Hash, zusammen mit einem `state`. Wenn Sie autorisieren, leitet Cord den Browser mit einem Einmalcode zurück zu `127.0.0.1/callback`, und das Terminal löst ihn mit dem Verifier ein.
*Ohne den Verifier ist der Code aus dem Browser wertlos: Wer ihn abfängt, kommt damit nicht an die Schlüssel.*
Einige Entscheidungen, die nicht offensichtlich sind:
- **In der Datenbank liegen nur Hashes.** Vom Device Code und vom Code aus dem Browser speichert Cord den sha256-Hash, nie den Wert.
- **Die Rückkehr akzeptiert nur Ihren eigenen Rechner.** Die Adresse muss `127.0.0.1` oder `localhost` mit einem Port und dem Pfad `/callback` sein; jede andere wird schon beim Anfordern der Anmeldung abgelehnt.
- **Die Schlüssel werden genau einmal übergeben.** Sie liegen verschlüsselt, bis das Terminal sie abholt, und werden in diesem Moment gelöscht.
- **Zwei Schlüssel mit unterschiedlichen Aufgaben.** Der Schlüssel der CLI ist ein eingeschränkter Testschlüssel, läuft nach 90 Tagen ab und nutzt nur Simulatoren, Ereignisse, Konfigurationsvorschläge und den KI-Assistenten; er zählt nicht zum Schlüssellimit Ihres Tarifs. Der Projektschlüssel trägt die Berechtigungen, die Sie gewählt haben, zählt als ein Schlüssel Ihres Tarifs und wird in Ihrer `.env.local` gespeichert.
Über SSH, in der CI, mit `--no-browser` oder mit `--json` gibt es keinen Browser, zu dem es zurückgehen könnte: Dort nutzt die CLI den Code zum Vergleichen, den Device Flow, den wir in [cord login ohne kopierte Schlüssel](https://dev.cordhq.app/de/cli-assistent-und-browser-login) beschrieben haben.
## Der Assistent arbeitet vor Ihren Augen
Während er integriert, zeigt der Bildschirm jede Aufgabe mit ihrem Fortschritt, die laufende Aktion und vier Tabs: **Status**, **Protokoll** (jede Datei, die er liest oder schreibt, und jeder Befehl, den er ausführt), **Neuigkeiten** (das Neueste von Cord) und **Visualisierung**.
*Die Aufgaben werden abgehakt, sobald sie fertig sind; was für Ihr Projekt nicht gilt, wird übersprungen, und der Assistent sagt es.*
In einem Next.js-Projekt mit App Router geht der Assistent so vor:
1. Er installiert `@flouviahq/node` und `@flouviahq/elements` mit Ihrem Paketmanager (npm, pnpm, yarn oder bun, je nach Ihrem Lockfile).
2. Er legt `app/api/webhooks/cord/route.ts` an, das die Signatur jedes Webhooks anhand des Rohinhalts prüft.
3. Er legt `app/api/cord/[...path]/route.ts` an, den Proxy, über den Cord Elements mit Cord spricht, ohne Ihren Schlüssel preiszugeben.
4. Er speichert den Projektschlüssel in `.env.local`.
5. Wenn Sie ihm Ihre Website und Ihre Tätigkeit genannt haben, fordert er bei Cord einen Konfigurationsvorschlag an (Produkte, Steuern und Vorlagen), den Sie im Browser freigeben.
6. Er schreibt `CORD-INTEGRACION.md` mit den Änderungen.
Drei Regeln, die er nie bricht: Er überschreibt keine vorhandene Datei, er schreibt Schlüssel nur in eine Umgebungsdatei, die git ignoriert, und er ändert die übrigen Zeilen Ihrer `.env` nicht.
## Die KI, die integriert – und ihre Grenzen
Version 2.1 bringt einen Agenten, der Ihr Projekt liest und die Integration daran anpasst: Er platziert die Routen in Ihrer Struktur, bindet den Angebotsrechner in Ihre Seite ein und führt danach Ihren Build und Ihre Tests aus. Das Denken findet bei Cord statt, aber seine Werkzeuge laufen auf Ihrem Rechner und sind auf den Projektordner beschränkt:
- Er öffnet nie eine `.env*`, Ihren Ordner `.git` oder `node_modules`. Ein Pfad, der das Projekt verlässt, auch über einen symbolischen Link, schlägt fehl.
- Er führt nur Befehle aus einer Liste aus: `@flouviahq/*`-Pakete mit npm, pnpm, yarn oder bun installieren, Ihre Skripte für Build, Lint, Typecheck und Tests sowie `npx tsc --noEmit`. Jeder andere Befehl oder einer mit Shell-Zeichen wird abgelehnt und im Protokoll festgehalten.
Noch schaltet Cord ihn nicht ein: Der Server antwortet, dass der Assistent nicht verfügbar ist, und die CLI macht mit Vorlagen weiter, ohne dass Sie etwas tun müssen. Wir schalten ihn ein, sobald unsere Erklärung zur künstlichen Intelligenz abdeckt, dass die KI den Code der integrierenden Person liest. Dann fragt Sie der Assistent, ob er mit KI oder mit Vorlagen integrieren soll, und alles, was er ändert, wird in `CORD-INTEGRACION.md` festgehalten.
*Bevor es losgeht, zeigt Daten und Datenschutz, was Ihren Rechner verlässt und was ihn nie verlässt.*
## Verbinden Sie die Apps, die Sie bereits nutzen
Der Assistent sucht in Ihren Abhängigkeiten (`package.json`, `composer.json` oder denen von Python) nach den SDKs der Apps, die Cord anbindet: `@hubspot/api-client` steht für HubSpot, `@shopify/shopify-api` oder Hydrogen für Shopify, `@slack/bolt` oder `@slack/web-api` für Slack. Außerdem erkennt er QuickBooks Online, Xero, Google Sheets und Microsoft Teams.
Findet er eine davon, bietet er an, sie mit Cord zu verbinden. Sie drücken `o`, die Seite dieser Integration öffnet sich in Ihrem Browser, und sobald Sie fertig sind, hakt der Bildschirm sie selbst ab. Dafür meldet Cord nur den Status jeder Verbindung, nie deren Daten.
*HubSpot wurde im Browser verbunden; Shopify und Slack warten, bis sie an der Reihe sind.*
## Der MCP von Cord in Ihren Agenten
Zum Schluss bietet der Assistent an, den MCP-Server von Cord in Claude Code (`.mcp.json`), Cursor (`.cursor/mcp.json`) und VS Code (`.vscode/mcp.json`) einzurichten. Er schreibt nur die Adresse des Servers und lässt andere Server, die Sie bereits haben, unangetastet: Beim ersten Mal bittet Sie Ihr Agent, in Cord mit OAuth zu autorisieren, deshalb enthält keine Datei einen Schlüssel.
*Sie markieren die Agenten mit der Leertaste, und der Assistent schreibt ihre Datei.*
Mit dem MCP ruft Ihr Agent Angebote, Kunden und Zahlungen ab und bereitet Entwürfe vor. Was etwas versendet, eine Zahlung einzieht oder einen Kunden ändert, geben Sie in Cord frei. Dasselbe gibt es als Befehle: `cord mcp add`, `cord mcp remove` und `cord mcp tutorial`, das erklärt, wie Sie ihn in Claude und ChatGPT als benutzerdefinierten Connector hinzufügen. Details stehen im [Leitfaden zum MCP](https://docs.cordhq.app/de/docs/entwickler/tools/mcp).
## Signierte Webhooks auf Ihrem localhost
`cord listen` öffnet eine Testsitzung und leitet jedes Ereignis mit derselben Signatur an Ihren Server weiter, die auch die Produktion verwenden würde. Mit `--env-file` speichert der Befehl das Signatur-Secret in Ihrer `.env.local`, und es ist in jeder Sitzung Ihres Schlüssels dasselbe: Ein Neustart zwingt Sie nicht, es zu ändern.
```bash
npx @flouviahq/cli listen --forward-to http://localhost:3000/api/webhooks/cord --env-file .env.local
```
Jede Weiterleitung wird bestätigt: Antwortet Ihr Server nicht, kehrt das Ereignis in die Warteschlange zurück und wird nach 5, 15, 30 und 60 Sekunden erneut zugestellt. In einem anderen Terminal löst `cord trigger` jedes Ereignis aus dem Katalog aus; mit `--objeto` und der ID eines Testangebots oder einer Testrechnung enthält das Ereignis deren echte Daten.
*Lösen Sie in einem Terminal ein Ereignis aus und sehen Sie im anderen zu, wie es signiert an Ihrer Route ankommt.*
Für den Alltag gibt es weitere Befehle: `cord events tail` und `cord logs tail` zeigen Ereignisse und Anfragen, sobald sie eintreffen, `cord api` ruft jede Route mit Ihrem Schlüssel auf, und `cord simulate` erzwingt das Ergebnis der nächsten steuerlichen Ausstellung oder lässt ein Angebot ablaufen. Der [Leitfaden zur CLI](https://docs.cordhq.app/de/docs/entwickler/tools/cli) enthält die vollständige Liste.
## Am Ende eine Zusammenfassung
Der Assistent endet mit dem, was er getan hat, was noch fehlt, und den Webhooks, die bereits auf Ihrem lokalen Server empfangen werden. Was sich geändert hat, steht in `CORD-INTEGRACION.md`, ohne einen einzigen Wert aus Ihrer `.env`.
*Die Zusammenfassung zeigt, was fertig ist und was noch fehlt, mit dem Link, um es abzuschließen.*
## Probieren Sie es aus
Sie brauchen Node 22 oder neuer und ein Cord-Konto.
```bash
npx create-next-app@latest mein-shop --ts --app
cd mein-shop
npx @flouviahq/cli
```
Wenn er fertig ist, lassen Sie `npm run dev` in einem Terminal laufen und führen Sie in einem anderen `npx @flouviahq/cli trigger quote.approved` aus: Das Ereignis erreicht Ihre Route, signiert, und der Assistent zeigt Ihnen den Status 200.