SSD Nodes Learn 🎉 VPS $4.99/माह से
गाइड Matt Connorलेखक: Matt Connor · अपडेट किया गया: 2026-08-07

अपने फोन से Hermes agent को एक्सेस कैसे करें

अपने VPS पर चल रहे Hermes agent को फोन से सुरक्षित एक्सेस करने के तीन तरीके जानें। Tailscale, reverse proxy या SSH के माध्यम से कनेक्शन सेटअप करें और डिवाइस खोने पर एक्सेस रद्द करें।

अपने फोन से अपने Hermes agent तक पहुँचने के तीन तरीके

अपने फोन से अपने Hermes agent तक पहुँचने के लिए आप इसके web dashboard का उपयोग करते हैं, और मुख्य निर्णय यह है कि उस dashboard के सामने क्या रखा जाए। पहला विकल्प एक private mesh network है, जहाँ dashboard केवल एक Tailscale address पर listen करता है और कोई भी port internet के सामने नहीं होता। दूसरा विकल्प TLS (transport layer security) और login के साथ एक reverse proxy के पीछे एक public endpoint है, जहाँ वह login ही आपके server के terminal की सुरक्षा करने वाली एकमात्र चीज है। तीसरा विकल्प एक terminal app से SSH (secure shell) है, जिसमें सबसे कम setup लगता है और सबसे अधिक access मिलता है।

यह guide वहाँ से शुरू होती है जहाँ अपने खुद के VPS पर Hermes agent चलाना समाप्त होता है। Agent install हो चुका है, यह command line पर जवाब देता है, और अब आप इसे अपनी जेब में चाहते हैं।

नीचे दी गई commands tag v2026.8.3 के लिए लिखी गई हैं, जो 3 August 2026 को प्रकाशित हुई थी और release notes में v0.20.0 के रूप में चिह्नित है। Hermes अक्सर update होता रहता है, इसलिए main को follow करने के बजाय machine को एक tag पर pin करें। Installer एक commit स्वीकार करता है:

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --commit 3c27eb6234bf
hermes version

hermes version यह print करता है कि वास्तव में क्या install है। इस page पर किसी भी flag पर भरोसा करने से पहले इसकी tag के साथ तुलना करें।

रिपॉजिटरी क्या प्रदान करती है और क्या नहीं

Hermes रिपॉजिटरी में कोई iOS या Android ऐप नहीं है। नेटिव क्लाइंट hermes desktop (उपनाम hermes gui) है, जो macOS, Windows और Linux के लिए एक Electron एप्लिकेशन है। यह लोकल एजेंट के बजाय रिमोट एजेंट से जुड़ सकता है: Settings में Gateway के अंतर्गत रिमोट URL को http://<server-address>:9119 पर सेट करें, या इसे लॉन्च करने से पहले HERMES_DESKTOP_REMOTE_URL=http://<server-address>:9119 को एक्सपोर्ट करें। यह दूसरे लैपटॉप की समस्या का समाधान करता है। फोन के लिए यह कुछ नहीं करता है।

फोन से आप जिस इंटरफेस का उपयोग करते हैं वह hermes dashboard है, जो ब्राउज़र इंटरफेस है। यह कॉन्फ़िगरेशन, सत्र, cron जॉब्स, स्किल्स, लॉग्स और मैसेजिंग प्लेटफॉर्म को प्रबंधित करता है, और इसमें एक टर्मिनल एम्बेड होता है: सर्वर PTY (स्यूडो-टर्मिनल) के पीछे hermes --tui को स्पॉन करता है और आउटपुट को पेज पर स्ट्रीम करता है। एक संकीर्ण स्क्रीन पर, सेशन स्विचर एक स्लाइड-ओवर पैनल में बदल जाता है, इसलिए लेआउट फोन पर भी काम करता है।

