Handoff

अपने ही किसी मशीन पर प्रोजेक्ट भेजें ताकि लैपटॉप बंद होने पर भी एजेंट काम करता रहे, फ़ोन से रन को फ़ॉलो करें, और Take back से काम वापस अपने पास ले आएँ।

Handoff आपके प्रोजेक्ट को आपकी किसी मशीन पर भेज देता है और लैपटॉप बंद होने पर भी वहाँ एजेंट को काम करते रखता है। वापस आने पर Take back प्रोजेक्ट को ठीक उसी हालत में घर ले आता है जैसा एजेंट ने छोड़ा था।

यह Remote Control से अलग है, जहाँ आपका फ़ोन इसी डेस्कटॉप की एक खिड़की होता है। Handoff दूसरी मशीन पर चलता है, और आपके डेस्कटॉप का चालू रहना ज़रूरी नहीं है।

पहले Handoff से पहले

Settings → Machines खोलें, कोई मशीन चुनें और Handoff चुनें। शीट मशीन की जाँच करती है और जो कुछ अभी कम है उसकी सूची देती है, हर आइटम के पास उसका समाधान भी दिखता है:

ज़रूरतक्यों
gitआपकी हिस्ट्री और uncommitted काम साथ ले जाता है।
rsyncप्रोजेक्ट को वहाँ और वापस कॉपी करता है, सिर्फ़ बदला हुआ हिस्सा भेजता है।
node 18 or newerएजेंट के कमांड-लाइन टूल चलाता है।
systemd user servicesआपका SSH सेशन ख़त्म होने के बाद भी रन चलता रहता है।
Stay running after logoutइसके बिना आख़िरी सेशन ख़त्म होते ही सब कुछ रुक जाता है और कोई उसे दोबारा शुरू नहीं करता।
tmux (वैकल्पिक)सामान्य शेल टैब को ज़िंदा रखता है। एजेंट इसका उपयोग नहीं करते।

Install all missing सब कुछ एक साथ इंस्टॉल कर देता है, या आप एक-एक करके इंस्टॉल कर सकते हैं। हर कमांड चलने से पहले पूरी दिखाई जाती है, और अगर आप उसे अपने टर्मिनल में पेस्ट करना चाहें तो Copy बटन मौजूद है।

मशीन पर Handoff करने की शीट, जिसमें खाली मेमोरी, डिस्क, कोर और लोड दिख रहे हैं, और Needs attention के नीचे node 18 और Stay running after logout के साथ Install और Turn on बटन दिए गए हैं

शीट मशीन पर उपलब्ध जगह भी मापती है — खाली मेमोरी, खाली डिस्क, कोर और लोड — और जगह कम होने पर साफ़ बता देती है, ताकि बाद में आपको यह न सोचना पड़े कि बिल्ड इतना धीमा क्यों चला।

एजेंट में साइन इन करना जानबूझकर मैन्युअल है

आप Claude या Codex में मशीन पर ही, असली टर्मिनल में लॉग इन करते हैं। 1DevTool इस कंप्यूटर से कोई क्रेडेंशियल कॉपी नहीं करता, और शीट भी यही कहती है: मशीन पर साइन इन किया गया, यहाँ से कभी कॉपी नहीं किया गया। आपका एजेंट कॉन्फ़िग वहाँ भेजा जाता है, जिसमें सिर्फ़ लोकल पाथ और MCP कमांड उस मशीन के हिसाब से बदल दिए जाते हैं।

प्रोजेक्ट को Handoff करना

प्रोजेक्ट के साइडबार मेन्यू से Hand off to a machine… चुनें। यह Settings → Machines में मशीन की पंक्ति पर और Handoff टास्क व्यू में भी उपलब्ध है।

शीट चार चीज़ें पूछती है:

  1. मशीन और एजेंट जो इसे चलाएगा।
  2. एक बातचीत — मौजूदा बातचीत जारी रखें, या नई शुरू करें। एजेंट बिना स्क्रीन के चलता है; आप उसका लॉग पढ़ते हैं।
  3. आगे उसे क्या करना है, आपके अपने शब्दों में — "माइग्रेशन पूरा करो, टेस्ट चलाओ, और जो फ़ेल हों उन्हें ठीक करो।"
  4. पुष्टि कि यहाँ इस प्रोजेक्ट पर कुछ नहीं चल रहा, ताकि कॉपी एडिट के बीच में न ली जाए। प्रोजेक्ट के दूर रहने तक लोकल एडिटिंग रुकी रहती है।

अगर मंज़ूरी देने के लिए कोई मौजूद नहीं है तो Run without asking टिक करें; इसके बिना एजेंट पहले ही प्रॉम्प्ट पर रुक जाता है। यह सिर्फ़ उस मशीन पर असर डालता है, इस कंप्यूटर पर कभी नहीं।

Handoff के रास्ते में जो भी बाधा बची है, वह एक चिप के रूप में दिखती है जिस पर क्लिक करके आप सीधे उस फ़ील्ड पर पहुँच सकते हैं।

