SSD Nodes Learn Hosting plans →
تعلیمی Matt Connorتحریر: Matt Connor · اپ ڈیٹ شدہ 2026-08-13

فون سے Hermes agent تک کیسے پہنچیں؟

اپنے VPS پر چلنے والے Hermes agent کو فون سے Tailscale، HTTPS یا SSH کے ذریعے کھولیں۔ فون گم ہونے پر access revoke کرنے کا واضح طریقہ بھی جانیں۔

اپنے فون سے اپنے Hermes agent تک پہنچنے کے تین طریقے

اپنے فون سے Hermes agent تک پہنچنے کے لیے اس کا web dashboard استعمال کریں۔ اصل فیصلہ یہ ہے کہ اس dashboard کے سامنے کیا موجود ہوگا۔ پہلا طریقہ private mesh network ہے، جس میں dashboard صرف Tailscale address پر listening کرتا ہے اور کوئی port internet کے سامنے نہیں ہوتا۔ دوسرا طریقہ reverse proxy کے پیچھے TLS (transport layer security) اور login کے ساتھ public endpoint ہے۔ اس صورت میں وہ login آپ کے server پر موجود terminal کو محفوظ رکھنے والی واحد چیز ہوتی ہے۔ تیسرا طریقہ terminal app سے SSH (secure shell) ہے۔ اس میں setup کم سے کم ہوتا ہے، لیکن یہ سب سے زیادہ access فراہم کرتا ہے۔

یہ guide اسی مقام سے شروع ہوتی ہے جہاں اپنے VPS پر Hermes agent چلانا ختم ہوتی ہے۔ Agent install ہو چکا ہے، command line پر جواب دیتا ہے، اور اب آپ اسے اپنے فون پر استعمال کرنا چاہتے ہیں۔

نیچے دیے گئے commands v2026.8.3 tag کے مطابق لکھے گئے ہیں۔ یہ tag 3 August 2026 کو published ہوا تھا، اور release notes میں اسے v0.20.0 کا نام دیا گیا ہے۔ Hermes اکثر releases جاری کرتا ہے، اس لیے main کو follow کرنے کے بجائے machine کو کسی tag پر pin کریں۔ Installer ایک commit قبول کرتا ہے:

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

hermes version بتاتا ہے کہ حقیقت میں کیا install ہوا ہے۔ اس کا tag سے موازنہ کریں، پھر اس صفحے پر موجود کسی flag پر اعتماد کریں۔

ریپوزٹری کیا فراہم کرتی ہے اور کیا فراہم نہیں کرتی

Hermes ریپوزٹری میں iOS یا Android ایپ موجود نہیں ہے۔ مقامی client hermes desktop (عرف hermes gui) ہے، جو macOS، Windows اور Linux کے لیے Electron ایپلی کیشن ہے۔ یہ مقامی agent کے بجائے remote agent سے منسلک ہو سکتا ہے: Settings میں Gateway کے تحت remote URL کو http://<server-address>:9119 پر سیٹ کریں، یا اسے launch کرنے سے پہلے HERMES_DESKTOP_REMOTE_URL=http://<server-address>:9119 export کریں۔ اس سے دوسرے laptop کا مسئلہ حل ہو جاتا ہے۔ فون کے لیے اس کا کوئی فائدہ نہیں۔

فون سے آپ hermes dashboard استعمال کرتے ہیں، جو browser interface ہے۔ یہ configuration، sessions، cron jobs، skills، logs اور messaging platforms manage کرتا ہے، اور اس میں terminal بھی شامل ہے: server ایک PTY (pseudo-terminal) کے پیچھے hermes --tui چلاتا ہے اور output کو page پر stream کرتا ہے۔ تنگ screen پر session switcher ایک slide-over panel میں سمٹ جاتا ہے، اس لیے layout فون پر بھی درست رہتا ہے۔

By default dashboard 127.0.0.1:9119 پر listen کرتا ہے اور خود server پر browser tab کھولتا ہے۔ headless VPS (virtual private server) پر یہ مفید نہیں ہوتا۔ اسے browser کے بغیر start کریں اور socket دیکھیں:

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