डिफ़ॉल्ट रूप से डैशबोर्ड 127.0.0.1:9119 पर लिसन करता है और सर्वर पर ही एक ब्राउज़र टैब खोलता है, जो हेडलेस VPS (वर्चुअल प्राइवेट सर्वर) पर किसी काम का नहीं है। इसे बिना ब्राउज़र के शुरू करें और सॉकेट को देखें:

hermes dashboard --no-open
ss -lntp | grep 9119

127.0.0.1:9119 पर एक लिसनर केवल सर्वर से ही एक्सेस किया जा सकता है। 0.0.0.0:9119 पर एक लिसनर उस मशीन से जुड़े हर नेटवर्क से एक्सेस किया जा सकता है, जिसमें पब्लिक नेटवर्क भी शामिल है। वह एक लाइन यह तय करती है कि आप कितने एक्सपोज़्ड हैं, इसलिए अनुमान लगाने के बजाय इसे पढ़ें।

विकल्प 1: Tailscale के साथ एक प्राइवेट मेश

यदि आपके पास इसे न चुनने का कोई ठोस कारण न हो, तो यही विकल्प चुनें। Tailscale एक मेश VPN (वर्चुअल प्राइवेट नेटवर्क) है जो WireGuard पर आधारित है। आपके द्वारा एनरोल किया गया प्रत्येक डिवाइस एक स्थिर पता प्राप्त करता है और सीधे अन्य डिवाइसों से बात करता है। आपका फोन भी उसी मेश में शामिल हो जाता है, इसलिए डैशबोर्ड को कभी भी पब्लिक पोर्ट की आवश्यकता नहीं होती है।

सर्वर पर:

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
tailscale ip -4

फोन पर Tailscale ऐप इंस्टॉल करें और उसी अकाउंट से साइन इन करें। सर्वर पर tailscale status चलाने से फोन का नाम लिस्ट में दिखाई देगा। अब डैशबोर्ड को उस पते पर बाइंड करें जिसे tailscale ip -4 ने प्रिंट किया है:

hermes dashboard --host 100.101.102.103 --port 9119 --no-open

0.0.0.0 के बजाय मेश एड्रेस पर बाइंड करने का मतलब है कि लिसनिंग सॉकेट केवल Tailscale इंटरफेस पर मौजूद है। आपके पब्लिक IP एड्रेस का पोर्ट स्कैन करने पर 9119 पर कुछ नहीं मिलेगा क्योंकि वहां कोई सर्विस लिसन नहीं कर रही है, इसलिए अब आपका फायरवॉल ही सुरक्षा का एकमात्र जरिया नहीं है। ss -lntp | grep 9119 के साथ इसकी दोबारा पुष्टि करें।

बाइंड एड्रेस ही ऑथेंटिकेशन का भी निर्णय लेता है, और यही वह हिस्सा है जिसे लोग अक्सर नजरअंदाज कर देते हैं। 127.0.0.1 पर डैशबोर्ड में कोई लॉगिन नहीं होता है। किसी अन्य एड्रेस पर ऑथेंटिकेशन गेट अनिवार्य है, और यदि कोई प्रोवाइडर कॉन्फ़िगर नहीं है, तो सर्वर स्टार्ट होने से मना कर देगा। प्रोजेक्ट इसे 'failing closed' कहता है। पहली बार इसे इंटरैक्टिव तरीके से चलाएं, यह आपको तुरंत यूजरनेम और पासवर्ड सेट करने का विकल्प देगा। परिणाम ~/.hermes/.env में लिखा जाएगा:

HERMES_DASHBOARD_BASIC_AUTH_USERNAME=you
HERMES_DASHBOARD_BASIC_AUTH_PASSWORD_HASH=scrypt$16384$8$1$...
HERMES_DASHBOARD_BASIC_AUTH_SECRET=a-long-random-string

उस सीक्रेट को openssl rand -hex 32 के साथ जनरेट करें और फिर उसे न छेड़ें। यह सेशन कुकी को साइन करता है, इसलिए इसे बदलने पर सभी डिवाइस लॉग आउट हो जाएंगे। उसी फाइल में आपके मॉडल API कीज़ भी होती हैं, इसलिए chmod 600 ~/.hermes/.env का उपयोग करके इसे प्राइवेट रखें।

