00:00:00यह Valor है, जो एनवायरनमेंट वेरिएबल्स को मैनेज करने के लिए एक ओपन सोर्स टूल है, जो यह सुनिश्चित करता है कि
00:00:04आपको फिर कभी डिस्क पर प्लेन टेक्स्ट सीक्रेट्स स्टोर न करने पड़ें। यह एनवायरनमेंट वेरिएबल्स को
00:00:10लोकली या 1Password, Bitwarden, AWS जैसे पासवर्ड मैनेजर्स के जरिए रिजॉल्व करके काम करता है।
00:00:16यह एक टाइप-सेफ स्कीमा का उपयोग करता है और रनटाइम पर आपके सीक्रेट्स को ऐप में इंजेक्ट करता है, जिससे आपकी .env
00:00:21फ़ाइल AI के लिए सुरक्षित हो जाती है और इसे GitHub पर सार्वजनिक रूप से भी डाला जा सकता है। लेकिन यह असल में काम कैसे करता है
00:00:27और इस अजीब सिंटैक्स का क्या मतलब है? सब्सक्राइब बटन दबाएं और चलिए शुरू करते हैं।
00:00:31कितनी बार ऐसा हुआ है कि आपने कोई नया देव रोल शुरू किया, कोड का एक्सेस मिला, उसे लोकली रन किया
00:00:39और वह काम नहीं करता, सिर्फ इसलिए क्योंकि आपके पास .env फ़ाइल नहीं है, जो आपको किसी दूसरे डेवलपर से
00:00:45या किसी एनक्रिप्टेड स्टोरेज से लेनी पड़ती है? और आपको यह प्रोसेस बार-बार दोहराना पड़ता है
00:00:50जब भी वह .env फ़ाइल अपडेट होती है। Valor इसी समस्या को हल करने के लिए बनाया गया है और यह
00:00:56प्रॉम्प्ट-इंजेक्टेड AI एजेंट्स द्वारा गलत सीक्रेट्स हासिल करने की समस्या को भी रोकता है। आइए देखें यह कैसे काम करता है।
00:01:02तो यहाँ एक छोटा प्रोजेक्ट है जिस पर मैं काम कर रहा हूँ, जो ट्विटर वीडियो से आर्टिकल जनरेट करता है,
00:01:06इसमें वीडियो ट्रांसक्राइब करने के लिए OpenAI के Whisper और आर्टिकल लिखने के लिए Claude का इस्तेमाल किया गया है।
00:01:12लेकिन हम कुछ आसान चीज़ से शुरुआत करेंगे और पोर्ट नंबर बदलने के लिए Valor का उपयोग करेंगे। Valor
00:01:17इंस्टॉल होने के बाद, हमारे पास एक .env स्कीमा फ़ाइल होनी चाहिए जो अभी खाली है। यह हमारे सभी
00:01:23एनवायरनमेंट वेरिएबल्स के लिए एकमात्र विश्वसनीय स्रोत होगी और इसे पब्लिक GitHub रेपो में कमिट किया जा सकेगा।
00:01:28हम एक साधारण 'appenv' एनवायरनमेंट वेरिएबल जोड़कर शुरुआत करेंगे और इसकी वैल्यू 'testing' सेट करेंगे।
00:01:33अब मैं एक नया टैब बनाकर 'varlock load' रन कर सकता हूँ जो हमारे स्कीमा को वैलिडेट करेगा। अब
00:01:39हम यहाँ देख सकते हैं कि इसने हमारे वेरिएबल को पढ़ लिया है और उसे 'sensitive' सेट कर दिया है।
00:01:43ऐसा इसलिए है क्योंकि Varlock में सभी एनवायरनमेंट वेरिएबल्स डिफॉल्ट रूप से सेंसिटिव होते हैं, लेकिन हम इसे बदल सकते हैं।
00:01:48इस फ़ाइल में मैं अपना पहला डेकोरेटर जोड़ूँगा, जो एक 'root decorator' होगा
00:01:52क्योंकि यह फ़ाइल के सभी एनवायरनमेंट वेरिएबल्स को प्रभावित करेगा, और हम 'default sensitive' को फॉल्स सेट कर देंगे।
00:01:56ध्यान दें कि यहाँ सिंटैक्स के आगे एक हैशटैग (#) है और आमतौर पर रूट वेरिएबल्स को डिवाइडर से अलग किया जाता है।
00:02:02अब, यह पूरी फ़ाइल 'mspec' नामक डोमेन स्पेसिफिक लैंग्वेज का उपयोग करती है,
00:02:08जो Varlock टीम द्वारा लिखी गई एक ओपन स्पेक है। अब अगर मैं फिर से स्कीमा वैलिडेट करता हूँ, तो हम
00:02:14वेरिएबल की वैल्यू देख सकते हैं क्योंकि अब यह सेंसिटिव नहीं है। लेकिन हम अपनी स्कीमा फ़ाइल में
00:02:19कुछ और भी बेहतरीन चीज़ें कर सकते हैं जैसे वेरिएबल को एक 'टाइप' देना। तो मैं
00:02:24इसे 'string' टाइप दूँगा, जिसका मतलब है कि सब कुछ ठीक काम करेगा, लेकिन अगर मैं इसे बदलकर
00:02:29नंबर कर दूँ, तो हमें एरर दिखेगा क्योंकि यह स्ट्रिंग की उम्मीद कर रहा है। मैं इसे
00:02:33'required' डेकोरेटर भी दे सकता हूँ और फिर इस टेक्स्ट को हटा सकता हूँ, जिसका मतलब है कि अगर हम फ़ाइल चेक करेंगे तो एरर आएगा
00:02:39क्योंकि यह एक वैल्यू की उम्मीद कर रहा है। इन्हें 'item decorators' कहा जाता है और आप इनकी पूरी लिस्ट
00:02:44Varlock डॉक्यूमेंटेशन में देख सकते हैं, साथ ही सभी उपलब्ध टाइप्स की लिस्ट भी। चलिए अब एक और
00:02:50एनवायरनमेंट वेरिएबल जोड़ते हैं और इस बार हम इसे 3002 वैल्यू के साथ 'port' नाम देंगे। मैं इसे
00:02:55'port' टाइप दे सकता हूँ और मैं यहाँ इसे 'sensitive' सेट कर दूँगा और इसे वापस स्ट्रिंग में बदल दूँगा।
00:03:01अब इसने हमारे दोनों वेरिएबल्स को चुन लिया है और इसे छुपा दिया है क्योंकि यह सेंसिटिव है।
00:03:05लेकिन अब हम इन वैल्यूज को अपने एप्लिकेशन में कैसे लाएँ? हमें बस
00:03:10'varlock run' के साथ वह स्क्रिप्ट चलानी है जिससे हमारा ऐप चलता है। तो अगर मैं package.json फ़ाइल देखूँ,
00:03:15तो हम देख सकते हैं कि फ्रंटएंड चलाने के लिए हमें 'vite' कमांड चलानी होगी। तो अब अगर मैं 'varlock run' के बाद
00:03:21'vite' कमांड चलाता हूँ, तो इसे कॉन्फ़िग लोड करना चाहिए, उसे रिजॉल्व करना चाहिए और फिर हमारे एनवायरनमेंट वेरिएबल्स
00:03:27में इंजेक्ट कर देना चाहिए, जो इसने बिल्कुल सही किया है क्योंकि अब पोर्ट 3002 है, जो हमारे कोड में काम करता है
00:03:33क्योंकि यह पहले पोर्ट एनवायरनमेंट वेरिएबल को चेक करता है जो फिलहाल Varlock द्वारा इंजेक्ट किया जा रहा है।
00:03:38यह स्क्रिप्ट सिर्फ एक जावास्क्रिप्ट फ़ाइल होने की ज़रूरत नहीं है क्योंकि Varlock किसी भी प्रोजेक्ट के लिए काम करता है,
00:03:43चाहे वह Python, Go, Rust हो, सब कुछ उम्मीद के मुताबिक काम करना चाहिए। और अगर आप इसे
00:03:48npm से इंस्टॉल नहीं करना चाहते, तो एक Varlock CLI भी है जो बिल्कुल वैसे ही काम करता है। यह सब
00:03:54लोकल वेरिएबल्स के लिए तो ठीक है, लेकिन अब आइए इन्हें अपने शेल लोकल वेरिएबल्स के बजाय
00:03:591Password से फेच करने का प्रोसेस देखते हैं, जैसे कि यह OpenAI और Anthropic API की।
00:04:05अब, मैं निजी तौर पर 1Password का उपयोग नहीं करता, मैंने सिर्फ यह वीडियो बनाने के लिए ट्रायल साइनअप किया है, लेकिन जैसा कि
00:04:11आप देख सकते हैं मैंने एक नया वॉल्ट बनाया है, जो बहुत ज़रूरी है (मैं बाद में बताऊंगा क्यों), और इस
00:04:16वॉल्ट के अंदर हमारे पास दो आइटम हैं, एक OpenAI API की और एक Anthropic API की, जिन्हें
00:04:24दिखाने में मुझे कोई परेशानी नहीं है क्योंकि ये पूरी तरह फर्जी हैं। तो अगर मैं इसे रिवील करूँ, तो यह असली की नहीं है। अब,
00:04:30इन वैल्यूज को अपने Varlock स्कीमा में लाने के लिए हमें सबसे पहले 1Password प्लगइन इंस्टॉल करना होगा।
00:04:36ध्यान दें कि Varlock प्लगइन्स अपने खुद के रूट और आइटम डेकोरेटर्स जोड़ सकते हैं, तो आप यहाँ कुछ नए देख सकते हैं
00:04:42जो डॉक्यूमेंटेशन में नहीं हैं, जैसे कि यह 'init 1password' डेकोरेटर। तो
00:04:49'varlock-1password' इंस्टॉल करने के बाद हम प्लगइन रूट डेकोरेटर लोड कर सकते हैं जिसमें वह प्लगइन है
00:04:55और हम 'init 1password' डेकोरेटर चला सकते हैं। फिलहाल मुझे बस टोकन की ज़रूरत है
00:05:01जिसे मैं यहाँ से लोड कर सकता हूँ। अब, यह टोकन पाने के लिए आपको इसे एक नए वॉल्ट से जोड़ना होगा,
00:05:06अपने पर्सनल वॉल्ट से नहीं। आप इसे 'developer service account' में जाकर टोकन बनाने के स्टेप्स फॉलो करके पा सकते हैं।
00:05:11चूँकि मैं इस वीडियो के बाद अपना टोकन और अकाउंट डिलीट कर दूँगा,
00:05:15तो मुझे इसे दिखाने में कोई दिक्कत नहीं है। मैं इसे 'one password service token' टाइप दूँगा जो कि
00:05:21सेंसिटिव सेट है और यह टाइप इसी प्लगइन से आता है। आपने यह भी गौर किया होगा कि इस फ़ाइल में
00:05:26कोई सिंटैक्स हाइलाइटिंग नहीं है, और ऐसा इसलिए है क्योंकि Varlock टीम ने एक VS Code प्लगइन बनाया है
00:05:32जो इसे सपोर्ट करता है, लेकिन फिलहाल Neovim के लिए कोई नहीं है। शायद मैं भविष्य में एक बनाऊँगा
00:05:37या सिर्फ Claude से बनवा लूँगा। अब मैं एक नया एनवायरनमेंट वेरिएबल बनाऊँगा जिसे 'openai api key id' नाम दूँगा,
00:05:43और फिर इसे 1Password से पाने के लिए मुझे '1password' फंक्शन चलाना होगा
00:05:49जिसके बाद यह प्रोटोकॉल होगा, और फिर मुझे अपने वॉल्ट का नाम जोड़ना होगा जो 'test' है, फिर आइटम का नाम
00:05:55जो 'openai' है, और फिर फील्ड का नाम, जिसे हम यहाँ दोबारा चेक कर सकते हैं कि यह 'credential' है।
00:06:02मैं इसे भी सेंसिटिव सेट कर सकता हूँ और अब अगर हम 'varlock load' रन करें, तो 1Password से मेरी
00:06:08OpenAI API की लाने में कुछ सेकंड लगते हैं। हम यहाँ वैल्यू को बदलकर भी चेक कर सकते हैं कि यह काम कर रहा है या नहीं,
00:06:14जैसे '1234' और अगर हम 'varlock load' दोबारा चलाएँ, तो यह सही वैल्यू ले आता है।
00:06:20और बस, हमारी .env स्कीमा फ़ाइल कमिट करने के लिए तैयार होनी चाहिए। लेकिन मैं जानता हूँ कि आप क्या सोच रहे हैं,
00:06:25इस 1Password टोकन का क्या? क्या वह सुरक्षित है? सच कहूँ तो अगर आप
00:06:31लोकली डेवलप कर रहे हैं और आपके पास 1Password है, तो हो सकता है आपके पास डेस्कटॉप ऐप हो या आप CLI इस्तेमाल कर रहे हों।
00:06:38उस स्थिति में, आप 1Password टोकन के बजाय अपने फिंगरप्रिंट से इसे अनलॉक करने के लिए इस कॉन्फ़िगरेशन का उपयोग कर सकते हैं।
00:06:43लेकिन Varlock अन्य प्लगइन्स को भी सपोर्ट करता है जैसे AWS, GCP और यहाँ तक कि Bitwarden के लिए भी।
00:06:52इसके साथ ही Vite, Next.js और Cloudflare Workers जैसी कई अन्य इंटीग्रेशन भी उपलब्ध हैं।
00:06:57ऐसी और भी कई फीचर्स हैं जिन्हें मैं कवर नहीं कर पाया, जैसे आपके स्कीमा से टाइपस्क्रिप्ट टाइप्स जनरेट करना,
00:07:03दूसरी फ़ाइलों से एनवायरनमेंट वेरिएबल्स इम्पोर्ट करना और यहाँ तक कि लॉग्स और बाहर जाने वाले HTTP रिस्पॉन्स
00:07:08से सेंसिटिव आउटपुट को हटाना, जो कि एक बहुत ही अच्छा फीचर है। इसमें आपके कोडिंग एजेंट की मदद के लिए
00:07:15एक MCP सर्वर भी है ताकि वह अपने आप .env स्कीमा सेट कर सके और CICD प्रोसेस में वेरिएबल्स लोड
00:07:21करने के लिए GitHub Action भी है। लेकिन Varlock जितना कूल है,
00:07:27इसमें कुछ कमियाँ भी हैं, जैसे कि आप इसे ऑफलाइन इस्तेमाल नहीं कर सकते। तो अगर आप एयरपोर्ट पर कोडिंग कर रहे हैं,
00:07:32तो आपको हार्ड-कोडेड एनवायरनमेंट वेरिएबल्स का इस्तेमाल करना होगा, लेकिन ईमानदारी से कहें तो बिना इंटरनेट के कोडिंग करता ही कौन है?
00:07:37इंटरनेट की बात करें तो, किसी दूसरे प्रोवाइडर से पासवर्ड फेच करने में थोड़ा डिले होता है,
00:07:41इसलिए आपकी स्क्रिप्ट शुरू होने में थोड़ा ज़्यादा समय लेगी। इसके अलावा
00:07:46Dashlane जैसे प्रोवाइडर्स की कमी है और मुझे एक अजीब बग मिला जहाँ अगर मैं अपनी स्कीमा फ़ाइल में
00:07:53वही नाम इस्तेमाल करता हूँ जो मेरे लोकल शेल के वेरिएबल का है, तो इसने 1Password के बजाय लोकल वेरिएबल का इस्तेमाल किया।
00:07:59लेकिन Varlock पर सक्रिय रूप से काम चल रहा है और मुझे यकीन है कि भविष्य में
00:08:05इनमें से कई चीज़ों को ठीक कर दिया जाएगा। फिर भी, यह प्रोडक्ट
00:08:10मौजूदा रूप में भी मेरे लिए अविश्वसनीय रूप से उपयोगी है और मुझे लगता है कि मैं आगे अपने सभी
00:08:16साइड प्रोजेक्ट्स के लिए इसका इस्तेमाल करूँगा और शायद अपनी लोकल शेल फ़ाइलों को Varlock स्कीमा फ़ाइलों से बदल दूँ।
00:08:21अगर ऐसा करने का कोई तरीका है तो मुझे उम्मीद है कि होगा, क्योंकि मैं नहीं चाहता कि कोई भी एजेंट
00:08:26मेरी जानकारी चोरी करे।