127.0.0.1:9119 پر listener تک صرف server سے رسائی ممکن ہے۔ 0.0.0.0:9119 پر listener تک ہر اس network سے رسائی ممکن ہے جس سے machine منسلک ہے، جس میں public network بھی شامل ہے۔ یہی ایک line طے کرتی ہے کہ آپ کا server کس حد تک exposed ہے، اس لیے اندازہ لگانے کے بجائے اسے پڑھیں۔

آپشن 1: Tailscale کے ساتھ نجی mesh

جب تک اس کے خلاف کوئی خاص وجہ نہ ہو، یہی آپشن منتخب کریں۔ Tailscale ایک mesh VPN (virtual private network) ہے جو WireGuard پر مبنی ہے۔ آپ کے mesh میں شامل ہر device کو ایک مستقل address ملتا ہے اور وہ دوسرے devices سے براہِ راست رابطہ کرتا ہے۔ آپ کا phone بھی اسی mesh میں شامل ہو جاتا ہے، اس لیے dashboard کو public port کی ضرورت نہیں رہتی۔

سرور پر:

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

Phone پر Tailscale app install کریں اور اسی account سے sign in کریں۔ سرور پر tailscale status چلانے سے phone اس کے name کے ساتھ فہرست میں آ جائے گا۔ اب dashboard کو اس address پر bind کریں جو tailscale ip -4 نے دکھایا ہے:

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

0.0.0.0 کے بجائے mesh address پر bind کرنے کا مطلب ہے کہ listening socket صرف Tailscale interface پر موجود ہے۔ آپ کے public IP address کا port scan کرنے پر 9119 پر کچھ نہیں ملے گا، کیونکہ وہاں کچھ بھی listening نہیں کر رہا۔ اس لیے اب آپ کی حفاظت صرف firewall پر منحصر نہیں رہتی۔ ss -lntp | grep 9119 سے دوبارہ اس کی تصدیق کریں۔

Bind address authentication کا فیصلہ بھی کرتا ہے، اور اکثر لوگ اسی حصے کو نظرانداز کر دیتے ہیں۔ 127.0.0.1 پر dashboard میں login نہیں ہوتا۔ کسی بھی دوسرے address پر auth gate لازمی ہے، اور provider configure نہ ہونے کی صورت میں سرور start ہونے سے انکار کر دیتا ہے۔ Project اس طرزِ عمل کو failing closed کہتا ہے۔ پہلی بار اسے interactive طور پر چلائیں۔ یہ اسی وقت username اور password set up کرنے کی پیشکش کرے گا۔ نتیجہ ~/.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 سے یہ secret generate کریں اور پھر اسے تبدیل نہ کریں۔ یہ session cookie پر دستخط کرتا ہے، اس لیے اسے تبدیل کرنے سے ہر device sign out ہو جاتا ہے۔ اسی file میں آپ کے model API keys بھی موجود ہوتی ہیں، اس لیے chmod 600 ~/.hermes/.env کے ذریعے اسے private رکھیں۔

اسے قابلِ اعتماد سمجھنے سے پہلے mesh کے کسی دوسرے machine سے gate check کریں:

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

true کے بعد ["basic"] کا مطلب ہے کہ gate فعال ہے اور password provider جواب دے رہا ہے۔ Project کی اپنی documentation اس provider کے بارے میں واضح ہے: یہ trusted network یا VPN کے لیے ہے، اور public internet کا سامنا کرنے والے dashboard کے لیے موزوں نہیں۔ Mesh میں آپ کی صورتِ حال بالکل یہی ہے۔

Tailnet کے اندر HTTPS کے لیے port Tailscale کے حوالے کریں:

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

Tailscale machine کے MagicDNS name کے لیے جاری کردہ certificate کے ذریعے TLS terminate کرتا ہے۔ اس سے browser warning دکھانا بند کر دیتا ہے اور session cookie کو اس کا Secure flag مل جاتا ہے۔ پہلے Tailscale admin console کے DNS page پر MagicDNS اور HTTPS Certificates enable کریں۔ وہاں acknowledgement بھی پڑھیں: آپ کے machine names اور tailnet DNS name public certificate transparency ledger میں شائع ہوتے ہیں، جسے کوئی بھی پڑھ سکتا ہے۔