उस पर भरोसा करने से पहले मेश पर मौजूद किसी अन्य मशीन से गेट की जांच करें:

curl -s http://100.101.102.103:9119/api/status | jq '.auth_required, .auth_providers'

true के बाद ["basic"] का मतलब है कि गेट चालू है और पासवर्ड प्रोवाइडर ही जवाब दे रहा है। प्रोजेक्ट का अपना डॉक्यूमेंटेशन उस प्रोवाइडर के बारे में स्पष्ट है: यह एक भरोसेमंद नेटवर्क या VPN के लिए है, और यह पब्लिक इंटरनेट का सामना करने वाले डैशबोर्ड के लिए उपयुक्त नहीं है। एक मेश पर, आप बिल्कुल उसी स्थिति में हैं।

Tailnet के अंदर HTTPS के लिए, पोर्ट को Tailscale को सौंप दें:

sudo tailscale serve --bg localhost:9119
sudo tailscale serve status

Tailscale मशीन के MagicDNS नाम के लिए जारी किए गए सर्टिफिकेट के साथ TLS को टर्मिनेट करता है, इसलिए ब्राउज़र चेतावनी देना बंद कर देता है और सेशन कुकी को उसका Secure फ्लैग मिल जाता है। सबसे पहले Tailscale एडमिन कंसोल के DNS पेज पर MagicDNS और HTTPS सर्टिफिकेट को इनेबल करें, और वहां दी गई स्वीकृति को पढ़ें: आपकी मशीनों के नाम और आपके tailnet DNS नाम पब्लिक सर्टिफिकेट ट्रांसपेरेंसी लेजर में प्रकाशित किए जाते हैं, जिसे कोई भी पढ़ सकता है।

यहाँ वास्तविक लागत कोऑर्डिनेशन सर्वर की है। आपके फोन और VPS के बीच का ट्रैफिक एंड-टू-एंड एन्क्रिप्टेड होता है और Tailscale के माध्यम से नहीं गुजरता है, लेकिन जो अकाउंट यह तय करता है कि कौन से डिवाइस मेश का हिस्सा हैं, वह आपके हार्डवेयर पर नहीं होता है। यदि यह आपके लिए महत्वपूर्ण है, तो Headscale, self-hosted Tailscale control server के साथ कंट्रोल प्लेन को स्वयं चलाएं, और tailscale up --login-server https://headscale.example.com का उपयोग करके क्लाइंट्स को इसकी ओर निर्देशित करें। यदि आप मेश को छोड़ना चाहते हैं और पीयर्स को मैन्युअल रूप से कॉन्फ़िगर करना चाहते हैं, तो plain WireGuard और Tailscale के बीच तुलना उन चीजों को कवर करती है जिन्हें आप छोड़ रहे हैं।

विकल्प 2: एक public HTTPS endpoint, और इसमें छिपा खतरा

कभी-कभी mesh उपलब्ध नहीं होता है। हो सकता है कि काम का फोन आपको VPN client install करने की अनुमति न दे। ऐसी स्थिति में dashboard को reverse proxy के पीछे रखा जाता है। Dashboard को loopback पर रखें और Caddy को certificate संभालने दें:

hermes.example.com {
  reverse_proxy 127.0.0.1:9119
}

Caddy स्वयं certificate प्राप्त करता है और renew करता है, और इसका reverse_proxy बिना किसी अतिरिक्त निर्देश के WebSocket upgrades को पास कर देता है, जिसकी dashboard के embedded terminal को आवश्यकता होती है। Nginx पर आपको Upgrade और Connection headers स्वयं जोड़ने पड़ते हैं, और nginx पर Certbot के साथ Let's Encrypt certificate जारी करना उस कार्य के TLS भाग को कवर करता है। Hermes को उसका public नाम बताएं ताकि login callbacks सही host पर point करें:

