आप एक AI एजेंट चाहते हैं जिसे आप अपने फ़ोन से मैसेज कर सकें, जो लैपटॉप बंद करने के बाद भी चलता रहे और रीबूट के बाद अपने आप वापस आ जाए? Hermes Agent यही करता है: यह एक गेटवे के रूप में चलता है जिससे आप Telegram पर बात करते हैं, और एक बार जब आप इसे सही तरीके से कॉन्फ़िगर कर लेते हैं, तो यह क्रैश या बिजली कटौती के बाद अपने आप रीस्टार्ट हो जाता है।
मैंने यही सेटअप दो बक्सों पर बनाया, एक सस्ता क्लाउड VPS और अपने डेस्क पर Mac Mini, ताकि मैं पूरी प्रक्रिया बिना कुछ छोड़े लिख सकूं। यह एक ही रास्ता है। बक्सा केवल दो जगहों पर बदलता है जहाँ आप टाइप करते हैं: इंस्टॉल कमांड, और वह हिस्सा जो गेटवे को चालू रखता है। बाकी सब कुछ समान है।
नीचे दिया गया सब कुछ मेरे अपने हार्डवेयर पर चला। Linux पथ Hetzner CX23 (x86, 2 vCPU, 4GB RAM, 40GB डिस्क) पर Ubuntu 24.04.4 LTS है - Mac पथ macOS 15 पर Mac Mini M4 है। दोनों ने Hermes Agent v0.16.0 चलाया।
अंत में आपके पास क्या होगा
- Hermes Agent इंस्टॉल, एक सामान्य उपयोगकर्ता के रूप में चल रहा है, रूट नहीं
- एक Telegram बॉट जिसे आप अपने फ़ोन से मैसेज करते हैं, केवल आपके खाते तक सीमित
- गेटवे एक प्रबंधित सेवा के रूप में चल रहा है, ताकि यह क्रैश या रीबूट के बाद वापस आ जाए
- VPS पर, एक सुरक्षित बक्सा: केवल-कुंजी ssh, कोई रूट लॉगिन नहीं, एक फ़ायरवॉल
अपना बक्सा चुनें
VPS सबसे सस्ता तरीका है। 4GB RAM और लगभग 20GB खाली डिस्क वाला कोई भी x86 बक्सा इसे चला सकता है; मेरा Hetzner CX23 है जो $7.79/माह (Hetzner US मूल्य निर्धारण, 2026-06-18) पर है। इसे किराए पर लें, और यह परिभाषा के अनुसार हमेशा चालू रहता है।
एक Mac जो आपके पास पहले से है, दूसरा विकल्प है। कोई भी Apple silicon Mac जो चालू रहता है, काम करता है, और मॉडल से परे चलाने की लागत शून्य है। व्यापार यह है कि macOS पर स्थायित्व परत अधिक पेचीदा है, जिसे मैं अंत में कवर करता हूँ।
आपको अपनी मशीन पर एक ssh कुंजी चाहिए (ssh-keygen -t ed25519 यदि आपके पास नहीं है), एक Telegram खाता, और एजेंट के लिए एक मॉडल। यह गाइड Nous Portal की ओर इशारा करता है, जो OAuth है, इसलिए फ़ाइल में रखने के लिए कोई API कुंजी नहीं है। Hermes को कम से कम 64k कॉन्टेक्स्ट वाले मॉडल की आवश्यकता है।
चरण 1: बक्सा तैयार करें
VPS पर
अपने प्रदाता पर सर्वर बनाएँ: Ubuntu 24.04, एक x86 इंस्टेंस (Arm नहीं, लागत नोट देखें), और बनाते समय अपनी ssh सार्वजनिक कुंजी पेस्ट करें।
एक नए सार्वजनिक बक्से को उस पर एजेंट रखने से पहले कुछ मिनटों की सुरक्षा की आवश्यकता होती है। रेसिपी में secure-box.sh इसे एक बार में करता है: एक apt अपग्रेड, एक 2GB स्वैपफ़ाइल, आपकी कुंजी के साथ एक गैर-रूट sudo उपयोगकर्ता, रूट लॉगिन बंद के साथ केवल-कुंजी ssh, और एक फ़ायरवॉल जो केवल ssh की अनुमति देता है। शीर्ष पर दो वेरिएबल संपादित करें, इसे कॉपी करें, रूट के रूप में चलाएँ:
1scp secure-box.sh root@<your-vps-ip>:2ssh root@<your-vps-ip> 'bash secure-box.sh'
इस Ubuntu इमेज में PasswordAuthentication को yes पर सेट किया गया था, भले ही मैंने ssh कुंजी के साथ बक्सा बनाया था। स्क्रिप्ट इसे बंद कर देती है। रूट सत्र बंद करने से पहले, एक दूसरा टर्मिनल खोलें और पुष्टि करें कि नया उपयोगकर्ता लॉग इन करता है, ताकि कोई गलती आपको बाहर न कर सके:
1ssh hermes@<your-vps-ip>
यहाँ से आप hermes हैं, रूट नहीं।
Mac पर
कोई सुरक्षा पास नहीं। यह आपके अपने नेटवर्क पर आपकी अपनी मशीन है, कोई सार्वजनिक बक्सा नहीं। यदि आपके पास नहीं है तो Homebrew इंस्टॉल करें (इंस्टॉलर अगले चरण में इसका उपयोग करता है) और आप तैयार हैं।
चरण 2: Hermes इंस्टॉल करें
इंस्टॉल एक कमांड है, दोनों बक्सों पर समान, अपने सामान्य उपयोगकर्ता के रूप में चलाएँ:
1curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash2source ~/.bashrc3hermes --version
इंस्टॉलर आपके OS का पता लगाता है और अपना स्वयं का टूलचेन (uv, Python 3.11, Node.js 22, ripgrep, ffmpeg, ब्राउज़र टूल के लिए एक Playwright Chromium) ~/.hermes में खींचता है, इसलिए यह आपके सिस्टम Python को कभी नहीं छूता है। मेरे Hetzner बक्से पर यह Python 3.11.15 पर Hermes Agent v0.16.0 लाया।
यह भारी कदम है। VPS पर इसने डिस्क को 1.2GB उपयोग से 7.8GB, लगभग 6.6GB तक ले लिया, इसका अधिकांश भाग ब्राउज़र इंजन और Node है। 20GB खाली की योजना बनाएं और चिंता करना बंद करें। बिना टर्मिनल के एक सादे ssh कमांड पर चलाएँ, इंस्टॉलर Setup wizard skipped (no terminal available) प्रिंट करता है, जो ठीक है, सेटअप अगला कदम है।
Mac पर वही कमांड चलता है, एक मोड़ के साथ: पहले Homebrew इंस्टॉल करें। Homebrew मौजूद होने पर, इंस्टॉलर बिना किसी संकेत के git और उसकी निर्भरताएँ खींचता है। इसके बिना, यह Apple के Command Line Tools पर वापस आ जाता है, जो एक macOS डायलॉग खोल सकता है जिसे आपको क्लिक करना होगा, और ssh पर डायलॉग अच्छा नहीं है (यह इंस्टॉलर की macOS शाखा में है)। उसके बाद यह ऊपर जैसा ही प्रवाह है।
चरण 3: इसे एक मॉडल की ओर इंगित करें
1hermes setup --portal
यह Nous Portal के विरुद्ध OAuth है: यह एक URL और एक कोड प्रिंट करता है, आप इसे ब्राउज़र में स्वीकृत करते हैं, और अब बक्सा फ़ाइल में बैठी बिना किसी API कुंजी के एक मॉडल से बात करता है। Nous Portal का एक मुफ़्त स्तर है, और मैंने पूरी चीज़ एक मुफ़्त मॉडल पर चलाई। यदि आप अपना स्वयं का प्रदाता लाना चाहते हैं, तो hermes model चलाएँ और एक चुनें; कुंजी तब ~/.hermes/.env में रहती है।
चरण 4: इससे बात करें
VPS पर
जैसे ही आपका ssh ड्रॉप होता है, एक अग्रभूमि सत्र इसके साथ मर जाता है। tmux सत्र को जीवित रखता है: tmux के अंदर शुरू करें, अलग करें, और यह चलता रहता है।
1sudo apt-get install -y tmux2tmux new -s hermes # फिर, अंदर: hermes
Ctrl-b फिर d के साथ अलग करें, और बाद में कहीं से भी पुनः कनेक्ट करें:
1ssh hermes@<your-vps-ip>2tmux attach -t hermes
इंटरैक्टिव एजेंट के पहले बूट में एक पल लगता है। मेरे ने प्रॉम्प्ट प्रकट होने से पहले मॉडल और कौशल लोड करने में लगभग 30 सेकंड बिताए। एक बार यह ऊपर होने के बाद, स्लैश कमांड काम करते हैं।
/goal वह है जो दिखाने लायक है: यह एक स्थायी लक्ष्य निर्धारित करता है जिस पर एजेंट बारी-बारी से काम करता है, एक जज मॉडल प्रत्येक बारी के बाद जाँच करता है कि क्या यह पूरा हो गया है।
1/goal शेल टूल का उपयोग करके इस बक्से की कुल RAM और खाली डिस्क की जाँच करें, फिर दोनों को एक पंक्ति में रिपोर्ट करें और लक्ष्य को पूर्ण चिह्नित करें
मेरे ने स्वयं शेल कमांड चलाया और लगभग 15 सेकंड में VPS कुल RAM: 3.7Gi, खाली डिस्क स्थान: 28G के साथ वापस आया। यह एजेंट अपने स्वयं के टूल का उपयोग कर रहा है।
दो विचारों को अलग रखें: tmux एक ड्रॉप किए गए ssh कनेक्शन में एक इंटरैक्टिव सत्र खुला रखता है, लेकिन रीबूट में नहीं। एक अप्रबंधित गेटवे के लिए जो रीस्टार्ट से बचता है, आप एक प्रबंधित सेवा चाहते हैं, जो चरण 6 है।
Mac पर
आप मशीन पर बैठे हैं, इसलिए आप एक टर्मिनल में hermes चला सकते हैं। यदि आप अपने लैपटॉप से ssh करते हैं तो भी tmux मदद करता है, लेकिन यहाँ यह वैकल्पिक है।
चरण 5: Telegram गेटवे
यह भाग दोनों बक्सों पर समान है। एक बॉट बनाएँ: Telegram पर @ BotFather को मैसेज करें, /newbot भेजें, और टोकन कॉपी करें। @ userinfobot से अपना संख्यात्मक उपयोगकर्ता आईडी प्राप्त करें। फिर गेटवे कॉन्फ़िगर करें:
1hermes gateway setup
Telegram चुनें, टोकन पेस्ट करें, और अनुमत उपयोगकर्ताओं को अपने संख्यात्मक आईडी पर सेट करें ताकि केवल आप ही इससे बात कर सकें। टोकन ~/.hermes/.env में, बाकी ~/.hermes/gateway.json में जाता है।
सेटअप केवल कॉन्फ़िग लिखता है। यह कुछ भी शुरू नहीं करता है, इसलिए बॉट चुप रहता है, और यह लोगों को पकड़ता है: अभी तक कोई भी Telegram को पोल नहीं कर रहा है। यह जाँचने के लिए इसे एक बार अग्रभूमि में शुरू करें कि यह कनेक्ट होता है:
1hermes gateway run
आप लॉग में देखना चाहते हैं:
1gateway.run: Connecting to telegram...2[Telegram] Connected to Telegram (polling mode)3gateway.run: ✓ telegram connected
पोलिंग मोड का मतलब है कि गेटवे Telegram तक पहुँचता है; कोई भी आपके बक्से से कनेक्ट नहीं होता है, यही कारण है कि फ़ायरवॉल को ssh से परे किसी इनबाउंड पोर्ट की आवश्यकता नहीं है। अपने बॉट को मैसेज करें; इसे जवाब देना चाहिए। फिर Ctrl-C के साथ अग्रभूमि गेटवे को रोकें, क्योंकि आप एक ही समय में एक ही टोकन को पोल करने वाली दो चीज़ें नहीं रख सकते हैं, और अगला कदम इसे एक सेवा के रूप में चलाता है।
चरण 6: इसे रीबूट से बचाएँ
यह एकमात्र स्थान है जहाँ दो बक्से अलग होते हैं।
VPS पर: systemd
hermes gateway install गेटवे को एक systemd सेवा के रूप में पंजीकृत करता है ताकि यह क्रैश पर रीस्टार्ट हो और रीबूट के बाद वापस आ जाए। इस संस्करण पर इंस्टॉलर दो [Y/n] प्रश्न पूछता है और उन्हें छोड़ने के लिए कोई फ़्लैग नहीं है। इसे एक गैर-इंटरैक्टिव ssh कमांड पर चलाएँ, जो कि बक्से को स्क्रिप्ट करते समय स्वाभाविक बात है, और इसे कोई उत्तर नहीं मिलता है, यह रुक जाता है, और कुछ भी इंस्टॉल नहीं करता है। stdin पर उत्तर फ़ीड करें:
1printf 'n\nY\n' | hermes gateway install
दो प्रश्न हैं "अभी गेटवे शुरू करें?" और "लॉगिन/बूट पर स्वचालित रूप से शुरू करें?"। n फिर Y कहता है: इसे इस सेकंड शुरू न करें, लेकिन बूट पर इसे सक्षम करें। इंस्टॉलर उपयोगकर्ता-सत्र लिंगरिंग भी चालू करता है, जो एक उपयोगकर्ता सेवा को आपके लॉग इन करने से पहले चलाने देता है। इसकी पुष्टि करें, क्योंकि यही "रीबूट से बचता है" को सच बनाता है और केवल "लॉगआउट से बचता है" नहीं:
1loginctl show-user $USER -p Linger # चाहिए: Linger=yes
इसे शुरू करें और जाँचें:
1hermes gateway start2systemctl --user status hermes-gateway
आप active (running) और NRestarts=0 चाहते हैं। मेरे बक्से पर गेटवे ने लगभग 280MB का उपयोग किया और पूरी मशीन लगभग 556MB पर बैठी, 4GB पर आरामदायक।
अब असली परीक्षण। रीबूट करें और इसे न छुएँ:
1sudo reboot
मेरा लगभग 15 सेकंड में वापस आया, गेटवे अपने आप शुरू हो गया था, Telegram से पुनः कनेक्ट हो गया था, और रीबूट से पहले के वार्तालाप इतिहास के साथ अगले संदेश का उत्तर दिया था। यही पूरी बात है।
Mac पर: launchd और एक वॉचडॉग
macOS systemd के बजाय launchd का उपयोग करता है, और एक जाल है। macOS 15 पर Hermes v0.16.0 के साथ, hermes gateway start launchd सेवा को पंजीकृत करने में विफल हो सकता है और आपको बताए बिना, एक अप्रबंधित पृष्ठभूमि प्रक्रिया पर वापस आ सकता है। आप यह देखते हैं:
1Bootstrap failed: 5: Input/output error2⚠ launchd cannot manage the gateway on this macOS version (launchctl exit 5)3✓ Started gateway as a background process instead4 It will NOT auto-start at login or auto-restart on crash.
यदि आपके पास पहले एक कार्यशील launchd जॉब थी, तो कमांड ने इसे अनलोड कर दिया, और फ़ॉलबैक पहले क्रैश या रीबूट तक ठीक चलता है, फिर आपका एजेंट चला जाता है और आपको बताने वाला कुछ नहीं होता है। रॉ launchctl वहाँ काम करता है जहाँ cli विफल होता है, ssh पर भी:
1launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/ai.hermes.gateway.plist2launchctl print gui/$(id -u)/ai.hermes.gateway | grep state # चाहिए: state = running
plist लॉगिन पर गेटवे शुरू करता है लेकिन क्रैश पर इसे रीस्टार्ट नहीं करता है। एक क्रॉन वॉचडॉग दोनों अंतराल को बंद करता है, और क्रॉन बूट पर बिना लॉगिन की आवश्यकता के चलता है। रेसिपी gateway-watchdog.sh भेजती है; यह हर 5 मिनट में जाँच करता है कि गेटवे प्रक्रिया जीवित है या नहीं और यदि नहीं तो इसे फिर से बूटस्ट्रैप करता है। इसे एक शेड्यूल पर इंस्टॉल करें:
1(crontab -l 2>/dev/null; echo '*/5 * * * * $HOME/scripts/gateway-watchdog.sh >/dev/null 2>&1') | crontab -
मैंने इस क्रम को अपने स्वयं के Mac Mini पर एक डाउनग्रेड किए गए गेटवे को पुनर्प्राप्त करते देखा है। इसे रीबूट करें और पुष्टि करें कि गेटवे बिना लॉग इन किए पाँच मिनट के भीतर वापस आ गया है।
अपने सेटअप को सत्यापित करें
- सेवा ऊपर है: Linux पर systemctl --user status hermes-gateway (active (running)), या macOS पर launchctl print gui/$(id -u)/ai.hermes.gateway | grep state (state = running)
- अपने बॉट को मैसेज करें: यह आपको उत्तर देता है, और आपके अनुमत उपयोगकर्ताओं में से किसी को भी अनदेखा करता है
- Linux पर, loginctl show-user $USER -p Linger Linger=yes पढ़ता है
- बक्से को रीबूट करें, प्रतीक्षा करें, बिना वापस लॉग इन किए बॉट को फिर से मैसेज करें: यह उत्तर देता है
लागत
VPS पर, बक्सा ही एकमात्र खर्च है। मेरा Hetzner CX23 $0.012/घंटा पर है, जो $7.79/माह (Hetzner US मूल्य निर्धारण, 2026-06-18; EU CX22 समान आकार और सस्ता है) पर कैप्ड है।
Mac पर, यह एक मशीन है जो आपके पास पहले से है, शून्य अतिरिक्त सेवाएँ। दोनों मामलों में मॉडल Nous Portal के मुफ़्त स्तर पर मुफ़्त है।
यहाँ, मेमोरी सीमा नहीं है: गेटवे ने लगभग 280MB का उपयोग किया, पूरे बक्से ने लगभग 556MB, इसलिए 1GB RAM पर्याप्त है। डिस्क वास्तविक सीमा है: इंस्टॉल लगभग 6.6GB है, इसलिए 1GB या 10GB इमेज तंग है, इसे 20GB दें। और x86 का उपयोग करें, यह सुरक्षित विकल्प है।
इसे स्वयं चलाएँ, और आगे क्या है
दोनों बक्सों में सटीक स्क्रिप्ट के साथ एक पूर्ण रेसिपी है, जो ज्यों की त्यों चलाने योग्य है:
- VPS पथ: cheap-vps
- Mac पथ: mac-mini-24-7
अब आपके पास Telegram पर एक हमेशा-चालू एजेंट है जो रीबूट से बचता है।
अगला Flightplan इसके ऊपर बनाता है: शेड्यूल किए गए कार्य जो आपको तभी मैसेज करते हैं जब कुछ मायने रखता है, एक git-सिंक किया गया कार्यक्षेत्र जिसे एजेंट पढ़ता और लिखता है, और ड्राफ्ट-एंड-अप्रूव प्रवाह जो हर सार्वजनिक कार्रवाई पर एक मानव रखता है।
पढ़ने के लिए धन्यवाद