اس طریقے کی اصل لاگت coordination server ہے۔ آپ کے phone اور VPS کے درمیان traffic end to end encrypted ہوتا ہے اور Tailscale سے ہو کر نہیں گزرتا، لیکن یہ account، جو طے کرتا ہے کہ mesh میں کون سے devices شامل ہیں، آپ کے hardware پر موجود نہیں ہوتا۔ اگر یہ بات اہم ہے تو Headscale، self-hosted Tailscale control server کے ذریعے control plane خود چلائیں، اور tailscale up --login-server https://headscale.example.com استعمال کرکے clients کو اس کی طرف point کریں۔ اگر آپ mesh ختم کرکے peers کو دستی طور پر configure کرنا چاہتے ہیں تو plain WireGuard اور Tailscale کا تقابل میں بتایا گیا ہے کہ آپ کن سہولتوں سے محروم ہوں گے۔

آپشن 2: public HTTPS endpoint، اور اس کے اندر موجود خطرہ

کبھی کبھی mesh دستیاب نہیں ہوتا۔ ممکن ہے work phone آپ کو VPN client انسٹال کرنے کی اجازت نہ دے۔ ایسی صورت میں dashboard کو reverse proxy کے پیچھے رکھیں۔ dashboard کو loopback پر رکھیں اور certificate کا انتظام Caddy کو کرنے دیں:

hermes.example.com {
  reverse_proxy 127.0.0.1:9119
}

Caddy خود certificate حاصل اور renew کرتا ہے۔ اس کا reverse_proxy WebSocket upgrades کو اضافی directives کے بغیر آگے پہنچاتا ہے، جس کی dashboard کے embedded terminal کو ضرورت ہوتی ہے۔ nginx میں آپ کو Upgrade اور Connection headers خود شامل کرنے ہوتے ہیں۔ nginx پر Certbot کے ذریعے Let's Encrypt certificate جاری کرنا اس کام کے TLS حصے کا احاطہ کرتا ہے۔ Hermes کو اس کا public name بتائیں تاکہ login callbacks درست host کی طرف جائیں:

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

اب اصل خطرہ دیکھیں۔ auth gate اس address کی بنیاد پر فیصلہ کرتا ہے جس پر سروس bind ہے، نہ کہ اس address کی بنیاد پر جہاں سے request آئی ہے۔ 127.0.0.1 پر bind کیا گیا dashboard، proxy کے پیچھے ہونے کی وجہ سے loopback request دیکھتا ہے، فیصلہ کرتا ہے کہ login ضروری نہیں، اور ہر اس شخص کو سروس فراہم کرتا ہے جسے proxy گزرنے دے۔ تصدیق کریں کہ آپ نے حقیقت میں کیا public کیا ہے:

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

اگر اس کا output false ہو تو internet آپ کے server پر موجود terminal سے صرف ایک URL کے فاصلے پر ہے۔ اس کے لیے کسی exploit کی ضرورت نہیں، اور logs میں بھی کوئی error درج نہیں ہوگا۔ اس کے دو حل ہیں، اور آپ کو کم از کم ایک اختیار کرنا چاہیے۔ یا تو proxy میں authentication شامل کریں، مثلاً self-hosted single sign-on provider کے طور پر Authentik کو forward auth کے ذریعے اس کے سامنے رکھیں، یا 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"

درست configuration کے باوجود اس option کی ایک ایسی بنیادی حد ہے جسے کم نہیں کیا جا سکتا۔ public login page ایسی page ہے جس تک ہر شخص پہنچ سکتا ہے اور جس پر حملہ کر سکتا ہے، جبکہ اس کے پیچھے آپ کے VPS کا shell موجود ہے۔ اس کے لیے username اور password کمزور تحفظ ہیں۔ اسی لیے docs public binds کے لیے OAuth یا OIDC تجویز کرتی ہیں۔ Login پر rate limit لگائیں، proxy ports اور SSH کے علاوہ ہر چیز کے لیے ufw بند رکھیں، اور وقتاً فوقتاً access log پڑھیں۔