dashboard:
  public_url: "https://hermes.example.com"

अब आता है खतरा। Auth gate bind address के आधार पर काम करता है, न कि उस address के आधार पर जहाँ से request आई है। Proxy के पीछे 127.0.0.1 पर bound dashboard को loopback दिखाई देता है, वह तय करता है कि login की आवश्यकता नहीं है, और proxy जिसे भी अनुमति देता है उसे access दे देता है। जांचें कि आपने वास्तव में क्या publish किया है:

curl -s https://hermes.example.com/api/status | jq '.auth_required'

यदि यह false प्रिंट करता है, तो इंटरनेट आपके सर्वर पर मौजूद terminal से केवल एक URL की दूरी पर है। इसमें किसी exploit का उपयोग नहीं हो रहा है और logs में भी कोई शिकायत नहीं दिखेगी। इसके दो समाधान हैं और आपको कम से कम एक का उपयोग करना चाहिए। या तो proxy में authentication डालें, जिसमें forward auth के माध्यम से Authentik को self-hosted single sign-on provider के रूप में इसके सामने रखा जाए, या dashboard के स्वयं के OIDC (OpenID Connect) provider को configure करें:

HERMES_DASHBOARD_OIDC_ISSUER=https://auth.example.com/application/o/hermes/
HERMES_DASHBOARD_OIDC_CLIENT_ID=hermes-dashboard
HERMES_DASHBOARD_OIDC_SCOPES="openid profile email"

सही तरीके से करने पर भी, इस विकल्प की एक न्यूनतम सुरक्षा सीमा है जिसे आप कम नहीं कर सकते। एक public login page ऐसा page है जिसे कोई भी access कर सकता है और उस पर हमला कर सकता है, और उसके पीछे आपके VPS पर एक shell मौजूद है। Username और password इसके लिए बहुत कमजोर सुरक्षा है, यही कारण है कि docs public binds के लिए OAuth या OIDC का उपयोग करने का सुझाव देते हैं। Login पर rate limit लगाएं, ufw को proxy ports और SSH को छोड़कर बाकी सभी के लिए बंद रखें, और समय-समय पर access log को पढ़ते रहें।

विकल्प 3: मोबाइल टर्मिनल से SSH और mosh का उपयोग

सबसे कम मेहनत वाला तरीका: अपने फोन पर एक टर्मिनल ऐप इंस्टॉल करें, उसमें एक SSH key लोड करें, और एजेंट के टेक्स्ट इंटरफेस का उपयोग करें।

ssh you@vps.example.com
tmux new -A -s phone
hermes --tui

tmux new -A -s phone, phone नामक सेशन से जुड़ता है, या यदि वह मौजूद न हो तो उसे बना देता है। इससे कनेक्शन टूटने पर भी एजेंट चलता रहता है और अगली बार आप वहीं वापस आ जाते हैं जहाँ से आपने छोड़ा था। यह पैटर्न वही है जिसका उपयोग फोन से Claude Code चलाने के लिए किया जाता है।

मोबाइल नेटवर्क पर साधारण SSH का उपयोग करना असुविधाजनक होता है, क्योंकि फोन का एड्रेस बदलते ही या स्लीप मोड में जाते ही कनेक्शन टूट जाता है। Mosh इस समस्या को हल करता है। यह UDP (user datagram protocol) पर चलता है और बाइट स्ट्रीम के बजाय टर्मिनल स्टेट को सिंक करता है, इसलिए वाई-फाई से सेलुलर नेटवर्क पर जाने के दौरान भी सेशन बना रहता है:

sudo apt install -y mosh
sudo ufw allow 60000:61000/udp

फोन से, mosh you@vps.example.com चलाएं। Mosh आपके मौजूदा SSH लॉगिन पर mosh-server शुरू करता है और फिर सेशन को 60000 से 61000 की रेंज वाले UDP पोर्ट पर ले जाता है, इसीलिए इस रेंज का खुला होना आवश्यक है।