क्या कॉपी होता है

पूरा प्रोजेक्ट, उसकी git हिस्ट्री और बातचीत, rsync के ज़रिए:

  • Tracked और untracked फ़ाइलें
  • Staged और unstaged बदलाव
  • डिलीट की गई फ़ाइलें, executable बिट और symlink
  • .git ख़ुद

इसलिए "पहले GitHub पर push करें" जैसी कोई शर्त नहीं है — मशीन ठीक उसी से शुरू होती है जो आपकी डिस्क पर है, अधूरे एडिट समेत।

Left out छोड़े जा रहे पैटर्न को चिप के रूप में दिखाता है जिन्हें आप अनटिक कर सकते हैं, और Also leave out में अतिरिक्त पैटर्न जोड़े जा सकते हैं। build, dist या target नाम के फ़ोल्डर जानबूझकर रखे जाते हैं: उनमें अक्सर असली सोर्स होता है।

आपकी .env भी साथ जाती है — stdin के ज़रिए लिखी जाती है, chmod 600 के साथ, और atomically बदली जाती है। फ़ाइल और वेरिएबल के नाम आपको दिखाए जाते हैं; वैल्यू कभी लॉग नहीं होतीं।

पहुँचने के बाद एजेंट systemd --user यूनिट के रूप में चलता है। इसी वजह से लैपटॉप बंद किया जा सकता है।

Follow-up मशीन पर कतार में लगते हैं

अगला निर्देश कभी भी टाइप करें, रन चलने के दौरान भी। मशीन उसे रोककर रखती है और मौजूदा रन ख़त्म होते ही शुरू कर देती है — चाहे आपका लैपटॉप बंद हो या ऐप क्विट हो। कतार मशीन पर रहती है, आपके ऐप में नहीं।

टास्क व्यू मशीन का लॉग वापस स्ट्रीम करता है: असिस्टेंट का टेक्स्ट, टूल कॉल, नतीजे और exit स्टेटस, हर रन के क्रम नंबर के साथ।

फ़ोन पर खोलें

Open on phone Handoff सफल होने वाली स्क्रीन, टास्क व्यू और मशीन की पंक्ति पर मौजूद है। अपने फ़ोन के कैमरे से QR कोड स्कैन करें और पेज Safari या Chrome में खुल जाएगा — कोई ऐप इंस्टॉल नहीं करना पड़ता, और पेज मशीन से ही, Cloudflare quick tunnel के ज़रिए सर्व होता है, इसलिए लैपटॉप बंद होने पर भी काम करता रहता है।

फ़ोन से आप यह कर सकते हैं:

  • लाइव लॉग फ़ॉलो करें — वही एंट्री जो डेस्कटॉप टास्क व्यू दिखाता है।
  • अगला निर्देश भेजें — रन चल रहा हो तो कतार में लगता है, नहीं तो तुरंत शुरू हो जाता है।
  • मौजूदा रन को Stop करें।
  • शेल खोलें। 6 अंकों का Admin PIN फ़ोन के ब्राउज़र में मशीन पर tmux शेल खोलता है। टैब बंद करने पर भी वह चलता रहता है और स्क्रीन के हिसाब से अपना आकार बदल लेता है।
  • रन ख़त्म होने पर पुश नोटिफ़िकेशन पाएँ — हर ख़त्म हुए रन पर एक, और जब कतार आगे बढ़ती है तब भी। Android Chrome पर आज यह काम करता है; iPhone पर पहले पेज को Home Screen में जोड़ें।

स्कैन स्क्रीन हर खुला फ़ोन सेशन दिखाती है और Sign out all का विकल्प देती है, जबकि Turn off लिंक को पूरी तरह बंद कर देता है। New code मौजूदा फ़ोन को साइन आउट किए बिना नया QR कोड और PIN जारी करता है। किसी मशीन पर आख़िरी Handoff वापस लेने पर फ़ोन एक्सेस अपने आप बंद हो जाता है।

मशीन पर cloudflared को चलाने से पहले उसके GitHub release डाइजेस्ट से जाँचा जाता है।

Take back

Take back काम को ऐसे क्रम में लौटाता है जिसमें कुछ भी खोने की गुंजाइश नहीं रहती:

  1. मशीन की कतार रोक दी जाती है, ताकि आपके नीचे कोई नया रन शुरू न हो सके।
  2. मौजूदा रन रोक दिया जाता है।
  3. एजेंट के बदलावों के साथ प्रोजेक्ट को rsync करके घर लाया जाता है।
  4. मशीन पर बनाई गई यूनिट साफ़ कर दी जाती हैं।

जाते समय जो पैटर्न बाहर रखे गए थे, वापसी में भी वही इस्तेमाल होते हैं, इसलिए take-back कभी ऐसी चीज़ नहीं मिटाता जो भेजी ही नहीं गई थी।