آپشن 3: موبائل terminal سے SSH اور mosh

یہ سب سے کم محنت والا طریقہ ہے: فون پر ایک terminal ایپ انسٹال کریں، اس میں SSH key لوڈ کریں، اور agent کا اپنا text interface استعمال کریں۔

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

tmux new -A -s phone، phone نام کے session سے connect ہوتا ہے، یا session موجود نہ ہونے پر اسے بناتا ہے۔ اس طرح connection ختم ہونے کے بعد بھی agent چلتا رہتا ہے، اور اگلی بار آپ دوبارہ اسی جگہ پہنچ جاتے ہیں۔ یہی طریقہ فون سے Claude Code چلانے کے لیے بھی استعمال ہوتا ہے۔

موبائل network پر سادہ SSH استعمال کرنا مشکل ہوتا ہے، کیونکہ فون کا address تبدیل ہونے یا sleep میں جانے پر connection ختم ہو جاتا ہے۔ mosh اس مسئلے کو حل کرتا ہے۔ یہ UDP (user datagram protocol) کے ذریعے چلتا ہے اور byte stream کے بجائے terminal state کو sync کرتا ہے۔ اس لیے wifi سے cellular network پر منتقل ہوتے وقت بھی session برقرار رہتا ہے:

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

فون سے mosh you@vps.example.com چلائیں۔ mosh آپ کے موجودہ SSH login کے ذریعے mosh-server شروع کرتا ہے، پھر session کو 60000 سے 61000 کے range میں UDP پر منتقل کر دیتا ہے۔ اسی لیے یہ range کھلی ہونی چاہیے۔

اس کی security cost واضح ہے۔ SSH session ایک shell ہوتا ہے، اور shell وہ سب کچھ کر سکتا ہے جو متعلقہ account کر سکتا ہے۔ اس کے بعد agent کے approval prompts ہی چوری شدہ unlocked فون اور آپ کی files کے درمیان آخری رکاوٹ رہ جاتے ہیں۔ اس مقصد کے لیے dedicated non-root account استعمال کریں، صرف key کے ذریعے login کی اجازت دیں، اور اپنے ساتھ لے جانے والے device پر key رکھنے سے پہلے VPS پر SSH کو سخت محفوظ بنانا مکمل کریں۔

موبائل نیٹ ورک پر کیا متاثر ہوتا ہے

چار چیزیں متاثر ہوتی ہیں، اور ان میں سے کسی کو بھی configuration تبدیل کرکے درست نہیں کیا جا سکتا۔

Dashboard آپ کی عدم موجودگی میں logout کر دیتا ہے۔ Access tokens کا TTL (time to live) 15 minutes ہے اور موجودہ API contract میں refresh token نہیں ہے۔ Token expire ہونے پر page کو 401 response ملتا ہے اور وہ واپس /login پر چلا جاتا ہے۔ Dashboard کھولیں، phone کو 20 minutes کے لیے جیب میں رکھیں، اور واپس آنے پر login screen دیکھیں گے؛ آپ جو کچھ لکھ رہے تھے وہ ختم ہو چکا ہوگا۔ کچھ خراب نہیں ہوا۔ دوبارہ sign in کریں۔

Embedded terminal background tab کے بعد برقرار نہیں رہتا۔ Server PTY کے پیچھے TUI (text user interface) چلاتا ہے۔ Tab بند ہونے پر server اسے درست طریقے سے ختم کر دیتا ہے، اور دوبارہ کھولنے پر نیا TUI شروع ہوتا ہے۔ Mobile browsers memory خالی کرنے کے لیے background tabs کو بند کر دیتے ہیں۔ اس لیے کافی دیر کے لیے کسی دوسری app پر جانے سے terminal ختم ہو جاتا ہے۔ آپ کی chat history محفوظ رہتی ہے، کیونکہ sessions server پر stored ہوتے ہیں اور hermes sessions list انہیں اب بھی دکھاتا ہے۔ خود terminal سے دوبارہ attach نہیں کیا جا سکتا۔ اگر ایسا session چاہیے جو برقرار رہے، تو SSH کے ذریعے tmux استعمال کریں۔