इसकी सुरक्षा कीमत वही है जो सामान्यतः होती है। एक SSH सेशन एक शेल है, और शेल का मतलब है वह सब कुछ जो वह अकाउंट कर सकता है। ऐसी स्थिति में, एजेंट के अप्रूवल प्रॉम्प्ट ही आपके चोरी हुए या अनलॉक फोन और आपकी फाइलों के बीच सुरक्षा की अंतिम परत होते हैं। इसके लिए एक समर्पित non-root अकाउंट का उपयोग करें, केवल key-based authentication रखें, और अपने साथ ले जाने वाले डिवाइस पर key डालने से पहले VPS पर SSH को सुरक्षित करने की प्रक्रिया पूरी करें।

मोबाइल नेटवर्क पर क्या काम नहीं करता है

चार चीजें, और इनमें से कोई भी ऐसी बग नहीं है जिसे आप कॉन्फ़िगरेशन से ठीक कर सकें।

जब आप नहीं देख रहे होते हैं तो डैशबोर्ड आपको लॉग आउट कर देता है। एक्सेस टोकन का TTL (टाइम टू लिव) 15 मिनट का होता है और वर्तमान API कॉन्ट्रैक्ट में कोई रिफ्रेश टोकन नहीं है। जब टोकन समाप्त हो जाता है, तो पेज 401 रिस्पॉन्स देखता है और वापस /login पर नेविगेट कर देता है। डैशबोर्ड खोलें, फोन को बीस मिनट के लिए अपनी जेब में रखें, और वापस आने पर आपको लॉगिन स्क्रीन दिखाई देगी और जो कुछ भी आप टाइप कर रहे थे वह गायब हो जाएगा। कुछ भी टूटा नहीं है। बस दोबारा साइन इन करें।

एम्बेडेड टर्मिनल बैकग्राउंड टैब में जीवित नहीं रहता है। सर्वर PTY के पीछे TUI (टेक्स्ट यूजर इंटरफेस) को स्पॉन करता है और टैब बंद होने पर इसे साफ-सुथरे तरीके से समाप्त कर देता है, और दोबारा खोलने पर एक नया टर्मिनल स्पॉन होता है। मोबाइल ब्राउज़र मेमोरी वापस पाने के लिए बैकग्राउंड टैब को हटा देते हैं, इसलिए किसी अन्य ऐप पर स्विच करने से टर्मिनल बंद हो जाता है। आपकी चैट हिस्ट्री सुरक्षित है, क्योंकि सेशन सर्वर पर स्टोर होते हैं और hermes sessions list उन्हें अभी भी दिखाता है। टर्मिनल खुद ऐसी चीज नहीं है जिसे आप दोबारा अटैच कर सकें। यदि आपको ऐसे सेशन की आवश्यकता है जो बना रहे, तो SSH पर tmux का उपयोग करें।

निष्क्रिय कनेक्शन चुपचाप मर जाते हैं। मोबाइल कैरियर NAT (नेटवर्क एड्रेस ट्रांसलेशन) टेबल एंट्रीज को वापस पाने के लिए निष्क्रिय TCP कनेक्शन को ड्रॉप कर देते हैं, और स्क्रीन बंद होने के बाद फोन नेटवर्क को लगभग पूरी तरह से सर्विस देना बंद कर देता है। एक WebSocket जो कुछ समय से शांत है, वह आमतौर पर अनलॉक करने के समय तक पहले ही मर चुका होता है, और पेज केवल आपके टच करने के बाद ही दोबारा कनेक्ट होता है। यही कारण है कि फोन पर SSH की तुलना में mosh बेहतर महसूस होता है: इसमें खोने के लिए कभी कोई कनेक्शन था ही नहीं।

कोई भी नोटिफिकेशन पुश नहीं करता है। न तो डैशबोर्ड और न ही SSH सेशन आपके फोन को जगा सकते हैं। डिवाइस पर कोई Hermes ऐप नहीं है, इसलिए प्लेटफॉर्म की पुश सर्विस तक कोई रास्ता नहीं है। एक लंबा एजेंट रन पूरा हो जाता है, और आपको इसका पता अगली बार देखने पर चलता है।

