00:00:00Das ist Valor, ein Open-Source-Tool zur Verwaltung von Umgebungsvariablen, das dafĂŒr sorgt,
00:00:04dass ihr nie wieder Geheimnisse im Klartext auf der Festplatte speichern mĂŒsst. Es funktioniert,
00:00:10indem es Umgebungsvariablen lokal oder ĂŒber Passwortmanager wie 1Password, Bitwarden, AWS und viele
00:00:16weitere auflöst, ein typsicheres Schema verwendet und eure Secrets zur Laufzeit in die Anwendung
00:00:21einschleust. So ist eure .env-Datei sicher fĂŒr KI und kann sogar öffentlich auf GitHub gepostet werden.
00:00:27Aber wie funktioniert das eigentlich und was hat es mit dieser komischen Syntax auf sich? Abonniert den Kanal und los geht's.
00:00:31Wie oft habt ihr schon einen neuen Entwicklerjob angefangen, Zugriff auf den Code bekommen,
00:00:39ihn lokal gestartet und festgestellt, dass er nicht lÀuft? Nur um dann zu merken, dass eine .env-Datei fehlt,
00:00:45die man erst von einem Kollegen oder aus einem verschlĂŒsselten Speicher besorgen muss.
00:00:50Diesen Prozess wiederholt man jedes Mal, wenn die .env-Datei aktualisiert wird. Genau das löst Valor.
00:00:56Zudem verhindert es, dass KI-Agenten per Prompt-Injection auf Geheimnisse zugreifen, die sie nicht sehen dĂŒrfen.
00:01:02Schauen wir uns die Funktionsweise an. Hier ist ein kleines Projekt, an dem ich arbeite.
00:01:06Es generiert Artikel aus Twitter-Videos mit OpenAIs Whisper fĂŒr die Transkription und Claude fĂŒr den Text.
00:01:12Wir fangen simpel an und nutzen Valor, um die Portnummer zu Àndern. Valor ist bereits installiert,
00:01:17daher sollten wir eine .env-Schema-Datei haben, die aktuell noch leer ist. Sie wird unsere
00:01:23einzige Quelle der Wahrheit fĂŒr alle Variablen sein und kann öffentlich auf GitHub landen.
00:01:28Zuerst fĂŒgen wir eine einfache Variable âappenvâ hinzu und setzen den Wert auf âtestingâ.
00:01:33Jetzt kann ich in einem neuen Tab âvarlock loadâ ausfĂŒhren, um unser Schema zu validieren.
00:01:39Hier sehen wir, dass die Umgebungsvariable gelesen und als âsensitivâ markiert wurde.
00:01:43Das liegt daran, dass alle Variablen in Varlock standardmĂ€Ăig als sensibel eingestuft werden.
00:01:48In dieser Datei fĂŒge ich nun unseren ersten Deklarator hinzu: einen Root-Deklarator.
00:01:52Er betrifft alle Variablen in der Datei. Wir setzen âdefault sensitiveâ auf âfalseâ.
00:01:56Beachtet das #-Zeichen davor. Root-Variablen werden normalerweise durch eine Trennlinie abgesetzt.
00:02:02Die gesamte Datei nutzt eine domÀnenspezifische Sprache namens mspec, eine Open-Spec des Varlock-Teams.
00:02:08Wenn ich das Schema jetzt erneut validiere, können wir den Wert der Variable tatsÀchlich sehen,
00:02:14da sie nicht mehr als sensibel markiert ist. Aber wir können noch mehr coole Dinge tun,
00:02:19wie zum Beispiel einen Typ festlegen. Ich gebe ihr den Typ âstringâ.
00:02:24Es funktioniert weiterhin, aber wenn ich es in ânumberâ Ă€ndere, erhalten wir eine Fehlermeldung,
00:02:29da ein String erwartet wurde. Ich kann auch den ârequiredâ-Deklarator hinzufĂŒgen
00:02:33und den Text entfernen. Wenn wir die Datei nun prĂŒfen, gibt es einen Fehler, da ein Wert fehlt.
00:02:39Diese werden Item-Deklaratoren genannt. Eine vollstÀndige Liste findet ihr in der Varlock-Dokumentation,
00:02:44genau wie alle verfĂŒgbaren Typen. FĂŒgen wir nun eine weitere Umgebungsvariable hinzu.
00:02:50Diese nennen wir âportâ mit dem Wert 3002. Ich weise ihr den Typ âportâ zu.
00:02:55Oben setze ich dies wieder auf âsensitiveâ und Ă€ndere den anderen Typ zurĂŒck auf âstringâ.
00:03:01Jetzt wurden beide Variablen erkannt, aber der Wert ist versteckt, da er sensibel ist.
00:03:05Aber wie kriegen wir diese Werte nun in unsere Anwendung? Wir mĂŒssen lediglich
00:03:10âvarlock runâ ausfĂŒhren, gefolgt von dem Skript, das die App startet.
00:03:15In der package.json sehen wir, dass wir den âviteâ-Befehl fĂŒr das Frontend brauchen.
00:03:21Wenn ich nun âvarlock run viteâ eingebe, wird die Konfiguration geladen, aufgelöst
00:03:27und in unsere Umgebungsvariablen injiziert. Genau das ist passiert: Der Port ist jetzt 3002.
00:03:33Das funktioniert im Code, weil dort zuerst die von Varlock injizierte Variable geprĂŒft wird.
00:03:38Es muss nicht unbedingt JavaScript sein. Varlock funktioniert mit jedem Projekt, egal ob
00:03:43Python, Go oder Rust. Alles sollte wie erwartet laufen. Falls ihr es nicht ĂŒber npm
00:03:48installieren wollt, gibt es auch eine Varlock-CLI. Das klappt fĂŒr lokale Variablen wunderbar,
00:03:54aber schauen wir uns nun an, wie man sie stattdessen aus 1Password abruft,
00:03:59anstatt lokale Shell-Variablen fĂŒr Dinge wie den OpenAI- oder Anthropic-API-Key zu nutzen.
00:04:05Ich persönlich nutze 1Password eigentlich nicht, sondern habe nur ein Probe-Abo fĂŒr dieses Video.
00:04:11Ich habe einen neuen Tresor erstellt â das ist wichtig, ich erklĂ€re spĂ€ter warum.
00:04:16Darin befinden sich zwei EintrÀge: ein OpenAI-API-Key und ein Anthropic-API-Key.
00:04:24Da sie komplett erfunden sind, macht es nichts, wenn ich sie zeige. Das hier ist kein echter Key.
00:04:30Um diese Werte in unser Varlock-Schema zu bekommen, installieren wir zuerst das 1Password-Plugin.
00:04:36Plugins in Varlock können eigene Root- und Item-Deklaratoren mitbringen. Ihr werdet hier also
00:04:42neue sehen, die nicht in der Standard-Doku stehen, wie etwa diesen âinit 1passwordâ-Deklarator.
00:04:49Nach der Installation laden wir den entsprechenden Root-Deklarator und können
00:04:55den Befehl ausfĂŒhren. Alles, was ich jetzt brauche, ist das Token, das ich hier lade.
00:05:01Um dieses Token zu erhalten, mĂŒsst ihr es mit einem neuen Tresor verbinden,
00:05:06nicht mit eurem persönlichen. Ihr findet es unter âDeveloper Service Accountâ.
00:05:11Da ich mein Token und den Account nach dem Video lösche, zeige ich es offen her.
00:05:15Ich gebe ihm den Typ âonepassword service tokenâ, welcher sensibel ist und vom Plugin kommt.
00:05:21Vielleicht fÀllt euch auf, dass die Datei kein Syntax-Highlighting hat. Das liegt daran,
00:05:26dass das Varlock-Team zwar ein VS-Code-Plugin erstellt hat, aber bisher noch keines fĂŒr
00:05:32Neovim existiert. Vielleicht erstelle ich selbst eins oder lasse es Claude machen.
00:05:37Nun erstelle ich eine neue Umgebungsvariable namens âopenai_api_key_idâ.
00:05:43Um diese von 1Password zu holen, rufe ich die 1Password-Funktion auf, gefolgt von
00:05:49diesem Protokoll. Dann brauche ich den Namen meines Tresors (âtestâ), den Namen
00:05:55des Eintrags (âopenaiâ) und den Feldnamen. Wie wir hier sehen, lautet dieser âcredentialâ.
00:06:02Ich setze auch das auf âsensitiveâ. Wenn wir nun âvarlock loadâ ausfĂŒhren, dauert es kurz,
00:06:08bis der OpenAI-Key von 1Password geholt wird. Dass es klappt, können wir prĂŒfen, indem wir
00:06:14den Wert hier zum Beispiel auf â1234â Ă€ndern. Bei erneutem Laden werden die korrekten Werte geholt.
00:06:20Damit ist unser Schema bereit fĂŒr den Commit. Aber ich weiĂ, was ihr denkt:
00:06:25Ist dieses 1Password-Token sicher? Ehrlich gesagt, wenn ihr lokal entwickelt
00:06:31und 1Password nutzt, habt ihr vermutlich die Desktop-App oder die CLI installiert.
00:06:38In diesem Fall könnt ihr 1Password einfach per Fingerabdruck entsperren statt mit einem Token.
00:06:43Varlock unterstĂŒtzt auch andere Plugins fĂŒr AWS, GCP und sogar Bitwarden,
00:06:52sowie Integrationen fĂŒr Vite, Next.js und Cloudflare Workers. Es gibt noch so viele
00:06:57weitere Features, die ich heute nicht alle zeigen konnte, wie das Generieren von TypeScript-Typen,
00:07:03das Importieren von Variablen aus anderen Dateien oder das Zensieren sensibler Ausgaben
00:07:08in Logs und HTTP-Antworten â ein sehr schönes Detail. Es gibt sogar einen MCP-Server,
00:07:15der eurem KI-Agenten hilft, das Schema automatisch zu erstellen, und eine GitHub Action
00:07:21fĂŒr eure CI/CD-Pipeline. Aber so cool Varlock auch ist, es gibt ein paar Nachteile.
00:07:27Man kann es zum Beispiel nicht offline nutzen. Wer am Flughafen codet, muss also wieder
00:07:32auf fest im Code stehende Variablen zurĂŒckgreifen â aber wer programmiert schon ohne Internet?
00:07:37Apropos Internet: Es gibt eine leichte Verzögerung beim Abrufen der Passwörter,
00:07:41sodass der Start eurer Skripte einen Moment lĂ€nger dauert. AuĂerdem fehlen noch
00:07:46einige Anbieter wie Dashlane. Ich hatte auch einen seltsamen Bug: Wenn ein Name
00:07:53im Schema identisch mit einer lokalen Shell-Variable war, wurde der lokale Wert bevorzugt.
00:07:59Aber Varlock wird aktiv weiterentwickelt und ich bin sicher, dass viele dieser Punkte
00:08:05bald behoben werden. Trotzdem ist das Produkt schon jetzt unglaublich nĂŒtzlich fĂŒr mich.
00:08:10Ich werde es wohl fĂŒr alle meine kĂŒnftigen Nebenprojekte verwenden und vielleicht sogar
00:08:16meine lokalen Shell-Dateien durch Varlock-Schemata ersetzen, falls das möglich ist.
00:08:21Das wÀre super, denn ich möchte nicht, dass irgendwelche Agenten meine Infos abgreifen.
00:08:26Bis zum nÀchsten Mal.