Idle connections خاموشی سے ختم ہو جاتی ہیں۔ Mobile carriers NAT (network address translation) table entries خالی کرنے کے لیے idle TCP connections ختم کر دیتے ہیں، اور screen بند ہونے کے بعد phone تقریباً مکمل طور پر network کو service دینا روک دیتا ہے۔ کچھ دیر سے خاموش WebSocket عموماً unlock کرتے وقت پہلے ہی ختم ہو چکا ہوتا ہے، اور page صرف اسے چھونے کے بعد reconnect کرتا ہے۔ اسی لیے phone پر SSH کے مقابلے میں mosh بہتر محسوس ہوتا ہے: اس کے پاس کھونے کے لیے کبھی کوئی connection تھا ہی نہیں۔

کوئی notification push نہیں ہوتی۔ نہ dashboard اور نہ ہی SSH session آپ کے phone کو بیدار کر سکتا ہے۔ Device پر Hermes app موجود نہیں، اس لیے platform کی push service تک پہنچنے کا کوئی راستہ نہیں ہے۔ Agent کا طویل run مکمل ہو جاتا ہے، اور آپ کو اس کا علم اگلی بار phone دیکھنے پر ہوتا ہے۔

اطلاعات notifications کے ذریعے موصول ہوتی ہیں

آخری مسئلے کا حل gateway ہے، جو agent تک پہنچنے کا بالکل مختلف طریقہ فراہم کرتا ہے۔ hermes gateway agent کو Telegram، Discord، Slack، WhatsApp، Signal اور email سمیت messaging platforms سے جوڑتا ہے۔ اس کے بعد آپ agent سے ایسی app کے اندر بات کرتے ہیں جو پہلے ہی آپ کے phone پر push channel رکھتی ہے، background delivery سنبھالتی ہے، اور network منقطع ہونے کی صورت سے نمٹ سکتی ہے۔

hermes gateway setup
hermes gateway install
hermes gateway status

hermes gateway install gateway کو systemd service کے طور پر register کرتا ہے، اس لیے reboot کے بعد یہ دوبارہ چل پڑتا ہے۔ Hermes installer آپ کے لیے کوئی service units نہیں بناتا، اس لیے restart کے بعد hermes dashboard خود بخود دوبارہ نہیں چلے گا۔ جن اجزا پر آپ انحصار کرتے ہیں، ان میں سے ہر ایک کے لیے unit لکھیں۔ VPS پر systemd services اور timers لکھنا میں خود file کا طریقہ بیان کیا گیا ہے۔

Scheduled job بھی اسی طرح result بھیج سکتا ہے، اور اس کے لیے conversation کی ضرورت نہیں ہوتی:

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

یہاں authorisation کا اصول deny by default ہے۔ اگر allowlist مقرر نہ ہو اور GATEWAY_ALLOW_ALL_USERS unset ہو، تو ہر user کو رد کر دیا جاتا ہے، جو درست ابتدائی configuration ہے۔ جن accounts کو اجازت دینی ہو، انہیں ~/.hermes/.env میں درج کریں:

TELEGRAM_ALLOWED_USERS=123456789
GATEWAY_ALLOWED_USERS=123456789

یا numeric IDs paste کرنے کے بجائے code-based pairing فعال کریں۔ اس کے لیے unauthorized_dm_behavior: pair کو ~/.hermes/config.yaml میں set کریں۔ جب کوئی نامعلوم account agent کو message بھیجتا ہے تو اسے آٹھ حروف پر مشتمل code موصول ہوتا ہے، اور آپ کی منظوری تک اس کے علاوہ کچھ نہیں ہوتا:

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

Codes ایک گھنٹے بعد expire ہو جاتے ہیں، user ہر دس منٹ میں ایک code طلب کر سکتا ہے، اور پانچ ناکام کوششوں کے بعد اس account کو lock out کر دیا جاتا ہے۔

چوری شدہ فون کے نقصان کو محدود کرنا