Messaging gateway के माध्यम से सूचनाएं प्राप्त करना

इस समस्या का समाधान gateway है, जो agent तक पहुँचने का एक पूरी तरह से अलग तरीका है। hermes gateway agent को Telegram, Discord, Slack, WhatsApp, Signal और email जैसे messaging platforms से जोड़ता है। इसके बाद आप अपने agent से उस app के भीतर बात करते हैं जिसके पास पहले से ही आपके phone पर push channel मौजूद है, जो background delivery को संभालता है, और network disconnect होने जैसी स्थितियों से निपटता है।

hermes gateway setup
hermes gateway install
hermes gateway status

hermes gateway install gateway को systemd service के रूप में register करता है, ताकि reboot के बाद यह पुनः start हो सके। Hermes installer आपके लिए कोई service unit नहीं बनाता है, इसलिए restart के बाद hermes dashboard अपने आप वापस नहीं आएगा। जिन components पर आप निर्भर हैं, उनके लिए एक unit file लिखें। VPS पर systemd services और timers लिखना लेख में इस file के बारे में विस्तार से बताया गया है।

एक scheduled job बिना किसी बातचीत के, इसी तरह परिणाम push कर सकती है:

hermes send -t telegram -s "Backup report" -f /home/you/report.txt

यहाँ authorization डिफ़ॉल्ट रूप से deny पर सेट होता है। यदि कोई allowlist सेट नहीं है और GATEWAY_ALLOW_ALL_USERS unset है, तो प्रत्येक user को access देने से मना कर दिया जाता है, जो कि शुरुआत के लिए सही स्थिति है। जिन accounts को आप अनुमति देना चाहते हैं, उनके नाम ~/.hermes/.env में लिखें:

TELEGRAM_ALLOWED_USERS=123456789
GATEWAY_ALLOWED_USERS=123456789

या फिर numeric IDs को paste करने के बजाय code-based pairing चालू करें। इसके लिए ~/.hermes/config.yaml में unauthorized_dm_behavior: pair को सेट करें। जब कोई अज्ञात account agent को message भेजता है, तो उसे आठ अक्षरों का एक code प्राप्त होता है, और जब तक आप उसे approve नहीं करते, तब तक कोई अन्य क्रिया नहीं होती है:

hermes pairing list
hermes pairing approve telegram ABC12DEF
hermes pairing revoke telegram 123456789

Codes एक घंटे के बाद expire हो जाते हैं, एक user हर दस मिनट में एक code का अनुरोध कर सकता है, और पांच बार विफल प्रयास करने पर उस account को lock कर दिया जाता है।

चोरी हुए फोन के प्रभाव क्षेत्र (blast radius) को सीमित करना

जो फोन आपके agent तक पहुँच सकता है, वह आपके सर्वर पर कमांड चला सकता है, और फोन खो सकते हैं। अभी तय करें कि उसे पाने वाला व्यक्ति क्या कर सकता है।

Approvals को चालू रखें। approvals.mode डिफ़ॉल्ट रूप से smart पर सेट होता है, जो जोखिम का आकलन करने के लिए एक सहायक मॉडल से पूछता है और केवल कम जोखिम वाले कमांड को स्वतः स्वीकृत (auto-approve) करता है। इसे off पर सेट करना --yolo के साथ सब कुछ चलाने के समान है, और HERMES_YOLO_MODE=1 इसे environment के माध्यम से करता है। उस स्थिति में ऐसा फोन न रखें जो किसी agent से बात करता हो। approvals.cron_mode: deny को सेट करें ताकि आपके सोते समय scheduled jobs खुद को स्वीकृत न कर सकें।

approvals:
  mode: smart
  cron_mode: deny

Agent को नुकसान पहुँचाने के लिए एक छोटा दायरा दें। terminal.backend: docker कमांड्स को एक container के अंदर चलाता है जो एक छोटी सूची को छोड़कर सभी Linux capabilities को हटा देता है, no-new-privileges सेट करता है, और process count को सीमित करता है, ताकि container एक prompt के बजाय सीमा (boundary) बन जाए। terminal.cwd working directory को पिन करता है। HERMES_WRITE_SAFE_ROOT, write_file और patch को आपके द्वारा नामित directories तक सीमित करता है, और उनके बाहर कोई भी write operation बिना किसी override विकल्प के ब्लॉक कर दिया जाता है।

export HERMES_WRITE_SAFE_ROOT=/home/you/projects:/home/you/.hermes

Hermes पहले से ही ~/.ssh, ~/.aws, ~/.kube और /etc/sudoers में writes को ब्लॉक करता है, डिस्क पर कहीं भी .env फाइलों को लिखने से मना करता है, और आपकी approval settings चाहे जो भी हों, विनाशकारी कमांड्स की एक सख्त सूची को अस्वीकार करता है। इसे एक न्यूनतम सुरक्षा स्तर मानें, न कि अपनी पूरी योजना। Agent को हमेशा एक सामान्य user के रूप में चलाएं, कभी भी root के रूप में नहीं। यही तर्क बिना निगरानी के चल रहे किसी भी coding agent पर लागू होता है, और Claude Code को VPS पर सुरक्षित रूप से चलाना इस पर विस्तार से चर्चा करता है।

इसके बाद, जरूरत पड़ने से पहले ही revocation (अधिकार रद्द करने) के चरणों को लिख लें। Tailscale admin console में device को हटाने से mesh access तुरंत कट जाता है। HERMES_DASHBOARD_BASIC_AUTH_SECRET को बदलने और restart करने से हर device पर मौजूद सभी dashboard sessions अमान्य हो जाते हैं, क्योंकि वह मान session cookie को sign करता है। ~/.ssh/authorized_keys से फोन की public key हटाने से SSH समाप्त हो जाता है। hermes pairing revoke telegram <user-id> एक messaging account को हटा देता है। यदि device में ऐसी कोई चीज़ थी जो आपके provider keys को पढ़ सकती थी, तो उन्हें hermes auth logout <provider> के साथ हटा दें और upstream नए keys जारी करें।

मान लेने के बजाय परिणाम की जाँच करें। ये कमांड्स आपको अपने बॉक्स पर चलाने हैं, और उनका आउटपुट आपके सेटअप पर निर्भर करता है:

tailscale status
hermes pairing list
hermes logs gateway -n 100
hermes status --deep

Logs ~/.hermes/logs/ के अंतर्गत रहते हैं। किसी घटना के बाद उन्हें पढ़ें, और कभी-कभी तब भी पढ़ें जब कोई घटना न हुई हो।

FAQ

क्या iOS या Android के लिए कोई आधिकारिक Hermes मोबाइल ऐप है?

नहीं। Hermes रिपॉजिटरी एक कमांड लाइन इंटरफेस, एक वेब डैशबोर्ड और macOS, Windows तथा Linux के लिए एक Electron डेस्कटॉप क्लाइंट प्रदान करती है। इसका कोई आधिकारिक iOS या Android बिल्ड नहीं है। फोन से आप ब्राउज़र में वेब डैशबोर्ड, एक SSH क्लाइंट, या hermes gateway के माध्यम से जुड़ी किसी मैसेजिंग प्लेटफॉर्म का उपयोग कर सकते हैं। थर्ड-पार्टी मोबाइल क्लाइंट मौजूद हैं, लेकिन वे थर्ड-पार्टी कोड हैं जो आपके एजेंट के क्रेडेंशियल्स रखते हैं, इसलिए उन्हें इंस्टॉल करने से पहले उनका सोर्स कोड जरूर पढ़ें।

Hermes डैशबोर्ड मेरे फोन पर मुझे लॉग आउट क्यों कर देता है?