جو فون آپ کے agent تک پہنچ سکتا ہے، وہ آپ کے server پر commands چلا سکتا ہے، اور فون گم ہو جاتے ہیں۔ ابھی طے کریں کہ فون رکھنے والا شخص کیا کر سکتا ہے۔

Approvals فعال رکھیں۔ approvals.mode کی default قدر smart ہے، جو risk کا جائزہ لینے کے لیے ایک auxiliary model سے فیصلہ کرواتی ہے اور صرف low risk commands کو خودکار طور پر approve کرتی ہے۔ اسے off پر set کرنا ہر چیز کو --yolo کے ساتھ چلانے کے برابر ہے، اور HERMES_YOLO_MODE=1 کے ذریعے یہی کام environment سے کیا جاتا ہے۔ ایسے state میں اس فون کو ساتھ نہ رکھیں جو agent سے رابطہ کرتا ہو۔ approvals.cron_mode: deny set کریں تاکہ scheduled jobs آپ کے سوتے وقت خود کو approve نہ کر سکیں۔

approvals:
  mode: smart
  cron_mode: deny

agent کے لیے محدود environment فراہم کریں۔ terminal.backend: docker commands کو ایسے container کے اندر چلاتا ہے جو مختصر فہرست کے علاوہ تمام Linux capabilities ختم کر دیتا ہے، no-new-privileges set کرتا ہے، اور processes کی تعداد محدود کرتا ہے۔ اس طرح prompt کے بجائے container boundary بن جاتا ہے۔ terminal.cwd working directory کو مقرر کرتا ہے۔ HERMES_WRITE_SAFE_ROOT، write_file اور patch کو صرف ان directories تک محدود کرتا ہے جنہیں آپ نامزد کرتے ہیں، اور ان کے باہر write کو block کر دیتا ہے؛ approval بھی اسے override نہیں کر سکتی۔

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

Hermes پہلے ہی ~/.ssh، ~/.aws، ~/.kube اور /etc/sudoers میں writes کو block کرتا ہے، disk پر کہیں بھی .env files لکھنے سے انکار کرتا ہے، اور approval settings سے قطع نظر destructive commands کی ایک سخت فہرست کو reject کرتا ہے۔ اسے بنیادی حفاظتی سطح سمجھیں، اپنا مکمل منصوبہ نہیں۔ agent کو ordinary user کے طور پر چلائیں، کبھی root کے طور پر نہیں۔ یہی اصول کسی بھی coding agent پر لاگو ہوتا ہے جسے unattended حالت میں چلتا چھوڑ دیا جائے، اور VPS پر Claude Code کو محفوظ طریقے سے چلانا اس طریقے کی مزید تفصیل فراہم کرتا ہے۔

اس کے بعد revocation کے steps پہلے سے لکھ لیں، اس سے پہلے کہ ان کی ضرورت پڑے۔ Tailscale admin console میں device کو remove کرنے سے mesh access فوراً ختم ہو جاتا ہے۔ HERMES_DASHBOARD_BASIC_AUTH_SECRET تبدیل کرنے اور restart کرنے سے ہر device پر dashboard کی تمام sessions invalid ہو جاتی ہیں، کیونکہ یہی value session cookie پر دستخط کرتی ہے۔ فون کی public key کو ~/.ssh/authorized_keys سے delete کرنے سے SSH ختم ہو جاتا ہے۔ hermes pairing revoke telegram <user-id> messaging account remove کرتا ہے۔ اگر device میں ایسی کوئی چیز موجود تھی جو آپ کے provider keys پڑھ سکتی تھی، تو hermes auth logout <provider> کے ذریعے انہیں revoke کریں اور upstream پر نئی keys جاری کریں۔

نتیجے کی تصدیق کریں، محض یہ فرض نہ کریں کہ کام ہو گیا ہے۔ یہ commands اپنے box پر چلائیں؛ ان کا output آپ کے setup پر منحصر ہے:

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

Logs ~/.hermes/logs/ کے تحت موجود ہیں۔ کسی incident کے بعد انہیں پڑھیں، اور جب کوئی incident نہ ہوا ہو تب بھی کبھی کبھار انہیں پڑھتے رہیں۔