एक्सेस टोकन का TTL 15 मिनट का होता है और वर्तमान API कॉन्ट्रैक्ट में कोई रिफ्रेश टोकन नहीं है। जब टोकन समाप्त हो जाता है, तो पेज को 401 एरर मिलता है और वह /login पर रीडायरेक्ट हो जाता है। फोन पर ब्राउज़र को बैकग्राउंड में डालने पर यह समस्या स्पष्ट हो जाती है, क्योंकि किसी अन्य ऐप में बीस मिनट बिताना ही इसे ट्रिगर करने के लिए पर्याप्त है। HERMES_DASHBOARD_BASIC_AUTH_SECRET को एक स्थिर रैंडम वैल्यू पर सेट करें ताकि सेशन साइनिंग की (session signing key) रीस्टार्ट के बाद भी समान रहे, जिससे लॉग आउट होने का दूसरा कारण समाप्त हो जाएगा।

क्या मैं Hermes डैशबोर्ड को सुरक्षित रूप से सार्वजनिक इंटरनेट पर डाल सकता हूँ?

केवल उस ऑथेंटिकेशन के साथ जिसे आपने स्वयं सत्यापित किया है। ऑथेंटिकेशन गेट बाइंड एड्रेस के आधार पर सक्रिय होता है, इसलिए एक रिवर्स प्रॉक्सी के पीछे 127.0.0.1 पर बाइंड किया गया डैशबोर्ड इंटरनेट से कभी लॉगिन नहीं मांगेगा। curl -s https://your-host/api/status | jq '.auth_required' चलाएं और देखें कि क्या परिणाम मिलता है। यूजरनेम और पासवर्ड के बजाय OAuth या OIDC का उपयोग करें, क्योंकि प्रोजेक्ट के डॉक्यूमेंटेशन में कहा गया है कि पासवर्ड प्रोवाइडर केवल विश्वसनीय नेटवर्क और VPN के लिए है। एक प्राइवेट मेश इस प्रश्न को पूरी तरह से समाप्त कर देता है, इसीलिए यह बेहतर डिफॉल्ट विकल्प है।

क्या मुझे Tailscale अकाउंट की आवश्यकता है, या मैं कंट्रोल प्लेन को स्वयं होस्ट कर सकता हूँ?

आप इसे स्वयं होस्ट कर सकते हैं। Headscale, Tailscale कोऑर्डिनेशन सर्वर का एक ओपन इम्प्लीमेंटेशन है और आधिकारिक Tailscale क्लाइंट tailscale up --login-server https://headscale.example.com के साथ इससे कनेक्ट होते हैं। इसके बाद मेश पर अनुमति प्राप्त डिवाइसों की सूची आपके नियंत्रण में होती है। इसकी कीमत यह है कि अब आपको उस सर्वर को चलाना और उसका बैकअप लेना होगा, और जब वह डाउन होगा तो आप किसी डिवाइस को एनरोल या री-ऑथेंटिकेट नहीं कर पाएंगे।

जब एजेंट कोई जॉब पूरा कर ले, तो मुझे अपने फोन पर नोटिफिकेशन कैसे मिलेगा?

मैसेजिंग गेटवे का उपयोग करें। डैशबोर्ड और SSH के पास फोन को जगाने का कोई तरीका नहीं है, क्योंकि डिवाइस पर पुश नोटिफिकेशन प्राप्त करने के लिए कोई Hermes ऐप नहीं है। एजेंट को hermes gateway setup के साथ Telegram, Signal, Discord या किसी अन्य समर्थित प्लेटफॉर्म से कनेक्ट करें, और फिर उस प्लेटफॉर्म के अपने ऐप को नोटिफिकेशन डिलीवर करने दें। एक क्रोन जॉब hermes send -t telegram -s "Job done" -f /path/to/report.txt के साथ भी एक सिंगल मैसेज भेज सकती है, जो मॉडल को कॉल किए बिना डिलीवर हो जाता है।

#hermes#mobile#remote-access#tailscale#ai-agents