FAQ

کیا iOS یا Android کے لیے Hermes کی کوئی سرکاری mobile app موجود ہے؟

نہیں۔ Hermes repository ایک command line interface، web dashboard، اور macOS، Windows اور Linux کے لیے Electron desktop client فراہم کرتی ہے۔ iOS یا Android کے لیے first-party build موجود نہیں ہے۔ فون سے آپ browser میں web dashboard، SSH client، یا hermes gateway کے ذریعے منسلک messaging platform استعمال کرتے ہیں۔ Third-party mobile clients موجود ہیں، لیکن یہ third-party code ہوتا ہے جس کے پاس آپ کے agent کے credentials ہوتے ہیں، اس لیے کسی کو install کرنے سے پہلے اس کا source پڑھیں۔

میرے فون پر Hermes dashboard مجھے logout کیوں کر دیتا ہے؟

Access tokens کا TTL 15 minutes ہے اور موجودہ API contract میں refresh token نہیں ہے۔ Token expire ہونے پر page کو 401 ملتا ہے اور وہ /login پر چلا جاتا ہے۔ فون پر browser کو background میں بھیجنے سے یہ مسئلہ نمایاں ہو جاتا ہے، کیونکہ کسی دوسری app میں 20 minutes گزارنا اسے trigger کرنے کے لیے کافی ہے۔ HERMES_DASHBOARD_BASIC_AUTH_SECRET کو ایک مستقل random value پر set کریں تاکہ session signing key restarts کے بعد بھی یکساں رہے۔ اس سے logout ہونے کی دوسری وجہ ختم ہو جاتی ہے۔

کیا میں Hermes dashboard کو public internet پر محفوظ طریقے سے رکھ سکتا ہوں؟

صرف اسی صورت میں جب آپ authentication کی خود تصدیق کر چکے ہوں۔ Auth gate bind address کی بنیاد پر فعال ہوتا ہے، اس لیے 127.0.0.1 سے bind dashboard، reverse proxy کے پیچھے ہونے کی صورت میں، internet سے login طلب نہیں کرتا۔ curl -s https://your-host/api/status | jq '.auth_required' چلائیں اور جو output واپس آئے اسے پڑھیں۔ Username اور password کے بجائے OAuth یا OIDC استعمال کریں، کیونکہ project کی docs کے مطابق password provider trusted networks اور VPNs کے لیے ہے۔ Private mesh اس سوال کو مکمل طور پر ختم کر دیتا ہے، اسی لیے یہ بہتر default ہے۔

کیا مجھے Tailscale account درکار ہے، یا میں control plane خود host کر سکتا ہوں؟

آپ اسے خود host کر سکتے ہیں۔ Headscale، Tailscale coordination server کی ایک open implementation ہے، اور official Tailscale clients tailscale up --login-server https://headscale.example.com کے ذریعے اس سے connect ہوتے ہیں۔ اس کے بعد mesh میں شامل ہونے کی اجازت رکھنے والے devices کی فہرست آپ کے اختیار میں ہوتی ہے۔ اس کی قیمت یہ ہے کہ اب آپ کو اس server کو چلانا اور اس کا backup لینا ہوگا۔ جب یہ server down ہو تو آپ کسی device کو enrol یا re-authenticate نہیں کر سکتے۔

Agent کا job مکمل ہونے پر مجھے اپنے فون پر notification کیسے ملے گی؟

Messaging gateway استعمال کریں۔ Dashboard اور SSH فون کو wake کرنے کا طریقہ نہیں رکھتے، کیونکہ device پر Hermes app موجود نہیں ہے جو push وصول کر سکے۔ hermes gateway setup کے ذریعے agent کو Telegram، Signal، Discord یا کسی اور supported platform سے connect کریں، پھر اس platform کی اپنی app کو delivery کرنے دیں۔ Cron job بھی hermes send -t telegram -s "Job done" -f /path/to/report.txt کے ذریعے ایک single message push کر سکتی ہے، جو model کو call کیے بغیر deliver ہو جاتا ہے۔